@@ -54,55 +54,62 @@ public static void dumpPropertyMapping(Class<?> sourceClass, Class<?> targetClas
5454 }
5555
5656 public static void dumpPropertyMapping (Class <?> sourceClass , Class <?> targetClass , Class <?> optionClass , List <BeanCopyPropertyItem > itemList ) {
57+
58+ List <Long > stackCacheKeyList = localDumpStack .get ();
59+ if ( stackCacheKeyList == null ) {
60+ stackCacheKeyList = new ArrayList <>();
61+ localDumpStack .set (stackCacheKeyList );
62+ }
63+
64+ long cacheKey = (((long )sourceClass .hashCode () ) << 16 )+ (long ) targetClass .hashCode ();
65+ if ( optionClass != null ) {
66+ cacheKey = (cacheKey <<16 ) + (long )optionClass .hashCode ();
67+ } else {
68+ cacheKey = (cacheKey <<16 ) + (long )targetClass .hashCode ();
69+ }
70+
71+ if ( stackCacheKeyList .contains (cacheKey ) ) {
72+ return ;
73+ }
74+ if ( stackCacheKeyList .isEmpty () ) {
75+ logger .info ("=============================================================================================" );
76+ logger .info ("Dump Bean Copy Property Mapping:" );
77+ }
78+
5779 Integer dumpLevel = localDumpLevel .get ();
5880 if ( dumpLevel == null ) {
5981 dumpLevel = -1 ;
6082 }
6183 if (dumpLevel == -1 ) {
6284 localDumpStack .set (new ArrayList <Long >());
6385 }
86+
6487 localDumpLevel .set (++dumpLevel );
6588
6689 dumpPropertyMappingInternal (sourceClass , targetClass , optionClass , itemList );
6790
6891 localDumpLevel .set (--dumpLevel );
92+
6993 if (dumpLevel == -1 && localDumpStack .get ().size () > 0 ) {
7094 logger .info ("=============================================================================================" );
7195 }
7296 }
7397
74- public static void dumpPropertyMappingInternal (Class <?> sourceClass , Class <?> targetClass , Class <?> optionClass , List <BeanCopyPropertyItem > itemList ) {
98+ private static void dumpPropertyMappingInternal (Class <?> sourceClass , Class <?> targetClass , Class <?> optionClass , List <BeanCopyPropertyItem > itemList ) {
7599 if ( optionClass == null )
76100 optionClass = targetClass ;
77101
78- Integer dumpLevel = localDumpLevel .get ();
79102 List <Long > stackCacheKeyList = localDumpStack .get ();
80- if ( stackCacheKeyList == null ) {
81- stackCacheKeyList = new ArrayList <>();
82- localDumpStack .set (stackCacheKeyList );
83- }
84-
85103 long cacheKey = (((long )sourceClass .hashCode () ) << 16 )+ (long ) targetClass .hashCode ();
86104 if ( optionClass != null ) {
87105 cacheKey = (cacheKey <<16 ) + (long )optionClass .hashCode ();
88106 } else {
89107 cacheKey = (cacheKey <<16 ) + (long )targetClass .hashCode ();
90108 }
91-
92109 if ( stackCacheKeyList .contains (cacheKey ) ) {
93110 return ;
94111 }
95- if ( stackCacheKeyList .isEmpty () ) {
96- logger .info ("=============================================================================================" );
97- logger .info ("Dump Bean Copy Property Mapping:" );
98- }
99112 stackCacheKeyList .add (cacheKey );
100- dumpPropertyMappingInternal (sourceClass , targetClass , optionClass , dumpLevel , itemList );
101- }
102-
103- private static void dumpPropertyMappingInternal (Class <?> sourceClass , Class <?> targetClass , Class <?> optionClass , int level , List <BeanCopyPropertyItem > itemList ) {
104- if ( optionClass == null )
105- optionClass = targetClass ;
106113
107114 logger .info ("---------------------------------------------------------------------------------------------" );
108115 logger .info ("From: [" + sourceClass .getSimpleName () + "] To: [" + targetClass .getSimpleName () + "] Option: [" + optionClass .getSimpleName () + "]" );
@@ -115,7 +122,7 @@ private static void dumpPropertyMappingInternal(Class<?> sourceClass, Class<?> t
115122 BeanCopySource copyAnnotation = targetClass .getAnnotation (BeanCopySource .class );
116123 features = copyAnnotation .features ();
117124 }
118- if ( features == null ) {
125+ if ( features == null || features . length == 0 ) {
119126 logger .info ("CopyFeature: (NONE)" );
120127 } else {
121128 logger .info ("CopyFeature:" );
@@ -251,7 +258,7 @@ private static void dumpPropertyMappingInternal(Class<?> sourceClass, Class<?> t
251258 continue ;
252259 if ( sourceProertyType .isEnum () || targetPropertyType .isEnum () )
253260 continue ;
254- dumpPropertyMappingInternal (sourceProertyType , targetPropertyType , item .optionClass , level + 1 , null );
261+ dumpPropertyMappingInternal (sourceProertyType , targetPropertyType , item .optionClass , null );
255262 }
256263 }
257264 }
0 commit comments