import org.opendaylight.mdsal.binding.model.util.BindingTypes;
import org.opendaylight.mdsal.binding.model.util.ReferencedTypeImpl;
import org.opendaylight.mdsal.binding.model.util.Types;
+import org.opendaylight.mdsal.binding.model.util.generated.type.builder.CodegenGeneratedTOBuilder;
import org.opendaylight.mdsal.binding.model.util.generated.type.builder.GeneratedPropertyBuilderImpl;
-import org.opendaylight.mdsal.binding.model.util.generated.type.builder.GeneratedTOBuilderImpl;
import org.opendaylight.mdsal.binding.model.util.generated.type.builder.GeneratedTypeBuilderImpl;
import org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider;
import org.opendaylight.mdsal.binding.yang.types.GroupingDefinitionDependencySort;
}
final String packageName = packageNameForGeneratedType(basePackageName, identity.getPath());
final String genTypeName = BindingMapping.getClassName(identity.getQName());
- final GeneratedTOBuilderImpl newType = new GeneratedTOBuilderImpl(packageName, genTypeName);
+ final GeneratedTOBuilder newType = typeProvider.newGeneratedTOBuilder(packageName, genTypeName);
final Set<IdentitySchemaNode> baseIdentities = identity.getBaseIdentities();
if (baseIdentities.isEmpty()) {
- final GeneratedTOBuilderImpl gto = new GeneratedTOBuilderImpl(BaseIdentity.class.getPackage().getName(),
- BaseIdentity.class.getSimpleName());
+ final GeneratedTOBuilder gto = typeProvider.newGeneratedTOBuilder(
+ BaseIdentity.class.getPackage().getName(), BaseIdentity.class.getSimpleName());
newType.setExtendsType(gto.toInstance());
} else {
final IdentitySchemaNode baseIdentity = baseIdentities.iterator().next();
final String returnTypePkgName = BindingMapping.getRootPackageName(baseIdentityParentModule
.getQNameModule());
final String returnTypeName = BindingMapping.getClassName(baseIdentity.getQName());
- final GeneratedTransferObject gto = new GeneratedTOBuilderImpl(returnTypePkgName, returnTypeName)
+ final GeneratedTransferObject gto = new CodegenGeneratedTOBuilder(returnTypePkgName, returnTypeName)
.toInstance();
newType.setExtendsType(gto);
}
private Type createReturnTypeForUnion(final GeneratedTOBuilder genTOBuilder, final TypeDefinition<?> typeDef,
final GeneratedTypeBuilder typeBuilder, final Module parentModule) {
- final GeneratedTOBuilderImpl returnType = new GeneratedTOBuilderImpl(genTOBuilder.getPackageName(),
+ final GeneratedTOBuilder returnType = typeProvider.newGeneratedTOBuilder(genTOBuilder.getPackageName(),
genTOBuilder.getName());
addCodegenInformation(returnType, parentModule, typeDef);
return returnType.toInstance();
}
- private static GeneratedTOBuilder createUnionBuilder(final GeneratedTOBuilder genTOBuilder, final GeneratedTypeBuilder typeBuilder) {
+ private GeneratedTOBuilder createUnionBuilder(final GeneratedTOBuilder genTOBuilder,
+ final GeneratedTypeBuilder typeBuilder) {
final String outerCls = Types.getOuterClassName(genTOBuilder);
final StringBuilder name;
if (outerCls != null) {
}
name.append(genTOBuilder.getName());
name.append("Builder");
- final GeneratedTOBuilderImpl unionBuilder = new GeneratedTOBuilderImpl(typeBuilder.getPackageName(),name.toString());
+ final GeneratedTOBuilder unionBuilder = typeProvider.newGeneratedTOBuilder(typeBuilder.getPackageName(),
+ name.toString());
unionBuilder.setIsUnionBuilder(true);
return unionBuilder;
}
* <code>list</code> or null if <code>list</code> is null or list of
* key definitions is null or empty.
*/
- private static GeneratedTOBuilder resolveListKeyTOBuilder(final String packageName, final ListSchemaNode list) {
+ private GeneratedTOBuilder resolveListKeyTOBuilder(final String packageName, final ListSchemaNode list) {
GeneratedTOBuilder genTOBuilder = null;
if (list.getKeyDefinition() != null && !list.getKeyDefinition().isEmpty()) {
final String listName = list.getQName().getLocalName() + "Key";
final String genTOName = BindingMapping.getClassName(listName);
- genTOBuilder = new GeneratedTOBuilderImpl(packageName, genTOName);
+ genTOBuilder = typeProvider.newGeneratedTOBuilder(packageName, genTOName);
}
return genTOBuilder;
}
import org.opendaylight.mdsal.binding.model.util.Types;
import org.opendaylight.mdsal.binding.model.util.generated.type.builder.EnumerationBuilderImpl;
import org.opendaylight.mdsal.binding.model.util.generated.type.builder.GeneratedPropertyBuilderImpl;
-import org.opendaylight.mdsal.binding.model.util.generated.type.builder.GeneratedTOBuilderImpl;
import org.opendaylight.yangtools.yang.binding.BindingMapping;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.Revision;
return returnType;
}
- private static GeneratedTransferObject shadedTOWithRestrictions(final GeneratedTransferObject gto,
- final Restrictions r) {
- final GeneratedTOBuilder gtob = new GeneratedTOBuilderImpl(gto.getPackageName(), gto.getName());
+ private GeneratedTransferObject shadedTOWithRestrictions(final GeneratedTransferObject gto, final Restrictions r) {
+ final GeneratedTOBuilder gtob = newGeneratedTOBuilder(gto.getPackageName(), gto.getName());
final GeneratedTransferObject parent = gto.getSuperType();
if (parent != null) {
gtob.setExtendsType(parent);
public abstract void addEnumDescription(EnumBuilder enumBuilder, EnumTypeDefinition enumTypeDef);
+ public abstract GeneratedTOBuilder newGeneratedTOBuilder(String packageName, String name);
+
abstract void addCodegenInformation(GeneratedTypeBuilderBase<?> genTOBuilder, TypeDefinition<?> typeDef);
/**
* <code>modulName</code> or <code>typedef</code> or Q name of
* <code>typedef</code> equals <code>null</code>
*/
- private Type typedefToGeneratedType(final String basePackageName, final Module module, final TypeDefinition<?> typedef) {
+ private Type typedefToGeneratedType(final String basePackageName, final Module module,
+ final TypeDefinition<?> typedef) {
final String moduleName = module.getName();
final Optional<Revision> moduleRevision = module.getRevision();
if (basePackageName != null && moduleName != null && typedef != null && typedef.getQName() != null) {
&& !(innerTypeDefinition instanceof IdentityrefTypeDefinition)) {
Type returnType = null;
if (innerTypeDefinition.getBaseType() != null) {
- returnType = provideGeneratedTOFromExtendedType(typedef, innerTypeDefinition, basePackageName, module.getName());
+ returnType = provideGeneratedTOFromExtendedType(typedef, innerTypeDefinition, basePackageName,
+ module.getName());
} else if (innerTypeDefinition instanceof UnionTypeDefinition) {
final GeneratedTOBuilder genTOBuilder = provideGeneratedTOBuilderForUnionTypeDef(basePackageName,
(UnionTypeDefinition) innerTypeDefinition, typedefName, typedef);
genTOBuilder.setTypedef(true);
genTOBuilder.setIsUnion(true);
addUnitsToGenTO(genTOBuilder, typedef.getUnits().orElse(null));
- makeSerializable((GeneratedTOBuilderImpl) genTOBuilder);
+ makeSerializable(genTOBuilder);
returnType = genTOBuilder.toInstance();
// union builder
- final GeneratedTOBuilder unionBuilder = new GeneratedTOBuilderImpl(genTOBuilder.getPackageName(),
+ final GeneratedTOBuilder unionBuilder = newGeneratedTOBuilder(genTOBuilder.getPackageName(),
genTOBuilder.getName() + "Builder");
unionBuilder.setIsUnionBuilder(true);
final MethodSignatureBuilder method = unionBuilder.addMethod("getDefaultInstance");
basePackageName, bitsTypeDefinition, typedefName, module.getName());
genTOBuilder.setTypedef(true);
addUnitsToGenTO(genTOBuilder, typedef.getUnits().orElse(null));
- makeSerializable((GeneratedTOBuilderImpl) genTOBuilder);
+ makeSerializable(genTOBuilder);
returnType = genTOBuilder.toInstance();
} else {
final Type javaType = javaTypeForSchemaDefinitionType(innerTypeDefinition, typedef);
}
addUnitsToGenTO(genTOBuilder, typedef.getUnits().orElse(null));
genTOBuilder.setTypedef(true);
- makeSerializable((GeneratedTOBuilderImpl) genTOBuilder);
+ makeSerializable(genTOBuilder);
return genTOBuilder.toInstance();
}
final List<TypeDefinition<?>> unionTypes = typedef.getTypes();
final Module module = findParentModule(schemaContext, parentNode);
- final GeneratedTOBuilderImpl unionGenTOBuilder;
+ final GeneratedTOBuilder unionGenTOBuilder;
if (typeDefName != null && !typeDefName.isEmpty()) {
final String typeName = BindingMapping.getClassName(typeDefName);
- unionGenTOBuilder = new GeneratedTOBuilderImpl(basePackageName, typeName);
+ unionGenTOBuilder = newGeneratedTOBuilder(basePackageName, typeName);
unionGenTOBuilder.setSchemaPath(typedef.getPath().getPathFromRoot());
unionGenTOBuilder.setModuleName(module.getName());
addCodegenInformation(unionGenTOBuilder, typedef);
* @return generated TO builder which contains data from
* <code>typedef</code> and <code>basePackageName</code>
*/
- private GeneratedTOBuilderImpl typedefToTransferObject(final String basePackageName,
+ private GeneratedTOBuilder typedefToTransferObject(final String basePackageName,
final TypeDefinition<?> typedef, final String moduleName) {
final String packageName = BindingGeneratorUtil.packageNameForGeneratedType(basePackageName, typedef.getPath());
if (packageName != null && typeDefTOName != null) {
final String genTOName = BindingMapping.getClassName(typeDefTOName);
- final GeneratedTOBuilderImpl newType = new GeneratedTOBuilderImpl(packageName, genTOName);
+ final GeneratedTOBuilder newType = newGeneratedTOBuilder(packageName, genTOName);
newType.setSchemaPath(typedef.getPath().getPathFromRoot());
newType.setModuleName(moduleName);
addCodegenInformation(newType, typedef);
final BitsTypeDefinition bitsTypeDefinition = (BitsTypeDefinition) typeDef;
final String typeName = BindingMapping.getClassName(typeDefName);
- final GeneratedTOBuilderImpl genTOBuilder = new GeneratedTOBuilderImpl(basePackageName, typeName);
+ final GeneratedTOBuilder genTOBuilder = newGeneratedTOBuilder(basePackageName, typeName);
genTOBuilder.setSchemaPath(typeDef.getPath().getPathFromRoot());
genTOBuilder.setModuleName(moduleName);
genTOBuilder.setBaseType(typeDef);
* <li>if <code>typedefName</code> equals null</li>
* </ul>
*/
- private GeneratedTransferObject provideGeneratedTOFromExtendedType(final TypeDefinition<?> typedef, final TypeDefinition<?> innerExtendedType, final String basePackageName, final String moduleName) {
+ private GeneratedTransferObject provideGeneratedTOFromExtendedType(final TypeDefinition<?> typedef,
+ final TypeDefinition<?> innerExtendedType, final String basePackageName, final String moduleName) {
Preconditions.checkArgument(innerExtendedType != null, "Extended type cannot be NULL!");
Preconditions.checkArgument(basePackageName != null, "String with base package name cannot be NULL!");
final String typedefName = typedef.getQName().getLocalName();
final String classTypedefName = BindingMapping.getClassName(typedefName);
final String innerTypeDef = innerExtendedType.getQName().getLocalName();
- final GeneratedTOBuilderImpl genTOBuilder = new GeneratedTOBuilderImpl(basePackageName, classTypedefName);
+ final GeneratedTOBuilder genTOBuilder = newGeneratedTOBuilder(basePackageName, classTypedefName);
genTOBuilder.setSchemaPath(typedef.getPath().getPathFromRoot());
genTOBuilder.setModuleName(moduleName);
genTOBuilder.setTypedef(true);
* @param gto
* transfer object which needs to be serializable
*/
- private static void makeSerializable(final GeneratedTOBuilderImpl gto) {
+ private static void makeSerializable(final GeneratedTOBuilder gto) {
gto.addImplementsType(Types.typeForClass(Serializable.class));
final GeneratedPropertyBuilder prop = new GeneratedPropertyBuilderImpl("serialVersionUID");
prop.setValue(Long.toString(BindingGeneratorUtil.computeDefaultSUID(gto)));
import java.util.Map;
import java.util.Optional;
import org.opendaylight.mdsal.binding.model.api.type.builder.EnumBuilder;
+import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder;
import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilderBase;
+import org.opendaylight.mdsal.binding.model.util.generated.type.builder.CodegenGeneratedTOBuilder;
import org.opendaylight.yangtools.yang.binding.BindingMapping;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
return pattern;
}
}
+
+ @Override
+ public GeneratedTOBuilder newGeneratedTOBuilder(final String packageName, final String name) {
+ return new CodegenGeneratedTOBuilder(packageName, name);
+ }
}
import com.google.common.collect.ImmutableMap;
import java.util.Map;
import org.opendaylight.mdsal.binding.model.api.type.builder.EnumBuilder;
+import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder;
import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilderBase;
+import org.opendaylight.mdsal.binding.model.util.generated.type.builder.RuntimeGeneratedTOBuilder;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
Map<String, String> resolveRegExpressionsFromTypedef(final TypeDefinition<?> typedef) {
return ImmutableMap.of();
}
+
+ @Override
+ public GeneratedTOBuilder newGeneratedTOBuilder(final String packageName, final String name) {
+ return new RuntimeGeneratedTOBuilder(packageName, name);
+ }
}
import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder;
import org.opendaylight.mdsal.binding.model.util.BindingGeneratorUtil;
import org.opendaylight.mdsal.binding.model.util.ReferencedTypeImpl;
-import org.opendaylight.mdsal.binding.model.util.generated.type.builder.GeneratedTOBuilderImpl;
+import org.opendaylight.mdsal.binding.model.util.generated.type.builder.CodegenGeneratedTOBuilder;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@Test
public void addUnitsToGenTOTest() {
- final GeneratedTOBuilder builder = new GeneratedTOBuilderImpl("test.package", "TestBuilder");
+ final GeneratedTOBuilder builder = new CodegenGeneratedTOBuilder("test.package", "TestBuilder");
CodegenTypeProvider.addUnitsToGenTO(builder, null);
GeneratedTransferObject genTO = builder.toInstance();
import org.opendaylight.mdsal.binding.model.api.GeneratedProperty;
import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject;
import org.opendaylight.mdsal.binding.model.api.ParameterizedType;
-import org.opendaylight.mdsal.binding.model.api.Restrictions;
import org.opendaylight.mdsal.binding.model.api.Type;
import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedPropertyBuilder;
import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder;
import org.opendaylight.mdsal.binding.model.api.type.builder.MethodSignatureBuilder;
import org.opendaylight.yangtools.util.LazyCollections;
-import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder<GeneratedTOBuilder> implements GeneratedTOBuilder {
+abstract class AbstractGeneratedTOBuilder extends AbstractGeneratedTypeBuilder<GeneratedTOBuilder>
+ implements GeneratedTOBuilder {
- private GeneratedTransferObject extendsType;
+ // FIXME are these three referenced anywhere at runtime?
private List<GeneratedPropertyBuilder> equalsProperties = Collections.emptyList();
private List<GeneratedPropertyBuilder> hashProperties = Collections.emptyList();
private List<GeneratedPropertyBuilder> toStringProperties = Collections.emptyList();
+ private GeneratedTransferObject extendsType;
private boolean isTypedef = false;
private boolean isUnionType = false;
private boolean isUnionTypeBuilder = false;
private TypeDefinition<?> baseType = null;
- private Restrictions restrictions;
- private GeneratedPropertyBuilder SUID;
- private String reference;
- private String description;
- private String moduleName;
- private Iterable<QName> schemaPath;
- public GeneratedTOBuilderImpl(final String packageName, final String name) {
+ AbstractGeneratedTOBuilder(final String packageName, final String name) {
super(packageName, name);
setAbstract(false);
}
@Override
- public GeneratedTOBuilder setExtendsType(final GeneratedTransferObject genTransObj) {
+ public final GeneratedTOBuilder setExtendsType(final GeneratedTransferObject genTransObj) {
Preconditions.checkArgument(genTransObj != null, "Generated Transfer Object cannot be null!");
this.extendsType = genTransObj;
return this;
* @return <code>new</code> instance of Method Signature Builder.
*/
@Override
- public MethodSignatureBuilder addMethod(final String name) {
+ public final MethodSignatureBuilder addMethod(final String name) {
final MethodSignatureBuilder builder = super.addMethod(name);
builder.setAbstract(false);
return builder;
}
@Override
- public GeneratedTOBuilder addEqualsIdentity(final GeneratedPropertyBuilder property) {
+ public final GeneratedTOBuilder addEqualsIdentity(final GeneratedPropertyBuilder property) {
this.equalsProperties = LazyCollections.lazyAdd(this.equalsProperties, property);
return this;
}
@Override
- public GeneratedTOBuilder addHashIdentity(final GeneratedPropertyBuilder property) {
+ public final GeneratedTOBuilder addHashIdentity(final GeneratedPropertyBuilder property) {
this.hashProperties = LazyCollections.lazyAdd(this.hashProperties, property);
return this;
}
@Override
- public GeneratedTOBuilder addToStringProperty(final GeneratedPropertyBuilder property) {
+ public final GeneratedTOBuilder addToStringProperty(final GeneratedPropertyBuilder property) {
this.toStringProperties = LazyCollections.lazyAdd(this.toStringProperties, property);
return this;
}
@Override
- protected GeneratedTOBuilder thisInstance() {
+ protected final GeneratedTOBuilder thisInstance() {
return this;
}
@Override
- public void setRestrictions(final Restrictions restrictions) {
- this.restrictions = restrictions;
- }
-
- @Override
- public void setSUID(final GeneratedPropertyBuilder suid) {
- this.SUID = suid;
- }
-
- @Override
- public GeneratedTransferObject toInstance() {
- return new GeneratedTransferObjectImpl(this);
- }
-
- @Override
- public String toString() {
+ public final String toString() {
final StringBuilder builder = new StringBuilder();
builder.append("GeneratedTransferObject [packageName=");
builder.append(getPackageName());
}
@Override
- public void setTypedef(final boolean isTypedef) {
+ public final void setTypedef(final boolean isTypedef) {
this.isTypedef = isTypedef;
}
@Override
- public void setBaseType(final TypeDefinition<?> typeDef) {
+ public final void setBaseType(final TypeDefinition<?> typeDef) {
this.baseType = typeDef;
}
@Override
- public void setIsUnion(final boolean isUnion) {
+ public final void setIsUnion(final boolean isUnion) {
this.isUnionType = isUnion;
}
@Override
- public void setIsUnionBuilder(final boolean isUnionTypeBuilder) {
+ public final void setIsUnionBuilder(final boolean isUnionTypeBuilder) {
this.isUnionTypeBuilder = isUnionTypeBuilder;
}
- @Override
- public void setDescription(final String description) {
- this.description = description;
- }
-
- @Override
- public void setModuleName(final String moduleName) {
- this.moduleName = moduleName;
- }
-
- @Override
- public void setSchemaPath(final Iterable<QName> schemaPath) {
- this.schemaPath = schemaPath;
- }
-
- @Override
- public void setReference(final String reference) {
- this.reference = reference;
- }
-
- private static final class GeneratedTransferObjectImpl extends AbstractGeneratedType implements
+ static abstract class AbstractGeneratedTransferObject extends AbstractGeneratedType implements
GeneratedTransferObject {
private final List<GeneratedProperty> equalsProperties;
private final TypeDefinition<?> baseType;
private final boolean isUnionType;
private final boolean isUnionTypeBuilder;
- private final Restrictions restrictions;
- private final GeneratedProperty SUID;
- private final String reference;
- private final String description;
- private final String moduleName;
- private final Iterable<QName> schemaPath;
- public GeneratedTransferObjectImpl(final GeneratedTOBuilderImpl builder) {
+ AbstractGeneratedTransferObject(final AbstractGeneratedTOBuilder builder) {
super(builder);
this.extendsType = builder.extendsType;
this.baseType = builder.baseType;
this.isUnionType = builder.isUnionType;
this.isUnionTypeBuilder = builder.isUnionTypeBuilder;
- this.restrictions = builder.restrictions;
- this.reference = builder.reference;
- this.description = builder.description;
- this.moduleName = builder.moduleName;
- this.schemaPath = builder.schemaPath;
-
- if (builder.SUID == null) {
- this.SUID = null;
- } else {
- this.SUID = builder.SUID.toInstance(GeneratedTransferObjectImpl.this);
- }
}
@Override
- public boolean isTypedef() {
+ public final boolean isTypedef() {
return this.isTypedef;
}
@Override
- public TypeDefinition<?> getBaseType() {
+ public final TypeDefinition<?> getBaseType() {
return this.baseType;
}
@Override
- public boolean isUnionType() {
+ public final boolean isUnionType() {
return this.isUnionType;
}
@Override
- public boolean isUnionTypeBuilder() {
+ public final boolean isUnionTypeBuilder() {
return this.isUnionTypeBuilder;
}
@Override
- public GeneratedTransferObject getSuperType() {
+ public final GeneratedTransferObject getSuperType() {
return this.extendsType;
}
@Override
- public List<GeneratedProperty> getEqualsIdentifiers() {
+ public final List<GeneratedProperty> getEqualsIdentifiers() {
return this.equalsProperties;
}
@Override
- public List<GeneratedProperty> getHashCodeIdentifiers() {
+ public final List<GeneratedProperty> getHashCodeIdentifiers() {
return this.hashCodeProperties;
}
@Override
- public List<GeneratedProperty> getToStringIdentifiers() {
+ public final List<GeneratedProperty> getToStringIdentifiers() {
return this.stringProperties;
}
@Override
- public Restrictions getRestrictions() {
- return this.restrictions;
- }
-
- @Override
- public GeneratedProperty getSUID() {
- return this.SUID;
- }
-
- @Override
- public String toString() {
+ public final String toString() {
if (this.isTypedef) {
return serializeTypedef(this);
}
return builder.toString();
}
- public String serializeTypedef(final Type type) {
- if (type instanceof ParameterizedType) {
- final ParameterizedType parameterizedType = (ParameterizedType) type;
- final StringBuilder sb = new StringBuilder();
- sb.append(parameterizedType.getRawType().getFullyQualifiedName());
- sb.append('<');
- boolean first = true;
- for (final Type parameter : parameterizedType.getActualTypeArguments()) {
- if (first) {
- first = false;
- } else {
- sb.append(',');
- }
- sb.append(serializeTypedef(parameter));
- }
- sb.append('>');
- return sb.toString();
- } else {
+ public final String serializeTypedef(final Type type) {
+ if (!(type instanceof ParameterizedType)) {
return type.getFullyQualifiedName();
}
- }
-
- @Override
- public String getDescription() {
- return this.description;
- }
-
- @Override
- public String getReference() {
- return this.reference;
- }
- @Override
- public Iterable<QName> getSchemaPath() {
- return this.schemaPath;
- }
-
- @Override
- public String getModuleName() {
- return this.moduleName;
+ final ParameterizedType parameterizedType = (ParameterizedType) type;
+ final StringBuilder sb = new StringBuilder();
+ sb.append(parameterizedType.getRawType().getFullyQualifiedName()).append('<');
+ boolean first = true;
+ for (final Type parameter : parameterizedType.getActualTypeArguments()) {
+ if (first) {
+ first = false;
+ } else {
+ sb.append(',');
+ }
+ sb.append(serializeTypedef(parameter));
+ }
+ return sb.append('>').toString();
}
}
}
@Override
public GeneratedTOBuilder addEnclosingTransferObject(final String name) {
Preconditions.checkArgument(name != null, "Name for Enclosing Generated Transfer Object cannot be null!");
- final GeneratedTOBuilder builder = new GeneratedTOBuilderImpl(getFullyQualifiedName(), name);
+ final GeneratedTOBuilder builder = new CodegenGeneratedTOBuilder(getFullyQualifiedName(), name);
Preconditions.checkArgument(!this.enclosedTransferObjects.contains(builder),
"This generated type already contains equal enclosing transfer object.");
--- /dev/null
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.mdsal.binding.model.util.generated.type.builder;
+
+import org.opendaylight.mdsal.binding.model.api.GeneratedProperty;
+import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject;
+import org.opendaylight.mdsal.binding.model.api.Restrictions;
+import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedPropertyBuilder;
+import org.opendaylight.yangtools.yang.common.QName;
+
+public final class CodegenGeneratedTOBuilder extends AbstractGeneratedTOBuilder {
+
+ private Restrictions restrictions;
+ private GeneratedPropertyBuilder SUID;
+ private String reference;
+ private String description;
+ private String moduleName;
+ private Iterable<QName> schemaPath;
+
+ public CodegenGeneratedTOBuilder(final String packageName, final String name) {
+ super(packageName, name);
+ }
+
+ @Override
+ public void setRestrictions(final Restrictions restrictions) {
+ this.restrictions = restrictions;
+ }
+
+ @Override
+ public void setSUID(final GeneratedPropertyBuilder suid) {
+ this.SUID = suid;
+ }
+
+ @Override
+ public GeneratedTransferObject toInstance() {
+ return new GTO(this);
+ }
+
+ @Override
+ public void setDescription(final String description) {
+ this.description = description;
+ }
+
+ @Override
+ public void setModuleName(final String moduleName) {
+ this.moduleName = moduleName;
+ }
+
+ @Override
+ public void setSchemaPath(final Iterable<QName> schemaPath) {
+ this.schemaPath = schemaPath;
+ }
+
+ @Override
+ public void setReference(final String reference) {
+ this.reference = reference;
+ }
+
+ private static final class GTO extends AbstractGeneratedTransferObject {
+ private final Restrictions restrictions;
+ private final GeneratedProperty SUID;
+ private final String reference;
+ private final String description;
+ private final String moduleName;
+ private final Iterable<QName> schemaPath;
+
+ public GTO(final CodegenGeneratedTOBuilder builder) {
+ super(builder);
+ this.restrictions = builder.restrictions;
+ this.reference = builder.reference;
+ this.description = builder.description;
+ this.moduleName = builder.moduleName;
+ this.schemaPath = builder.schemaPath;
+
+ if (builder.SUID == null) {
+ this.SUID = null;
+ } else {
+ this.SUID = builder.SUID.toInstance(GTO.this);
+ }
+ }
+
+ @Override
+ public Restrictions getRestrictions() {
+ return this.restrictions;
+ }
+
+ @Override
+ public GeneratedProperty getSUID() {
+ return this.SUID;
+ }
+
+ @Override
+ public String getDescription() {
+ return this.description;
+ }
+
+ @Override
+ public String getReference() {
+ return this.reference;
+ }
+
+ @Override
+ public Iterable<QName> getSchemaPath() {
+ return this.schemaPath;
+ }
+
+ @Override
+ public String getModuleName() {
+ return this.moduleName;
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.mdsal.binding.model.util.generated.type.builder;
+
+import org.opendaylight.mdsal.binding.model.api.GeneratedProperty;
+import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject;
+import org.opendaylight.mdsal.binding.model.api.Restrictions;
+import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedPropertyBuilder;
+import org.opendaylight.yangtools.yang.common.QName;
+
+public final class RuntimeGeneratedTOBuilder extends AbstractGeneratedTOBuilder {
+
+ public RuntimeGeneratedTOBuilder(final String packageName, final String name) {
+ super(packageName, name);
+ }
+
+ @Override
+ public void setRestrictions(final Restrictions restrictions) {
+ // No-op
+ }
+
+ @Override
+ public void setSUID(final GeneratedPropertyBuilder suid) {
+ // No-op
+ }
+
+ @Override
+ public void setDescription(final String description) {
+ // No-op
+ }
+
+ @Override
+ public void setModuleName(final String moduleName) {
+ // No-op
+ }
+
+ @Override
+ public void setSchemaPath(final Iterable<QName> schemaPath) {
+ // No-op
+ }
+
+ @Override
+ public void setReference(final String reference) {
+ // No-op
+ }
+
+ @Override
+ public GeneratedTransferObject toInstance() {
+ return new GTO(this);
+ }
+
+ private static final class GTO extends AbstractGeneratedTransferObject {
+ GTO(final RuntimeGeneratedTOBuilder builder) {
+ super(builder);
+ }
+
+ @Override
+ public Restrictions getRestrictions() {
+ throw new UnsupportedOperationException("Not available at runtime");
+ }
+
+ @Override
+ public GeneratedProperty getSUID() {
+ throw new UnsupportedOperationException("Not available at runtime");
+ }
+
+ @Override
+ public String getDescription() {
+ throw new UnsupportedOperationException("Not available at runtime");
+ }
+
+ @Override
+ public String getReference() {
+ throw new UnsupportedOperationException("Not available at runtime");
+ }
+
+ @Override
+ public Iterable<QName> getSchemaPath() {
+ throw new UnsupportedOperationException("Not available at runtime");
+ }
+
+ @Override
+ public String getModuleName() {
+ throw new UnsupportedOperationException("Not available at runtime");
+ }
+ }
+}
public void addEnclosingTransferObjectArgumentTest() {
GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
- generatedTypeBuilder.addEnclosingTransferObject(new GeneratedTOBuilderImpl("my.package", "myName"));
- generatedTypeBuilder.addEnclosingTransferObject(new GeneratedTOBuilderImpl("my.package", "myName"));
+ generatedTypeBuilder.addEnclosingTransferObject(new CodegenGeneratedTOBuilder("my.package", "myName"));
+ generatedTypeBuilder.addEnclosingTransferObject(new CodegenGeneratedTOBuilder("my.package", "myName"));
}
@Test(expected = IllegalArgumentException.class)
@Test
public void generatedPropertyAnnotationTest() {
- final GeneratedTOBuilder genTOBuilder = new GeneratedTOBuilderImpl("org.opendaylight.controller",
+ final GeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.controller",
"AnnotInterface");
final GeneratedPropertyBuilder propertyBuilder = genTOBuilder.addProperty("simpleProperty");
@Test
public void generatedTransfeObjectAnnotationTest() {
- final GeneratedTOBuilder genTypeBuilder = new GeneratedTOBuilderImpl("org.opendaylight.controller",
+ final GeneratedTOBuilder genTypeBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.controller",
"AnnotClassCache");
genTypeBuilder.addAnnotation("javax.management", "MBean");
@Test
public void testCreateNewInstance() {
- final GeneratedTOBuilderImpl genTOBuilder = new GeneratedTOBuilderImpl("org.opendaylight.yangtools.test", "Test");
+ final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
assertNotNull(genTOBuilder);
}
@Test
public void testSetExtendsType() {
- final GeneratedTOBuilderImpl genTOBuilder = new GeneratedTOBuilderImpl("org.opendaylight.yangtools.test", "Test");
- final GeneratedTOBuilderImpl extendedTypeBuilder = new GeneratedTOBuilderImpl("org.opendaylight.yangtools.test", "ExtendedType");
+ final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
+ final CodegenGeneratedTOBuilder extendedTypeBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "ExtendedType");
final GeneratedTransferObject extendedType = extendedTypeBuilder.toInstance();
genTOBuilder.setExtendsType(extendedType);
final GeneratedTransferObject genTO = genTOBuilder.toInstance();
@Test
public void testAddMethod() {
- final GeneratedTOBuilderImpl genTOBuilder = new GeneratedTOBuilderImpl("org.opendaylight.yangtools.test", "Test");
+ final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
final MethodSignatureBuilder methodSignatureBuilder = genTOBuilder.addMethod("testMethod");
assertEquals(methodSignatureBuilder, genTOBuilder.getMethodDefinitions().get(0));
assertEquals("testMethod", genTOBuilder.getMethodDefinitions().get(0).getName());
@Test
public void testAddEqualsIdentity() {
- final GeneratedTOBuilderImpl genTOBuilder = new GeneratedTOBuilderImpl("org.opendaylight.yangtools.test", "Test");
+ final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
final GeneratedPropertyBuilderImpl propertyBuilder = new GeneratedPropertyBuilderImpl("testProperty");
genTOBuilder.addEqualsIdentity(propertyBuilder);
@Test
public void testAddHashIdentity() {
- final GeneratedTOBuilderImpl genTOBuilder = new GeneratedTOBuilderImpl("org.opendaylight.yangtools.test", "Test");
+ final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
final GeneratedPropertyBuilderImpl propertyBuilder = new GeneratedPropertyBuilderImpl("testProperty");
genTOBuilder.addHashIdentity(propertyBuilder);
@Test
public void testAddToStringProperty() {
- final GeneratedTOBuilderImpl genTOBuilder = new GeneratedTOBuilderImpl("org.opendaylight.yangtools.test", "Test");
+ final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
final GeneratedPropertyBuilderImpl propertyBuilder = new GeneratedPropertyBuilderImpl("testProperty");
genTOBuilder.addToStringProperty(propertyBuilder);
@Test
public void testSetRestrictions() {
- final GeneratedTOBuilderImpl genTOBuilder = new GeneratedTOBuilderImpl("org.opendaylight.yangtools.test", "Test");
+ final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
final Restrictions restrictions = new Restrictions() {
@Override
@Test
public void testSetSUID() {
- final GeneratedTOBuilderImpl genTOBuilder = new GeneratedTOBuilderImpl("org.opendaylight.yangtools.test", "Test");
+ final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
final GeneratedPropertyBuilderImpl propertyBuilder = new GeneratedPropertyBuilderImpl("testProperty");
genTOBuilder.setSUID(propertyBuilder);
@Test
public void testToStringMethod() {
- final GeneratedTOBuilderImpl genTOBuilder = new GeneratedTOBuilderImpl("org.opendaylight.yangtools.test", "Test");
+ final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
assertNotNull(genTOBuilder.toString());
}
@Test
public void testSetterMethods() {
- final GeneratedTOBuilderImpl genTOBuilder = new GeneratedTOBuilderImpl("org.opendaylight.yangtools.test", "Test");
+ final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
genTOBuilder.setTypedef(true);
genTOBuilder.setIsUnion(true);
genTOBuilder.setIsUnionBuilder(true);
@Test
public void testMethodsOfGeneratedTransferObjectImpl() {
- final GeneratedTOBuilderImpl genTOBuilder = new GeneratedTOBuilderImpl("org.opendaylight.yangtools.test", "Test");
+ final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
final GeneratedTransferObject genTO = genTOBuilder.toInstance();
assertNotNull(genTO.toString());
@Test
public void testBuilder() {
- final GeneratedTOBuilder genTypeBuilder = new GeneratedTOBuilderImpl(
+ final GeneratedTOBuilder genTypeBuilder = new CodegenGeneratedTOBuilder(
"org.opendaylight.controller", "AnnotClassCache");
genTypeBuilder.setSUID(genTypeBuilder.addProperty("SUID"));
@Test
public void testToString() {
- final GeneratedTOBuilder genTypeBuilder = new GeneratedTOBuilderImpl(
+ final GeneratedTOBuilder genTypeBuilder = new CodegenGeneratedTOBuilder(
"org.opendaylight.controller", "AnnotClassCache");
String toString = genTypeBuilder.toString();
assertTrue(toString.contains("GeneratedTransferObject"));
@Test
public void testTransferBuilderToString() {
- final GeneratedTOBuilder genTypeBuilder1 = new GeneratedTOBuilderImpl(
+ final GeneratedTOBuilder genTypeBuilder1 = new CodegenGeneratedTOBuilder(
"org.opendaylight.controller", "AnnotClassCache");
genTypeBuilder1.setTypedef(true);
String toString = genTO.toString();
assertFalse(toString.contains("GeneratedTransferObject"));
- final GeneratedTOBuilder genTypeBuilder2 = new GeneratedTOBuilderImpl(
+ final GeneratedTOBuilder genTypeBuilder2 = new CodegenGeneratedTOBuilder(
"org.opendaylight.controller", "AnnotClassCache");
genTypeBuilder2.setTypedef(false);
GeneratedTOBuilder enclosingTransferObject = generatedTypeBuilder.addEnclosingTransferObject("myTOName");
GeneratedTOBuilder enclosingTransferObject2 = generatedTypeBuilder.addEnclosingTransferObject("myTOName2");
- assertEquals(generatedTypeBuilder, generatedTypeBuilder.addEnclosingTransferObject(new GeneratedTOBuilderImpl(
+ assertEquals(generatedTypeBuilder, generatedTypeBuilder.addEnclosingTransferObject(new CodegenGeneratedTOBuilder(
generatedTypeBuilder.getFullyQualifiedName(), "myTOName3")));
assertNotNull(enclosingTransferObject);
assertTrue(enclosedTypes.contains(enclosingTransferObject.toInstance()));
assertTrue(enclosedTypes.contains(enclosingTransferObject2.toInstance()));
- assertTrue(enclosedTypes.contains(new GeneratedTOBuilderImpl(generatedTypeBuilder.getFullyQualifiedName(),
+ assertTrue(enclosedTypes.contains(new CodegenGeneratedTOBuilder(generatedTypeBuilder.getFullyQualifiedName(),
"myTOName3").toInstance()));
- assertFalse(enclosedTypes.contains(new GeneratedTOBuilderImpl(generatedTypeBuilder.getFullyQualifiedName(),
+ assertFalse(enclosedTypes.contains(new CodegenGeneratedTOBuilder(generatedTypeBuilder.getFullyQualifiedName(),
"myTOName4").toInstance()));
}
import org.opendaylight.mdsal.binding.model.api.Type
import org.opendaylight.mdsal.binding.model.util.ReferencedTypeImpl
import org.opendaylight.mdsal.binding.model.util.Types
-import org.opendaylight.mdsal.binding.model.util.generated.type.builder.GeneratedTOBuilderImpl
+import org.opendaylight.mdsal.binding.model.util.generated.type.builder.CodegenGeneratedTOBuilder
import org.opendaylight.yangtools.concepts.Builder
import org.opendaylight.yangtools.yang.binding.Augmentable
import org.opendaylight.yangtools.yang.binding.AugmentationHolder
val fullyQualifiedName = m.returnType.name
val pkg = fullyQualifiedName.package
val name = fullyQualifiedName.name
- val tmpGenTO = new GeneratedTOBuilderImpl(pkg, name)
+ val tmpGenTO = new CodegenGeneratedTOBuilder(pkg, name)
val refType = new ReferencedTypeImpl(pkg, name)
val generic = new ReferencedTypeImpl(type.packageName, type.name)
val parametrizedReturnType = Types.parameterizedTypeFor(refType, generic)
}
if (method.name.startsWith(prefix)) {
val fieldName = method.getName().substring(prefix.length()).toFirstLower
- val tmpGenTO = new GeneratedTOBuilderImpl("foo", "foo")
+ val tmpGenTO = new CodegenGeneratedTOBuilder("foo", "foo")
tmpGenTO.addProperty(fieldName).setReturnType(method.returnType)
return tmpGenTO.toInstance.properties.first
}
import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedPropertyBuilder;
import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder;
import org.opendaylight.mdsal.binding.model.util.Types;
-import org.opendaylight.mdsal.binding.model.util.generated.type.builder.GeneratedTOBuilderImpl;
+import org.opendaylight.mdsal.binding.model.util.generated.type.builder.CodegenGeneratedTOBuilder;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
*/
@Test
public void defaultConstructorNotPresentInValueTypeTest() {
- final GeneratedTOBuilder toBuilder = new GeneratedTOBuilderImpl(
- "simple.pack", "DefCtor");
+ final GeneratedTOBuilder toBuilder = new CodegenGeneratedTOBuilder("simple.pack", "DefCtor");
GeneratedPropertyBuilder propBuilder = toBuilder.addProperty("foo");
propBuilder.setReturnType(Types.typeForClass(String.class));
@Test
public void toStringTest() {
- final GeneratedTOBuilder toBuilder = new GeneratedTOBuilderImpl(
- "simple.pack", "DefCtor");
+ final GeneratedTOBuilder toBuilder = new CodegenGeneratedTOBuilder("simple.pack", "DefCtor");
GeneratedPropertyBuilder propBuilder = toBuilder.addProperty("foo");
propBuilder.setReturnType(Types.typeForClass(String.class));