X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding2%2Fmdsal-binding2-java-api-generator%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fjavav2%2Fjava%2Fapi%2Fgenerator%2Frenderers%2FBuilderRenderer.java;h=9decef13106f62e22979bf98335a78bbfb19425c;hb=d68c7fe825e06409bdd721dd15437ae72be097c5;hp=8fae7f7fa7dfef24d458a229384710a10253d197;hpb=138cdec6a16b8663d0f9670c8aef7457925109c3;p=mdsal.git diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/BuilderRenderer.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/BuilderRenderer.java index 8fae7f7fa7..9decef1310 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/BuilderRenderer.java +++ b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/BuilderRenderer.java @@ -19,6 +19,7 @@ import com.google.common.collect.Collections2; import com.google.common.collect.ImmutableSortedSet; import java.lang.reflect.Method; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Comparator; @@ -29,6 +30,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; +import org.opendaylight.mdsal.binding.javav2.generator.util.BindingTypes; import org.opendaylight.mdsal.binding.javav2.generator.util.ReferencedTypeImpl; import org.opendaylight.mdsal.binding.javav2.generator.util.Types; import org.opendaylight.mdsal.binding.javav2.generator.util.generated.type.builder.GeneratedTOBuilderImpl; @@ -38,6 +40,7 @@ import org.opendaylight.mdsal.binding.javav2.java.api.generator.util.Alphabetica import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedProperty; import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedTransferObject; import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedType; +import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedTypeForBuilder; import org.opendaylight.mdsal.binding.javav2.model.api.MethodSignature; import org.opendaylight.mdsal.binding.javav2.model.api.ParameterizedType; import org.opendaylight.mdsal.binding.javav2.model.api.Type; @@ -72,10 +75,28 @@ public class BuilderRenderer extends BaseRenderer { */ private GeneratedProperty augmentField; + boolean instantiable = false; + public BuilderRenderer(final GeneratedType type) { super(type); this.properties = propertiesFromMethods(createMethods()); putToImportMap(Builder.class.getSimpleName(), Builder.class.getPackage().getName()); + putToImportMap(type.getName(), type.getPackageName()); + } + + @Override + protected String packageDefinition() { + final StringBuilder sb = new StringBuilder(); + sb.append("package ") + .append(((GeneratedTypeForBuilder)getType()).getPackageNameForBuilder()) + .append(";\n\n"); + return sb.toString(); + } + + @Override + protected boolean hasSamePackage(final String importedTypePackageName) { + return ((GeneratedTypeForBuilder)getType()).getPackageNameForBuilder() + .equals(importedTypePackageName); } /** @@ -154,7 +175,9 @@ public class BuilderRenderer extends BaseRenderer { for (Type implementedIfc : implementedIfcs) { if ((implementedIfc instanceof GeneratedType && !(implementedIfc instanceof GeneratedTransferObject))) { final GeneratedType ifc = (GeneratedType) implementedIfc; - methods.addAll(ifc.getMethodDefinitions()); + if (implementedIfc instanceof GeneratedTypeForBuilder) { + methods.addAll(ifc.getMethodDefinitions()); + } collectImplementedMethods(methods, ifc.getImplements()); } else if (Augmentable.class.getName().equals(implementedIfc.getFullyQualifiedName())) { for (Method method : Augmentable.class.getMethods()) { @@ -178,6 +201,9 @@ public class BuilderRenderer extends BaseRenderer { importedNames.put("augmentFieldReturnType", importedName(augmentField.getReturnType())); } } + } else if (Instantiable.class.getName().equals(implementedIfc.getFullyQualifiedName())) { + importedNames.put("class", importedName(Class.class)); + instantiable = true; } } } @@ -245,19 +271,26 @@ public class BuilderRenderer extends BaseRenderer { importedNames.put("objects", importedName(Objects.class)); importedNames.put("object", importedName(Object.class)); importedNames.put("string", importedName(String.class)); + importedNames.put("arrays", importedName(Arrays.class)); importedNames.put("stringBuilder", importedName(StringBuilder.class)); importedNames.put("treeNode", importedName(TreeNode.class)); importedNames.put("instantiable", importedName(Instantiable.class)); importedNames.put("item", importedName(Item.class)); if (getType().getParentType() != null) { importedNames.put("parent", importedName(getType().getParentType())); - parentTypeForBuilderName = getType().getParentType().getName(); + parentTypeForBuilderName = getType().getParentType().getFullyQualifiedName(); } else if (getType().getParentTypeForBuilder() != null) { importedNames.put("parentTypeForBuilder", importedName(getType().getParentTypeForBuilder())); - parentTypeForBuilderName = getType().getParentTypeForBuilder().getName(); + parentTypeForBuilderName = getType().getParentTypeForBuilder().getFullyQualifiedName(); } else { parentTypeForBuilderName = null; } + + boolean childTreeNode = false; + if (getType().getImplements().contains(BindingTypes.TREE_CHILD_NODE)) { + childTreeNode = true; + } + importedNames.put("augmentation", importedName(Augmentation.class)); importedNames.put("classInstMap", importedName(ClassToInstanceMap.class)); @@ -266,7 +299,7 @@ public class BuilderRenderer extends BaseRenderer { List getterMethods = new ArrayList<>(Collections2.transform(properties, this::getterMethod)); return builderTemplate.render(getType(), properties, importedNames, importedNamesForProperties, augmentField, - copyConstructorHelper, getterMethods, parentTypeForBuilderName) + copyConstructorHelper, getterMethods, parentTypeForBuilderName, childTreeNode, instantiable) .body(); }