package org.opendaylight.mdsal.binding.javav2.generator.yang.types;
import static org.opendaylight.mdsal.binding.javav2.generator.util.BindingGeneratorUtil.encodeAngleBrackets;
+import static org.opendaylight.mdsal.binding.javav2.generator.util.BindingGeneratorUtil.packageNameWithNamespacePrefix;
+import static org.opendaylight.mdsal.binding.javav2.generator.util.Types.getOuterClassPackageName;
import static org.opendaylight.mdsal.binding.javav2.generator.yang.types.TypeGenHelper.addStringRegExAsConstant;
import static org.opendaylight.mdsal.binding.javav2.generator.yang.types.TypeGenHelper.baseTypeDefForExtendedType;
import static org.opendaylight.mdsal.binding.javav2.generator.yang.types.TypeGenHelper.getAllTypedefs;
}
modulesSortedByDependency.stream().filter(module -> module != null).forEach(module -> {
- final String basePackageName = getRootPackageName(module);
+ final String basePackageName = packageNameWithNamespacePrefix(getRootPackageName(module),
+ BindingNamespaceType.Typedef);
final List<TypeDefinition<?>> typeDefinitions = getAllTypedefs(module);
final List<TypeDefinition<?>> listTypeDefinitions = sortTypeDefinitionAccordingDepth(typeDefinitions);
if (listTypeDefinitions != null) {
final Module module = findParentModule(schemaContext, parentNode);
final GeneratedTOBuilderImpl unionGenTOBuilder;
- if (typeDefName != null && !typeDefName.isEmpty()) {
- unionGenTOBuilder = new GeneratedTOBuilderImpl(basePackageName, typeDefName, true, false);
- final String typedefDescription = encodeAngleBrackets(typedef.getDescription());
- unionGenTOBuilder.setDescription(typedefDescription);
- unionGenTOBuilder.setReference(typedef.getReference());
- unionGenTOBuilder.setSchemaPath((List) typedef.getPath().getPathFromRoot());
- unionGenTOBuilder.setModuleName(module.getName());
- } else {
- unionGenTOBuilder = typedefToTransferObject(basePackageName, typedef, module.getName());
- }
+ unionGenTOBuilder = new GeneratedTOBuilderImpl(basePackageName, typeDefName, true, false);
+ final String typedefDescription = encodeAngleBrackets(typedef.getDescription());
+ unionGenTOBuilder.setDescription(typedefDescription);
+ unionGenTOBuilder.setReference(typedef.getReference());
+ unionGenTOBuilder.setSchemaPath((List) typedef.getPath().getPathFromRoot());
+ unionGenTOBuilder.setModuleName(module.getName());
generatedTOBuilders.add(unionGenTOBuilder);
unionGenTOBuilder.setIsUnion(true);
if (r != null && !r.isEmpty() && returnType instanceof GeneratedTransferObject) {
final GeneratedTransferObject gto = (GeneratedTransferObject) returnType;
final Module module = findParentModule(schemaContext, parentNode);
+ final Module module1 = findParentModule(schemaContext, typeDefinition);
final String basePackageName = BindingMapping.getRootPackageName(module);
final String packageName = BindingGeneratorUtil.packageNameForGeneratedType(basePackageName, typeDefinition
.getPath(), BindingNamespaceType.Typedef);
final String genTOName =
JavaIdentifierNormalizer.normalizeSpecificIdentifier(typedefName, JavaIdentifier.CLASS);
final String name = packageName + "." + genTOName;
- if (!(returnType.getFullyQualifiedName().equals(name))) {
+ if (module.equals(module1) && !(returnType.getFullyQualifiedName().equals(name))) {
returnType = shadedTOWithRestrictions(gto, r);
}
}
addUnitsToGenTO(genTOBuilder, typedef.getUnits());
makeSerializable((GeneratedTOBuilderImpl) genTOBuilder);
returnType = genTOBuilder.toInstance();
- // union builder
- final GeneratedTOBuilder unionBuilder = new GeneratedTOBuilderImpl(genTOBuilder.getPackageName(),
- genTOBuilder.getName() + "Builder", true, true);
- unionBuilder.setIsUnionBuilder(true);
- final MethodSignatureBuilder method = unionBuilder.addMethod("getDefaultInstance");
- method.setReturnType(returnType);
- method.addParameter(Types.STRING, "defaultValue");
- method.setAccessModifier(AccessModifier.PUBLIC);
- method.setStatic(true);
- Set<Type> types = additionalTypes.get(module);
- if (types == null) {
- types = Sets.newHashSet(unionBuilder.toInstance());
- additionalTypes.put(module, types);
- } else {
- types.add(unionBuilder.toInstance());
- }
} else if (innerTypeDefinition instanceof EnumTypeDefinition) {
// enums are automatically Serializable
final EnumTypeDefinition enumTypeDef = (EnumTypeDefinition) innerTypeDefinition;
final TypeDefinition<?> baseTypeDef = baseTypeDefForExtendedType(typeDefinition);
Type returnType = javaTypeForLeafrefOrIdentityRef(baseTypeDef, typeDefinition, schemaContext, genTypeDefsContextMap);
if (returnType == null) {
- if (baseTypeDef instanceof EnumTypeDefinition) {
- final EnumTypeDefinition enumTypeDef = (EnumTypeDefinition) baseTypeDef;
- returnType = provideTypeForEnum(enumTypeDef, typedefName, typeDefinition, schemaContext);
- } else {
- final Module module = findParentModule(schemaContext, typeDefinition);
- final Restrictions r = BindingGeneratorUtil.getRestrictions(typeDefinition);
- if (module != null) {
- final Map<Date, Map<String, Type>> modulesByDate = genTypeDefsContextMap.get(module.getName());
- final Map<String, Type> genTOs = modulesByDate.get(module.getRevision());
- if (genTOs != null) {
- returnType = genTOs.get(typedefName);
- }
- if (returnType == null) {
- returnType = BaseYangTypes.BASE_YANG_TYPES_PROVIDER.javaTypeForSchemaDefinitionType(
- baseTypeDef, typeDefinition, r);
- }
+ final Module module = findParentModule(schemaContext, typeDefinition);
+ final Restrictions r = BindingGeneratorUtil.getRestrictions(typeDefinition);
+ if (module != null) {
+ final Map<Date, Map<String, Type>> modulesByDate = genTypeDefsContextMap.get(module.getName());
+ final Map<String, Type> genTOs = modulesByDate.get(module.getRevision());
+ if (genTOs != null) {
+ returnType = genTOs.get(typedefName);
+ }
+ if (returnType == null) {
+ returnType = BaseYangTypes.BASE_YANG_TYPES_PROVIDER.javaTypeForSchemaDefinitionType(
+ baseTypeDef, typeDefinition, r);
}
}
}
final String basePackageName = BindingMapping.getRootPackageName(module);
final String packageName = BindingGeneratorUtil.packageNameForGeneratedType(basePackageName, identity.getPath
- (), BindingNamespaceType.Typedef);
- final String genTypeName =
- JavaIdentifierNormalizer.normalizeClassIdentifier(packageName, identity.getQName().getLocalName());
+ (), BindingNamespaceType.Identity);
+
+ final String genTypeName = JavaIdentifierNormalizer.normalizeSpecificIdentifier(identity.getQName().getLocalName(),
+ JavaIdentifier.CLASS);
final Type baseType = Types.typeForClass(Class.class);
- final Type paramType = Types.wildcardTypeFor(packageName, genTypeName);
+ final Type paramType = Types.wildcardTypeFor(packageName, genTypeName, true, true);
return Types.parameterizedTypeFor(baseType, paramType);
}
resultTOBuilder.addHashIdentity(genPropBuilder);
resultTOBuilder.addToStringProperty(genPropBuilder);
+ provideGeneratedTOBuilderForUnionBuilder(findParentModule(schemaContext, parentNode), resultTOBuilder);
+
return resultTOBuilder;
}
+
+ private GeneratedTOBuilder provideGeneratedTOBuilderForUnionBuilder(final Module parentModule,
+ final GeneratedTOBuilder genTOBuilder) {
+ final String outerCls = Types.getOuterClassName(genTOBuilder);
+ final StringBuilder name;
+ if (outerCls != null) {
+ name = new StringBuilder(outerCls);
+ } else {
+ name = new StringBuilder();
+ }
+ name.append(genTOBuilder.getName());
+ name.append("Builder");
+ final GeneratedTOBuilderImpl unionBuilder = new GeneratedTOBuilderImpl(getOuterClassPackageName(genTOBuilder),
+ name.toString(), true);
+ unionBuilder.setIsUnionBuilder(true);
+
+ final MethodSignatureBuilder method = unionBuilder.addMethod("getDefaultInstance");
+ method.setReturnType(genTOBuilder);
+ method.addParameter(Types.STRING, "defaultValue");
+ method.setAccessModifier(AccessModifier.PUBLIC);
+ method.setStatic(true);
+
+ final Set<Type> types = this.getAdditionalTypes().get(parentModule);
+ if (types == null) {
+ this.getAdditionalTypes().put(parentModule,
+ Sets.newHashSet(unionBuilder.toInstance()));
+ } else {
+ types.add(unionBuilder.toInstance());
+ }
+
+ return unionBuilder;
+ }
+
/**
* Wraps code which handle case when union subtype is of the type
* <code>ExtendedType</code>.
final String unionTypeName = unionSubtype.getQName().getLocalName();
final Type genTO = findGenTO(unionTypeName, unionSubtype, schemaContext, genTypeDefsContextMap);
if (genTO != null) {
- updateUnionTypeAsProperty(parentUnionGenTOBuilder, genTO, genTO.getName());
+ updateUnionTypeAsProperty(parentUnionGenTOBuilder, genTO, unionTypeName);
} else {
final TypeDefinition<?> baseType = baseTypeDefForExtendedType(unionSubtype);
if (unionTypeName.equals(baseType.getQName().getLocalName())) {