import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
import java.util.stream.Collectors;
import org.opendaylight.mdsal.binding.javav2.generator.util.AbstractBaseType;
import org.opendaylight.mdsal.binding.javav2.model.api.AnnotationType;
import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedType;
import org.opendaylight.mdsal.binding.javav2.model.api.MethodSignature;
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.GeneratedTOBuilder;
import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedTypeBuilder;
import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.MethodSignatureBuilder;
+import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingNamespaceType;
@Beta
abstract class AbstractGeneratedType extends AbstractBaseType implements GeneratedType {
private final Type parent;
private final Type parentTypeForBuilder;
- private final String comment;
+ private final TypeComment comment;
private final List<AnnotationType> annotations;
private final List<Type> implementsTypes;
private final List<Enumeration> enumerations;
private final List<GeneratedType> enclosedTypes;
private final List<GeneratedProperty> properties;
private final boolean isAbstract;
+ private final YangSourceDefinition definition;
+ private final BindingNamespaceType namespaceType;
public AbstractGeneratedType(final AbstractGeneratedTypeBuilder<?> builder) {
super(builder.getPackageName(), builder.getName(), true, null);
builder.getEnclosedTransferObjects());
this.properties = toUnmodifiableProperties(builder.getProperties());
this.isAbstract = builder.isAbstract();
- }
-
- public AbstractGeneratedType(final Type parent, final String packageName, final String name, final String comment,
- final List<AnnotationTypeBuilder> annotationBuilders, final boolean isAbstract,
- final List<Type> implementsTypes, final List<GeneratedTypeBuilder> enclosedGenTypeBuilders,
- final List<GeneratedTOBuilder> enclosedGenTOBuilders, final List<EnumBuilder> enumBuilders,
- final List<Constant> constants, final List<MethodSignatureBuilder> methodBuilders,
- final List<GeneratedPropertyBuilder> propertyBuilders, final Type parentTypeForBuilder) {
- //TODO: not called by actual codebase, fix this up (provide context) if needed - 07/20/2017
- super(packageName, name, null);
- this.parent = parent;
- this.parentTypeForBuilder = parentTypeForBuilder;
- this.comment = comment;
- this.annotations = toUnmodifiableAnnotations(annotationBuilders);
- this.implementsTypes = makeUnmodifiable(implementsTypes);
- this.constants = makeUnmodifiable(constants);
- this.enumerations = toUnmodifiableEnumerations(enumBuilders);
- this.methodSignatures = toUnmodifiableMethods(methodBuilders);
- this.enclosedTypes = toUnmodifiableEnclosedTypes(enclosedGenTypeBuilders, enclosedGenTOBuilders);
- this.properties = toUnmodifiableProperties(propertyBuilders);
- this.isAbstract = isAbstract;
+ this.definition = builder.getYangSourceDefinition().orElse(null);
+ this.namespaceType = builder.getBindingNamespaceType();
}
protected static final <T> List<T> makeUnmodifiable(final List<T> list) {
private static List<GeneratedType> toUnmodifiableEnclosedTypes(final List<GeneratedTypeBuilder> enclosedGenTypeBuilders,
final List<GeneratedTOBuilder> enclosedGenTOBuilders) {
final ArrayList<GeneratedType> enclosedTypesList = new ArrayList<>(enclosedGenTypeBuilders.size() + enclosedGenTOBuilders.size());
- enclosedTypesList.addAll(enclosedGenTypeBuilders.stream().filter(builder -> builder != null).map(GeneratedTypeBuilder::toInstance).collect(Collectors.toList()));
+ enclosedTypesList.addAll(enclosedGenTypeBuilders.stream().filter(Objects::nonNull).map(GeneratedTypeBuilder::toInstance).collect(Collectors.toList()));
- enclosedTypesList.addAll(enclosedGenTOBuilders.stream().filter(builder -> builder != null).map(GeneratedTOBuilder::toInstance).collect(Collectors.toList()));
+ enclosedTypesList.addAll(enclosedGenTOBuilders.stream().filter(Objects::nonNull).map(GeneratedTOBuilder::toInstance).collect(Collectors.toList()));
return makeUnmodifiable(enclosedTypesList);
}
}
@Override
- public String getComment() {
+ public final TypeComment getComment() {
return this.comment;
}
return this.properties;
}
+ @Override
+ public final Optional<YangSourceDefinition> getYangSourceDefinition() {
+ return Optional.ofNullable(definition);
+ }
+
+ @Override
+ public BindingNamespaceType getBindingNamespaceType() {
+ return this.namespaceType;
+ }
+
@Override
public String toString() {
final StringBuilder builder = new StringBuilder();
} else {
builder.append(", parent=null");
}
- builder.append(", comment=");
- builder.append(this.comment);
+ final TypeComment comment = getComment();
+ if (comment != null) {
+ builder.append(", comment=");
+ builder.append(comment.getJavadoc());
+ }
builder.append(", annotations=");
builder.append(this.annotations);
builder.append(", enclosedTypes=");