diff --git a/src/main/java/com/eactive/eai/transformer/transform/TransformValidator.java b/src/main/java/com/eactive/eai/transformer/transform/TransformValidator.java index f482db3..f79892a 100644 --- a/src/main/java/com/eactive/eai/transformer/transform/TransformValidator.java +++ b/src/main/java/com/eactive/eai/transformer/transform/TransformValidator.java @@ -44,7 +44,7 @@ public class TransformValidator { try { if (!transform.getTransformItemList().iterator().hasNext()) { // throw new TransformerException("source layout does not exist"); - throw new TransformerException("전문레이아웃 매핑에 원천 레이아웃이 없습니다."); + throw new TransformerException("전문레이아웃 매핑에 변환 항목(TSEAITR03)이 없습니다."); } if (transform.getTargetLayout() == null) { @@ -202,7 +202,7 @@ public class TransformValidator { try { if (!transform.getTransformItemList().iterator().hasNext()) { // throw new TransformerException("source layout does not exist"); - throw new TransformerException("전문레이아웃 매핑에 원천 레이아웃이 없습니다."); + throw new TransformerException("전문레이아웃 매핑에 변환 항목(TSEAITR03)이 없습니다."); } if (transform.getTargetLayout() == null) { diff --git a/src/test/java/com/eactive/eai/transformer/transform/TransformManagerTest.java b/src/test/java/com/eactive/eai/transformer/transform/TransformManagerTest.java index c25396d..67b0cad 100644 --- a/src/test/java/com/eactive/eai/transformer/transform/TransformManagerTest.java +++ b/src/test/java/com/eactive/eai/transformer/transform/TransformManagerTest.java @@ -26,7 +26,8 @@ import com.eactive.eai.transformer.message.MessageFactory; @ContextConfiguration(classes = { TransformJPATestConfiguration.class }) @Sql({ "/com/eactive/eai/transformer/init_tseaitr06.sql", "/com/eactive/eai/transformer/init_tseaitr07.sql", "/com/eactive/eai/transformer/init_tseaitr08.sql", "/com/eactive/eai/transformer/init_tseaitr01.sql", - "/com/eactive/eai/transformer/init_tseaitr02.sql", "/com/eactive/eai/transformer/init_tseaitr03.sql" }) + "/com/eactive/eai/transformer/init_tseaitr02.sql", "/com/eactive/eai/transformer/init_tseaitr03.sql", + "/com/eactive/eai/transformer/init_tseaitr01_noitem.sql" }) @TestInstance(TestInstance.Lifecycle.PER_CLASS) class TransformManagerTest { @@ -240,4 +241,18 @@ class TransformManagerTest { } + /** + * TSEAITR03(변환 항목 매핑)이 한 건도 없더라도 TSEAITR01/02 에 등록된 변환은 로딩되어야 한다. + * loadAll() 이 inner join fetch 이면 이 변환은 transformMap 에서 누락되고, + * 호출 시 "전문레이아웃매핑(변환)정보를 찾을 수 없음" 오류가 발생한다. + */ + @Test + void testTransformWithoutTransformItemIsLoaded() { + Transform transform = transformManager.getTransform("TRANSFORM_TST_NOITEM_REQ"); + + Assert.assertNotNull("TSEAITR03 매핑이 없는 변환도 로딩되어야 함", transform); + Assert.assertEquals(0, transform.getTransformItemList().size()); + Assert.assertEquals("TST_TOSSTEST1_TGT", transform.getTargetLayout().getName()); + } + } diff --git a/src/test/resources/com/eactive/eai/transformer/init_tseaitr01_noitem.sql b/src/test/resources/com/eactive/eai/transformer/init_tseaitr01_noitem.sql new file mode 100644 index 0000000..a76ecad --- /dev/null +++ b/src/test/resources/com/eactive/eai/transformer/init_tseaitr01_noitem.sql @@ -0,0 +1,9 @@ +-- 변환 마스터(TSEAITR01) / 레이아웃 지정(TSEAITR02)은 있으나 +-- 변환 항목 매핑(TSEAITR03)은 한 건도 없는 변환. +-- loadAll() 이 inner join fetch 를 쓰면 이 변환은 로딩에서 누락된다. +INSERT INTO tseaitr01 (cnvsnname,cnvsndesc,lastamndhms,eaisevrdstcd,modfimgtstusdstcd,useyn,verinfo,author) VALUES + ('TRANSFORM_TST_NOITEM_REQ', 'TSEAITR03 매핑 항목 없음', '20241226104652 ','E',' ','1','0',NULL); + +INSERT INTO tseaitr02 (cnvsnname,loutname,sourcrsultdstcd) VALUES + ('TRANSFORM_TST_NOITEM_REQ', 'TST_TOSSTEST1_TGT', 'TGT_LAYOUT'), + ('TRANSFORM_TST_NOITEM_REQ', 'TST_TOSSTEST1_SRC', 'SRC_LAYOUT');