addComment(listenerInterface.addMethod("on" + notificationInterface.getName())
.setAccessModifier(AccessModifier.PUBLIC).addParameter(notificationInterface, "notification")
- .setReturnType(Types.VOID), notification);
+ .setReturnType(Types.primitiveVoidType()), notification);
}
}
if (identity == null) {
return;
}
- final GeneratedTOBuilder newType = typeProvider.newGeneratedTOBuilder(JavaTypeName.create(
+ final GeneratedTypeBuilder newType = typeProvider.newGeneratedTypeBuilder(JavaTypeName.create(
packageNameForGeneratedType(context.modulePackageName(), identity.getPath()),
BindingMapping.getClassName(identity.getQName())));
final Set<IdentitySchemaNode> baseIdentities = identity.getBaseIdentities();
if (baseIdentities.isEmpty()) {
final GeneratedTOBuilder gto = typeProvider.newGeneratedTOBuilder(JavaTypeName.create(BaseIdentity.class));
- newType.setExtendsType(gto.build());
+ newType.addImplementsType(gto.build());
} else {
- final IdentitySchemaNode baseIdentity = baseIdentities.iterator().next();
- final QName qname = baseIdentity.getQName();
- final GeneratedTransferObject gto = typeProvider.newGeneratedTOBuilder(JavaTypeName.create(
- BindingMapping.getRootPackageName(qname.getModule()), BindingMapping.getClassName(qname))).build();
- newType.setExtendsType(gto);
+ for (IdentitySchemaNode baseIdentity : baseIdentities) {
+ final QName qname = baseIdentity.getQName();
+ final GeneratedTransferObject gto = typeProvider.newGeneratedTOBuilder(JavaTypeName.create(
+ BindingMapping.getRootPackageName(qname.getModule()), BindingMapping.getClassName(qname))).build();
+ newType.addImplementsType(gto);
+ }
}
- newType.setAbstract(true);
final Module module = context.module();
addCodegenInformation(newType, module, identity);
SchemaNode result = targetGrouping;
for (final QName node : targetPath.getPathFromRoot()) {
if (result instanceof DataNodeContainer) {
- final QName resultNode = QName.create(result.getQName().getModule(), node.getLocalName());
+ final QName resultNode = node.withModule(result.getQName().getModule());
result = ((DataNodeContainer) result).getDataChildByName(resultNode);
} else if (result instanceof ChoiceSchemaNode) {
result = findNamedCase((ChoiceSchemaNode) result, node.getLocalName());
final List<PatternConstraint> patternConstraints) {
if (!patternConstraints.isEmpty()) {
final StringBuilder field = new StringBuilder().append(TypeConstants.PATTERN_CONSTANT_NAME).append("_")
- .append(BindingMapping.getPropertyName(leafName).toUpperCase());
+ .append(BindingMapping.getPropertyName(leafName));
typeBuilder.addConstant(Types.listTypeFor(BaseYangTypes.STRING_TYPE), field.toString(),
typeProvider.resolveRegExpressions(patternConstraints));
}
}
typeProvider.putReferencedType(leaf.getPath(), returnType);
} else if (typeDef instanceof UnionTypeDefinition) {
- final UnionTypeDefinition unionDef = (UnionTypeDefinition)typeDef;
- returnType = addTOToTypeBuilder(unionDef, typeBuilder, leaf, parentModule);
- // Store the inner type within the union so that we can find the reference for it
- context.addInnerTypedefType(typeDef.getPath(), returnType);
+ GeneratedTOBuilder genTOBuilder = addTOToTypeBuilder((UnionTypeDefinition) typeDef, typeBuilder, leaf,
+ parentModule);
+ if (genTOBuilder != null) {
+ returnType = createReturnTypeForUnion(genTOBuilder, typeDef, typeBuilder, parentModule);
+ // Store the inner type within the union so that we can find the reference for it
+ context.addInnerTypedefType(typeDef.getPath(), returnType);
+ }
} else if (typeDef instanceof BitsTypeDefinition) {
GeneratedTOBuilder genTOBuilder = addTOToTypeBuilder((BitsTypeDefinition) typeDef, typeBuilder, leaf,
parentModule);
returnType = new ReferencedTypeImpl(enumBuilder.getIdentifier());
typeProvider.putReferencedType(node.getPath(), returnType);
} else if (typeDef instanceof UnionTypeDefinition) {
- final UnionTypeDefinition unionDef = (UnionTypeDefinition)typeDef;
- returnType = addTOToTypeBuilder(unionDef, typeBuilder, node, parentModule);
+ final GeneratedTOBuilder genTOBuilder = addTOToTypeBuilder((UnionTypeDefinition)typeDef, typeBuilder,
+ node, parentModule);
+ if (genTOBuilder != null) {
+ returnType = createReturnTypeForUnion(genTOBuilder, typeDef, typeBuilder, parentModule);
+ }
} else if (typeDef instanceof BitsTypeDefinition) {
final GeneratedTOBuilder genTOBuilder = addTOToTypeBuilder((BitsTypeDefinition)typeDef, typeBuilder,
node, parentModule);
return true;
}
- private Type createReturnTypeForUnion(final GeneratedTOBuilder genTOBuilder, final UnionTypeDefinition typeDef,
+ private Type createReturnTypeForUnion(final GeneratedTOBuilder genTOBuilder, final TypeDefinition<?> typeDef,
final GeneratedTypeBuilder typeBuilder, final Module parentModule) {
- final GeneratedTOBuilder returnTypeBuilder = typeProvider.newGeneratedTOBuilder(genTOBuilder.getIdentifier());
- returnTypeBuilder.setIsUnion(true);
- addCodegenInformation(returnTypeBuilder, parentModule, typeDef);
- returnTypeBuilder.setSchemaPath(typeDef.getPath());
- returnTypeBuilder.setModuleName(parentModule.getName());
- final GeneratedTransferObject returnType = returnTypeBuilder.build();
+ final GeneratedTOBuilder returnType = typeProvider.newGeneratedTOBuilder(genTOBuilder.getIdentifier());
+
+ addCodegenInformation(returnType, parentModule, typeDef);
+ returnType.setSchemaPath(typeDef.getPath());
+ returnType.setModuleName(parentModule.getName());
genTOBuilder.setTypedef(true);
genTOBuilder.setIsUnion(true);
AbstractTypeProvider.addUnitsToGenTO(genTOBuilder, typeDef.getUnits().orElse(null));
- createUnionBuilder(genTOBuilder, typeBuilder, returnType, parentModule);
- return returnType;
+
+
+ final GeneratedTOBuilder unionBuilder = createUnionBuilder(genTOBuilder, typeBuilder);
+
+
+ final MethodSignatureBuilder method = unionBuilder.addMethod("getDefaultInstance");
+ method.setReturnType(returnType);
+ method.addParameter(Types.STRING, "defaultValue");
+ method.setAccessModifier(AccessModifier.PUBLIC);
+ method.setStatic(true);
+
+ final Set<Type> types = typeProvider.getAdditionalTypes().get(parentModule);
+ if (types == null) {
+ typeProvider.getAdditionalTypes().put(parentModule,
+ Sets.newHashSet(unionBuilder.build()));
+ } else {
+ types.add(unionBuilder.build());
+ }
+ return returnType.build();
}
- private void createUnionBuilder(final GeneratedTOBuilder genTOBuilder, final GeneratedTypeBuilder typeBuilder,
- final GeneratedTransferObject returnType, final Module parentModule) {
+ private GeneratedTOBuilder createUnionBuilder(final GeneratedTOBuilder genTOBuilder,
+ final GeneratedTypeBuilder typeBuilder) {
final StringBuilder sb = new StringBuilder();
// Append enclosing path hierarchy without dots
final GeneratedTOBuilder unionBuilder = typeProvider.newGeneratedTOBuilder(
JavaTypeName.create(typeBuilder.getPackageName(), sb.toString()));
unionBuilder.setIsUnionBuilder(true);
-
- final MethodSignatureBuilder method = unionBuilder.addMethod("getDefaultInstance");
- method.setReturnType(returnType);
- method.addParameter(Types.STRING, "defaultValue");
- method.setAccessModifier(AccessModifier.PUBLIC);
- method.setStatic(true);
-
- final GeneratedTransferObject unionBuilderType = unionBuilder.build();
- final Set<Type> types = typeProvider.getAdditionalTypes().get(parentModule);
- if (types == null) {
- typeProvider.getAdditionalTypes().put(parentModule, Sets.newHashSet(unionBuilderType));
- } else {
- types.add(unionBuilderType);
- }
+ return unionBuilder;
}
private GeneratedTypeBuilder addDefaultInterfaceDefinition(final ModuleContext context,
return addDefaultInterfaceDefinition(packageName, schemaNode, childOf, context);
}
+
/**
* Instantiates generated type builder with <code>packageName</code> and
* <code>schemaNode</code>.
* parent module
* @return generated TO builder for <code>typeDef</code>
*/
- private Type addTOToTypeBuilder(final UnionTypeDefinition typeDef,
+ private GeneratedTOBuilder addTOToTypeBuilder(final UnionTypeDefinition typeDef,
final GeneratedTypeBuilder typeBuilder, final DataSchemaNode leaf, final Module parentModule) {
final List<GeneratedTOBuilder> types = typeProvider.provideGeneratedTOBuildersForUnionTypeDef(
typeBuilder.getIdentifier().createEnclosed(BindingMapping.getClassName(leaf.getQName())),
checkState(!types.isEmpty(), "No GeneratedTOBuilder objects generated from union %s", typeDef);
final List<GeneratedTOBuilder> genTOBuilders = new ArrayList<>(types);
final GeneratedTOBuilder resultTOBuilder = types.remove(0);
- types.forEach(resultTOBuilder::addEnclosingTransferObject);
- genTOBuilders.forEach(typeBuilder::addEnclosingTransferObject);
-
- for (GeneratedTOBuilder builder : types) {
- if (builder.isUnion()) {
- final GeneratedTransferObject type = builder.build();
- createUnionBuilder(builder, typeBuilder, type, parentModule);
- }
+ for (final GeneratedTOBuilder genTOBuilder : types) {
+ resultTOBuilder.addEnclosingTransferObject(genTOBuilder);
}
- return createReturnTypeForUnion(resultTOBuilder, typeDef, typeBuilder, parentModule);
+ final GeneratedPropertyBuilder genPropBuilder = resultTOBuilder.addProperty("value");
+ genPropBuilder.setReturnType(Types.CHAR_ARRAY);
+ resultTOBuilder.addEqualsIdentity(genPropBuilder);
+ resultTOBuilder.addHashIdentity(genPropBuilder);
+ resultTOBuilder.addToStringProperty(genPropBuilder);
+ processEnclosedTOBuilderes(typeBuilder, genTOBuilders);
+ return resultTOBuilder;
}
/**
}
+ private static GeneratedTOBuilder processEnclosedTOBuilderes(final GeneratedTypeBuilder typeBuilder,
+ final List<GeneratedTOBuilder> genTOBuilders) {
+ for (final GeneratedTOBuilder genTOBuilder : genTOBuilders) {
+ typeBuilder.addEnclosingTransferObject(genTOBuilder);
+ }
+ return genTOBuilders.get(0);
+ }
+
/**
* Adds the implemented types to type builder.
*