final boolean isTypedef = this instanceof TypedefGenerator;
final QName arg = type.argument();
if (TypeDefinitions.BITS.equals(arg)) {
- return createBits(builderFactory, typeName(), currentModule(), extractTypeDefinition(), isTypedef);
+ return createBits(builderFactory, statement(), typeName(), currentModule(), extractTypeDefinition(),
+ isTypedef);
} else if (TypeDefinitions.ENUMERATION.equals(arg)) {
- return createEnumeration(builderFactory, typeName(), currentModule(),
+ return createEnumeration(builderFactory, statement(), typeName(), currentModule(),
(EnumTypeDefinition) extractTypeDefinition());
} else if (TypeDefinitions.UNION.equals(arg)) {
final List<GeneratedType> tmp = new ArrayList<>(1);
auxiliaryGeneratedTypes = List.copyOf(tmp);
return ret;
} else {
- return createSimple(builderFactory, typeName(), currentModule(),
+ return createSimple(builderFactory, statement(), typeName(), currentModule(),
verifyNotNull(SIMPLE_TYPES.get(arg), "Unhandled type %s", arg), extractTypeDefinition());
}
}
private static @NonNull GeneratedTransferObject createBits(final TypeBuilderFactory builderFactory,
- final JavaTypeName typeName, final ModuleGenerator module, final TypeDefinition<?> typedef,
- final boolean isTypedef) {
+ final EffectiveStatement<?, ?> definingStatement, final JavaTypeName typeName, final ModuleGenerator module,
+ final TypeDefinition<?> typedef, final boolean isTypedef) {
final GeneratedTOBuilder builder = builderFactory.newGeneratedTOBuilder(typeName);
builder.setTypedef(isTypedef);
builder.addImplementsType(BindingTypes.TYPE_OBJECT);
builder.setBaseType(typedef);
+ YangSourceDefinition.of(module.statement(), definingStatement).ifPresent(builder::setYangSourceDefinition);
for (Bit bit : ((BitsTypeDefinition) typedef).getBits()) {
final String name = bit.getName();
}
private static @NonNull Enumeration createEnumeration(final TypeBuilderFactory builderFactory,
- final JavaTypeName typeName, final ModuleGenerator module, final EnumTypeDefinition typedef) {
+ final EffectiveStatement<?, ?> definingStatement, final JavaTypeName typeName,
+ final ModuleGenerator module, final EnumTypeDefinition typedef) {
// TODO units for typedef enum
final AbstractEnumerationBuilder builder = builderFactory.newEnumerationBuilder(typeName);
+ YangSourceDefinition.of(module.statement(), definingStatement).ifPresent(builder::setYangSourceDefinition);
typedef.getDescription().map(BindingGeneratorUtil::encodeAngleBrackets)
.ifPresent(builder::setDescription);
}
private static @NonNull GeneratedType createSimple(final TypeBuilderFactory builderFactory,
- final JavaTypeName typeName, final ModuleGenerator module, final Type javaType,
- final TypeDefinition<?> typedef) {
+ final EffectiveStatement<?, ?> definingStatement, final JavaTypeName typeName, final ModuleGenerator module,
+ final Type javaType, final TypeDefinition<?> typedef) {
final String moduleName = module.statement().argument().getLocalName();
final GeneratedTOBuilder builder = builderFactory.newGeneratedTOBuilder(typeName);
builder.setTypedef(true);
builder.addImplementsType(BindingTypes.scalarTypeObject(javaType));
+ YangSourceDefinition.of(module.statement(), definingStatement).ifPresent(builder::setYangSourceDefinition);
final GeneratedPropertyBuilder genPropBuilder = builder.addProperty(TypeConstants.VALUE_PROP);
genPropBuilder.setReturnType(javaType);
propSource = subUnionName.simpleName();
generatedType = subUnion;
} else if (TypeDefinitions.ENUMERATION.equals(subName)) {
- final Enumeration subEnumeration = createEnumeration(builderFactory,
+ final Enumeration subEnumeration = createEnumeration(builderFactory, definingStatement,
typeName.createEnclosed(BindingMapping.getClassName(localName), "$"), module,
(EnumTypeDefinition) subType.getTypeDefinition());
builder.addEnumeration(subEnumeration);
generatedType = subEnumeration;
} else if (TypeDefinitions.BITS.equals(subName)) {
- final GeneratedTransferObject subBits = createBits(builderFactory,
+ final GeneratedTransferObject subBits = createBits(builderFactory, definingStatement,
typeName.createEnclosed(BindingMapping.getClassName(localName), "$"), module,
subType.getTypeDefinition(), isTypedef);
builder.addEnclosingTransferObject(subBits);
private String reference;
private String moduleName;
private SchemaPath schemaPath;
+ private YangSourceDefinition definition;
public CodegenEnumerationBuilder(final JavaTypeName identifier) {
super(identifier);
@Override
public void setDescription(final String description) {
this.description = description;
+ }
+ @Override
+ public void setYangSourceDefinition(final YangSourceDefinition yangSourceDefinition) {
+ this.definition = yangSourceDefinition;
}
@Override
private final String reference;
private final String moduleName;
private final SchemaPath schemaPath;
+ private final YangSourceDefinition definition;
EnumerationImpl(final CodegenEnumerationBuilder builder) {
super(builder);
- this.description = builder.description;
- this.moduleName = builder.moduleName;
- this.schemaPath = builder.schemaPath;
- this.reference = builder.reference;
+ description = builder.description;
+ moduleName = builder.moduleName;
+ schemaPath = builder.schemaPath;
+ reference = builder.reference;
+ definition = builder.definition;
}
@Override
@Override
public String getDescription() {
- return this.description;
+ return description;
}
@Override
public String getReference() {
- return this.reference;
+ return reference;
}
@Override
public Iterable<QName> getSchemaPath() {
- return this.schemaPath.getPathFromRoot();
+ return schemaPath.getPathFromRoot();
}
@Override
public String getModuleName() {
- return this.moduleName;
+ return moduleName;
}
@Override
public Optional<YangSourceDefinition> getYangSourceDefinition() {
- return Optional.empty();
+ return Optional.ofNullable(definition);
}
}
}