X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=code-generator%2Fbinding-generator-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fbinding%2Fgenerator%2Futil%2Fgenerated%2Ftype%2Fbuilder%2FGeneratedTOBuilderImpl.java;h=a2ecc1018d1d765fba3a1c5a5ae67baf47bf7d2a;hb=6fa694749c24128d45bc8bcf24d3f0b77f2c6b10;hp=02c0ff64932bee8bcf714fae6c7d8b7a156c499f;hpb=cd908b7b26a557dca95705fcd0db4b9a1ae1a927;p=yangtools.git diff --git a/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedTOBuilderImpl.java b/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedTOBuilderImpl.java index 02c0ff6493..a2ecc1018d 100644 --- a/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedTOBuilderImpl.java +++ b/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedTOBuilderImpl.java @@ -7,21 +7,30 @@ */ package org.opendaylight.yangtools.binding.generator.util.generated.type.builder; -import org.opendaylight.yangtools.sal.binding.model.api.*; -import org.opendaylight.yangtools.sal.binding.model.api.type.builder.*; - import java.util.ArrayList; -import java.util.Collections; import java.util.List; -public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder implements GeneratedTOBuilder { +import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty; +import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject; +import org.opendaylight.yangtools.sal.binding.model.api.ParameterizedType; +import org.opendaylight.yangtools.sal.binding.model.api.Restrictions; +import org.opendaylight.yangtools.sal.binding.model.api.Type; +import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedPropertyBuilder; +import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTOBuilder; +import org.opendaylight.yangtools.sal.binding.model.api.type.builder.MethodSignatureBuilder; + +public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder implements + GeneratedTOBuilder { private GeneratedTransferObject extendsType; - private final List properties = new ArrayList<>(); private final List equalsProperties = new ArrayList<>(); private final List hashProperties = new ArrayList<>(); private final List toStringProperties = new ArrayList<>(); + private boolean isTypedef = false; private boolean isUnionType = false; + private boolean isUnionTypeBuilder = false; + private Restrictions restrictions; + private GeneratedPropertyBuilder SUID; public GeneratedTOBuilderImpl(String packageName, String name) { super(packageName, name); @@ -29,32 +38,12 @@ public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder i } @Override - public void setExtendsType(final GeneratedTransferObject genTransObj) { + public GeneratedTOBuilder setExtendsType(final GeneratedTransferObject genTransObj) { if (genTransObj == null) { throw new IllegalArgumentException("Generated Transfer Object cannot be null!"); } extendsType = genTransObj; - } - - @Override - public GeneratedPropertyBuilder addProperty(String name) { - final GeneratedPropertyBuilder builder = new GeneratedPropertyBuilderImpl(name); - builder.setAccessModifier(AccessModifier.PUBLIC); - properties.add(builder); - return builder; - } - - @Override - public boolean containsProperty(String name) { - if (name == null) { - throw new IllegalArgumentException("Parameter name can't be null"); - } - for (GeneratedPropertyBuilder property : properties) { - if (name.equals(property.getName())) { - return true; - } - } - return false; + return this; } /** @@ -63,10 +52,10 @@ public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder i * Name of Method cannot be null, if it is null * the method SHOULD throw {@link IllegalArgumentException}
* By Default the MethodSignatureBuilder SHOULD be pre-set as - * {@link MethodSignatureBuilder#setAbstract(false)}, - * {@link MethodSignatureBuilder#setFinal(false)} and - * {@link MethodSignatureBuilder#setAccessModifier(PUBLIC)} - * + * {@link MethodSignatureBuilder#setAbstract(boolean)}, + * {TypeMemberBuilder#setFinal(boolean)} and + * {TypeMemberBuilder#setAccessModifier(boolean)} + * * @param name * Name of Method * @return new instance of Method Signature Builder. @@ -79,26 +68,41 @@ public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder i } @Override - public boolean addEqualsIdentity(GeneratedPropertyBuilder property) { - return equalsProperties.add(property); + public GeneratedTOBuilder addEqualsIdentity(GeneratedPropertyBuilder property) { + equalsProperties.add(property); + return this; } @Override - public boolean addHashIdentity(GeneratedPropertyBuilder property) { - return hashProperties.add(property); + public GeneratedTOBuilder addHashIdentity(GeneratedPropertyBuilder property) { + hashProperties.add(property); + return this; } @Override - public boolean addToStringProperty(GeneratedPropertyBuilder property) { - return toStringProperties.add(property); + public GeneratedTOBuilder addToStringProperty(GeneratedPropertyBuilder property) { + toStringProperties.add(property); + return this; + } + + @Override + protected GeneratedTOBuilder thisInstance() { + return this; + } + + @Override + public void setRestrictions(Restrictions restrictions) { + this.restrictions = restrictions; + } + + @Override + public void setSUID(GeneratedPropertyBuilder suid) { + this.SUID = suid; } @Override public GeneratedTransferObject toInstance() { - return new GeneratedTransferObjectImpl(null, getPackageName(), getName(), getComment(), getAnnotations(), - isAbstract(), extendsType, getImplementsTypes(), getEnclosedTypes(), getEnclosedTransferObjects(), - getConstants(), getEnumerations(), getMethodDefinitions(), properties, equalsProperties, - hashProperties, toStringProperties, isUnionType); + return new GeneratedTransferObjectImpl(this); } @Override @@ -114,8 +118,6 @@ public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder i builder.append(getConstants()); builder.append(", enumerations="); builder.append(getEnumerations()); - builder.append(", properties="); - builder.append(properties); builder.append(", equalsProperties="); builder.append(equalsProperties); builder.append(", hashCodeProperties="); @@ -130,61 +132,69 @@ public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder i return builder.toString(); } + @Override + public void setTypedef(boolean isTypedef) { + this.isTypedef = isTypedef; + } + @Override public void setIsUnion(boolean isUnion) { this.isUnionType = isUnion; } + @Override + public void setIsUnionBuilder(boolean isUnionTypeBuilder) { + this.isUnionTypeBuilder = isUnionTypeBuilder; + } + private static final class GeneratedTransferObjectImpl extends AbstractGeneratedType implements GeneratedTransferObject { - private final List properties; private final List equalsProperties; private final List hashCodeProperties; private final List stringProperties; private final GeneratedTransferObject extendsType; + private final boolean isTypedef; private final boolean isUnionType; + private final boolean isUnionTypeBuilder; + private final Restrictions restrictions; + private final GeneratedProperty SUID; - GeneratedTransferObjectImpl(final Type parent, final String packageName, final String name, - final String comment, final List annotationBuilders, final boolean isAbstract, - final GeneratedTransferObject extendsType, final List implementsTypes, - final List enclosedGenTypeBuilders, - final List enclosedGenTOBuilders, final List constants, - final List enumBuilders, final List methodBuilders, - final List propBuilders, final List equalsBuilders, - final List hashCodeBuilders, - final List stringBuilders, final boolean isUnionType) { - super(parent, packageName, name, comment, annotationBuilders, isAbstract, implementsTypes, - enclosedGenTypeBuilders, enclosedGenTOBuilders, enumBuilders, constants, methodBuilders); - this.extendsType = extendsType; - this.properties = toUnmodifiableProperties(propBuilders); - this.equalsProperties = toUnmodifiableProperties(equalsBuilders); - this.hashCodeProperties = toUnmodifiableProperties(hashCodeBuilders); - this.stringProperties = toUnmodifiableProperties(stringBuilders); - this.isUnionType = isUnionType; + public GeneratedTransferObjectImpl(GeneratedTOBuilderImpl builder) { + super(builder); + this.extendsType = builder.extendsType; + this.equalsProperties = toUnmodifiableProperties(builder.equalsProperties); + this.hashCodeProperties = toUnmodifiableProperties(builder.hashProperties); + this.stringProperties = toUnmodifiableProperties(builder.toStringProperties); + this.isTypedef = builder.isTypedef; + this.isUnionType = builder.isUnionType; + this.isUnionTypeBuilder = builder.isUnionTypeBuilder; + this.restrictions = builder.restrictions; + if (builder.SUID == null) { + this.SUID = null; + } else { + this.SUID = builder.SUID.toInstance(GeneratedTransferObjectImpl.this); + } } @Override - public boolean isUnionType() { - return isUnionType; + public boolean isTypedef() { + return isTypedef; } - private List toUnmodifiableProperties(final List propBuilders) { - final List properties = new ArrayList<>(); - for (final GeneratedPropertyBuilder builder : propBuilders) { - properties.add(builder.toInstance(this)); - } - return Collections.unmodifiableList(properties); + @Override + public boolean isUnionType() { + return isUnionType; } @Override - public GeneratedTransferObject getExtends() { - return extendsType; + public boolean isUnionTypeBuilder() { + return isUnionTypeBuilder; } @Override - public List getProperties() { - return properties; + public GeneratedTransferObject getSuperType() { + return extendsType; } @Override @@ -202,8 +212,21 @@ public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder i return stringProperties; } + @Override + public Restrictions getRestrictions() { + return restrictions; + } + + @Override + public GeneratedProperty getSUID() { + return SUID; + } + @Override public String toString() { + if(isTypedef) { + return serializeTypedef(this); + } StringBuilder builder = new StringBuilder(); builder.append("GeneratedTransferObject [packageName="); builder.append(getPackageName()); @@ -214,7 +237,7 @@ public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder i builder.append(getAnnotations()); builder.append(getComment()); builder.append(", extends="); - builder.append(getExtends()); + builder.append(getSuperType()); builder.append(", implements="); builder.append(getImplements()); builder.append(", enclosedTypes="); @@ -224,7 +247,7 @@ public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder i builder.append(", enumerations="); builder.append(getEnumerations()); builder.append(", properties="); - builder.append(properties); + builder.append(getProperties()); builder.append(", equalsProperties="); builder.append(equalsProperties); builder.append(", hashCodeProperties="); @@ -236,5 +259,28 @@ public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder i builder.append("]"); return builder.toString(); } + + public String serializeTypedef(Type type) { + if (type instanceof ParameterizedType) { + ParameterizedType parameterizedType = (ParameterizedType) type; + StringBuffer sb = new StringBuffer(); + sb.append(parameterizedType.getRawType().getFullyQualifiedName()); + sb.append("<"); + boolean first = true; + for (Type parameter : parameterizedType.getActualTypeArguments()) { + if (first) { + first = false; + } else { + sb.append(","); + } + sb.append(serializeTypedef(parameter)); + } + sb.append(">"); + return sb.toString(); + } else { + return type.getFullyQualifiedName(); + } + } + } }