import com.google.common.collect.ImmutableList;
import java.util.List;
import java.util.Objects;
+import java.util.Optional;
+import org.opendaylight.mdsal.binding.javav2.generator.context.ModuleContext;
import org.opendaylight.mdsal.binding.javav2.generator.util.AbstractBaseType;
import org.opendaylight.mdsal.binding.javav2.model.api.AccessModifier;
import org.opendaylight.mdsal.binding.javav2.model.api.Constant;
import org.opendaylight.mdsal.binding.javav2.model.api.Type;
+import org.opendaylight.mdsal.binding.javav2.model.api.TypeComment;
+import org.opendaylight.mdsal.binding.javav2.model.api.YangSourceDefinition;
import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.AnnotationTypeBuilder;
import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.EnumBuilder;
import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedPropertyBuilder;
import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedTypeBuilder;
import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedTypeBuilderBase;
import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.MethodSignatureBuilder;
+import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingNamespaceType;
import org.opendaylight.yangtools.util.LazyCollections;
@Beta
private final List<GeneratedTypeBuilder> enclosedTypes = ImmutableList.of();
private List<GeneratedTOBuilder> enclosedTransferObjects = ImmutableList.of();
private List<GeneratedPropertyBuilder> properties = ImmutableList.of();
- private String comment = "";
+ private TypeComment comment;
private boolean isAbstract;
private Type parentTypeForBuilder;
+ private YangSourceDefinition yangSourceDefinition;
+ private BindingNamespaceType namespaceType;
- protected AbstractGeneratedTypeBuilder(final String packageName, final String name) {
- super(packageName, name);
+ protected AbstractGeneratedTypeBuilder(final String packageName, final String name, ModuleContext context) {
+ super(packageName, name, context);
}
- protected AbstractGeneratedTypeBuilder(final String packageName, final String name, final boolean isNormalized) {
- super(packageName, name, true);
+ protected AbstractGeneratedTypeBuilder(final String packageName, final String name, final boolean isNormalized,
+ ModuleContext context) {
+ super(packageName, name, true, null);
}
- protected AbstractGeneratedTypeBuilder(final String packageName, final String name,
- final boolean isPkNameNormalized,
- final boolean isTypeNormalized) {
- super(packageName, name, isPkNameNormalized, isTypeNormalized);
+ protected AbstractGeneratedTypeBuilder(final String packageName, final String name, final boolean isPkNameNormalized,
+ final boolean isTypeNormalized, ModuleContext context) {
+ super(packageName, name, isPkNameNormalized, isTypeNormalized, context);
}
- protected String getComment() {
- return comment;
+ protected TypeComment getComment() {
+ return this.comment;
}
protected List<AnnotationTypeBuilder> getAnnotations() {
@Override
public GeneratedTOBuilder addEnclosingTransferObject(final String name) {
Preconditions.checkArgument(name != null, "Name for Enclosing Generated Transfer Object cannot be null!");
- GeneratedTOBuilder builder = new GeneratedTOBuilderImpl(getFullyQualifiedName(), name);
+ GeneratedTOBuilder builder = new GeneratedTOBuilderImpl(getFullyQualifiedName(), name, true);
Preconditions.checkArgument(!enclosedTransferObjects.contains(builder), "This generated type already contains equal enclosing transfer object.");
enclosedTransferObjects = LazyCollections.lazyAdd(enclosedTransferObjects, builder);
}
@Override
- public T addComment(final String comment) {
- this.comment = comment;
+ public T addComment(final TypeComment comment) {
+ this.comment = Preconditions.checkNotNull(comment);
return thisInstance();
}
return constant;
}
+
+
@Override
public Type setParentTypeForBuilder(Type type) {
return this.parentTypeForBuilder = type;
}
+ @Override
+ public BindingNamespaceType getBindingNamespaceType() {
+ return namespaceType;
+ }
+
+ @Override
+ public void setBindingNamespaceType(BindingNamespaceType namespaceType) {
+ this.namespaceType = namespaceType;
+ }
+
public boolean containsConstant(final String name) {
Preconditions.checkArgument(name != null, "Parameter name can't be null");
for (Constant constant : constants) {
}
@Override
- public EnumBuilder addEnumeration(final String name) {
+ public EnumBuilder addEnumeration(final String name, ModuleContext context) {
Preconditions.checkArgument(name != null, "Name of enumeration cannot be null!");
- final EnumBuilder builder = new EnumerationBuilderImpl(getFullyQualifiedName(), name, true, false);
+ final EnumBuilder builder = new EnumerationBuilderImpl(getFullyQualifiedName(), name, true, false,
+ context);
Preconditions.checkArgument(!enumDefinitions.contains(builder), "This generated type already contains equal enumeration.");
enumDefinitions = LazyCollections.lazyAdd(enumDefinitions, builder);
return false;
}
+ @Override
+ public Optional<YangSourceDefinition> getYangSourceDefinition() {
+ return Optional.ofNullable(yangSourceDefinition);
+ }
+
+
+ @Override
+ public void setYangSourceDefinition(final YangSourceDefinition definition) {
+ yangSourceDefinition = Preconditions.checkNotNull(definition);
+ }
+
@Override
public int hashCode() {
return Objects.hash(getName(), getPackageName());
return null;
}
+ @Override
public Type getParentTypeForBuilder() {
return parentTypeForBuilder;
}