Centralize non-key property copies
[mdsal.git] / binding / mdsal-binding-java-api-generator / src / main / java / org / opendaylight / mdsal / binding / java / api / generator / AbstractBuilderTemplate.xtend
index 24acb8d519cfa95de52f769f464c109d6efed361..010450485b20ce354bd291c6aabd318d09b5d82f 100644 (file)
@@ -129,18 +129,18 @@ abstract class AbstractBuilderTemplate extends BaseTemplate {
             «IF augmentType !== null»
                 «generateCopyAugmentation(implType)»
             «ENDIF»
-            «val allProps = new ArrayList(properties)»
             «IF keyType !== null && implementsIfc(targetType, BindingTypes.identifiable(targetType))»
                 «val keyProps = new ArrayList((keyType as GeneratedTransferObject).properties)»
                 «keyProps.sort(KEY_PROPS_COMPARATOR)»
+                «val allProps = new ArrayList(properties)»
                 «FOR field : keyProps»
                     «removeProperty(allProps, field.name)»
                 «ENDFOR»
                 «generateCopyKeys(keyProps)»
+                «generateCopyNonKeys(allProps)»
+            «ELSE»
+                «generateCopyNonKeys(properties)»
             «ENDIF»
-            «FOR field : allProps»
-                this.«field.fieldName» = base.«field.getterMethodName»();
-            «ENDFOR»
         }
     '''
 
@@ -152,6 +152,12 @@ abstract class AbstractBuilderTemplate extends BaseTemplate {
         return generateDeprecatedAnnotation(found)
     }
 
+    def protected final CharSequence generateCopyNonKeys(Collection<GeneratedProperty> props) '''
+        «FOR field : props»
+            this.«field.fieldName» = base.«field.getterMethodName»();
+        «ENDFOR»
+    '''
+
     def protected abstract CharSequence generateCopyKeys(List<GeneratedProperty> keyProps)
 
     def protected abstract CharSequence generateCopyAugmentation(Type implType)