X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-java-api-generator%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fjava%2Fapi%2Fgenerator%2FAbstractBuilderTemplate.xtend;h=c558ada0f59c4c26259c2b8aa8b011da715b36da;hb=2789476b592b0df9eab7b83f3a9d2a2b9cd60099;hp=010450485b20ce354bd291c6aabd318d09b5d82f;hpb=7d1929fa208817401ef25b03fce2699bfa221ce4;p=mdsal.git diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractBuilderTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractBuilderTemplate.xtend index 010450485b..c558ada0f5 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractBuilderTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractBuilderTemplate.xtend @@ -7,13 +7,8 @@ */ package org.opendaylight.mdsal.binding.java.api.generator -import static org.opendaylight.mdsal.binding.model.util.Types.STRING; -import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.AUGMENTATION_FIELD - -import com.google.common.base.MoreObjects import java.util.ArrayList import java.util.Collection -import java.util.Collections import java.util.Comparator import java.util.List import java.util.Set @@ -22,7 +17,7 @@ import org.opendaylight.mdsal.binding.model.api.GeneratedProperty import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject import org.opendaylight.mdsal.binding.model.api.GeneratedType import org.opendaylight.mdsal.binding.model.api.Type -import org.opendaylight.mdsal.binding.model.util.BindingTypes +import org.opendaylight.mdsal.binding.model.ri.BindingTypes import org.opendaylight.mdsal.binding.spec.naming.BindingMapping abstract class AbstractBuilderTemplate extends BaseTemplate { @@ -36,7 +31,7 @@ abstract class AbstractBuilderTemplate extends BaseTemplate { /** * Set of class attributes (fields) which are derived from the getter methods names. */ - protected val Set properties + protected val Set properties /** * GeneratedType for key type, null if this type does not have a key. @@ -46,7 +41,7 @@ abstract class AbstractBuilderTemplate extends BaseTemplate { protected val GeneratedType targetType; new(AbstractJavaGeneratedType javaType, GeneratedType type, GeneratedType targetType, - Set properties, Type augmentType, Type keyType) { + Set properties, Type augmentType, Type keyType) { super(javaType, type) this.targetType = targetType this.properties = properties @@ -54,13 +49,14 @@ abstract class AbstractBuilderTemplate extends BaseTemplate { this.keyType = keyType } - new(GeneratedType type, GeneratedType targetType, Set properties, Type augmentType, - Type keyType) { + new(GeneratedType type, GeneratedType targetType, Type keyType) { super(type) this.targetType = targetType - this.properties = properties - this.augmentType = augmentType this.keyType = keyType + + val analysis = analyzeTypeHierarchy(targetType) + augmentType = analysis.key + properties = analysis.value } /** @@ -80,29 +76,6 @@ abstract class AbstractBuilderTemplate extends BaseTemplate { «ENDIF» ''' - def protected final generateAugmentField() { - val augmentTypeRef = augmentType.importedName - return ''' - «JU_MAP.importedName»<«CLASS.importedName», «augmentTypeRef»> «AUGMENTATION_FIELD» = «Collections.importedName».emptyMap(); - ''' - } - - override generateToString(Collection properties) ''' - «IF properties !== null» - @«OVERRIDE.importedName» - public «STRING.importedName» toString() { - final «MoreObjects.importedName».ToStringHelper helper = «MoreObjects.importedName».toStringHelper("«targetType.name»"); - «FOR property : properties» - «CODEHELPERS.importedName».appendValue(helper, "«property.fieldName»", «property.fieldName»); - «ENDFOR» - «IF augmentType !== null» - «CODEHELPERS.importedName».appendValue(helper, "«AUGMENTATION_FIELD»", augmentations().values()); - «ENDIF» - return helper.toString(); - } - «ENDIF» - ''' - /** * Template method which generate getter methods for IMPL class. * @@ -152,14 +125,10 @@ abstract class AbstractBuilderTemplate extends BaseTemplate { return generateDeprecatedAnnotation(found) } - def protected final CharSequence generateCopyNonKeys(Collection props) ''' - «FOR field : props» - this.«field.fieldName» = base.«field.getterMethodName»(); - «ENDFOR» - ''' - def protected abstract CharSequence generateCopyKeys(List keyProps) + def protected abstract CharSequence generateCopyNonKeys(Collection props) + def protected abstract CharSequence generateCopyAugmentation(Type implType) def protected abstract CharSequence generateDeprecatedAnnotation(AnnotationType ann) @@ -173,7 +142,7 @@ abstract class AbstractBuilderTemplate extends BaseTemplate { return false; } - private def void removeProperty(Collection props, String name) { + private def void removeProperty(Collection props, String name) { val iter = props.iterator while (iter.hasNext) { if (name.equals(iter.next.name)) { @@ -193,4 +162,12 @@ abstract class AbstractBuilderTemplate extends BaseTemplate { } return null } + + package static def hasNonDefaultMethods(GeneratedType type) { + !type.methodDefinitions.isEmpty && type.methodDefinitions.exists([def | !def.isDefault]) + } + + package static def nonDefaultMethods(GeneratedType type) { + type.methodDefinitions.filter([def | !def.isDefault]) + } }