From 6424cb567468813dcc20dd0d77384a410fa5ec19 Mon Sep 17 00:00:00 2001 From: Tony Tkacik Date: Fri, 23 Aug 2013 16:30:53 +0200 Subject: [PATCH] Added NotificationListener interfaces Signed-off-by: Tony Tkacik --- .../generator/impl/BindingGeneratorImpl.java | 38 ++-- .../binding/yang/types/TypeProviderImpl.java | 4 +- .../builder/AbstractGeneratedTypeBuilder.java | 38 ++-- .../builder/AbstractTypeMemberBuilder.java | 16 +- .../builder/GeneratedPropertyBuilderImpl.java | 10 +- .../type/builder/GeneratedTOBuilderImpl.java | 25 ++- .../builder/GeneratedTypeBuilderImpl.java | 8 +- .../builder/MethodSignatureBuilderImpl.java | 13 +- .../builder/GeneratedPropertyBuilder.java | 4 +- .../api/type/builder/GeneratedTOBuilder.java | 21 +- .../type/builder/GeneratedTypeBuilder.java | 179 +----------------- .../builder/GeneratedTypeBuilderBase.java | 168 ++++++++++++++++ .../type/builder/MethodSignatureBuilder.java | 6 +- .../api/type/builder/TypeMemberBuilder.java | 10 +- 14 files changed, 289 insertions(+), 251 deletions(-) create mode 100644 code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/GeneratedTypeBuilderBase.java diff --git a/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.java b/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.java index 452811eb5e..f6e96d8301 100644 --- a/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.java +++ b/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.java @@ -21,12 +21,14 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.Future; +import org.opendaylight.yangtools.binding.generator.util.BindingTypes; import org.opendaylight.yangtools.binding.generator.util.ReferencedTypeImpl; import org.opendaylight.yangtools.binding.generator.util.Types; import org.opendaylight.yangtools.binding.generator.util.generated.type.builder.GeneratedTOBuilderImpl; import org.opendaylight.yangtools.binding.generator.util.generated.type.builder.GeneratedTypeBuilderImpl; import org.opendaylight.yangtools.sal.binding.generator.api.BindingGenerator; import org.opendaylight.yangtools.sal.binding.generator.spi.TypeProvider; +import org.opendaylight.yangtools.sal.binding.model.api.AccessModifier; import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject; import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType; import org.opendaylight.yangtools.sal.binding.model.api.ParameterizedType; @@ -611,11 +613,18 @@ public final class BindingGeneratorImpl implements BindingGenerator { throw new IllegalArgumentException("Reference to Set of Notification Definitions in module " + module.getName() + " cannot be NULL."); } - - final String basePackageName = moduleNamespaceToPackageName(module); - final List genNotifyTypes = new ArrayList<>(); final Set notifications = module.getNotifications(); - + if(notifications.isEmpty()) return Collections.emptyList(); + + final GeneratedTypeBuilder listenerInterface = moduleTypeBuilder(module, "Listener"); + listenerInterface.addImplementsType(BindingTypes.NOTIFICATION_LISTENER); + + + + final String basePackageName = moduleNamespaceToPackageName(module); + final List generatedTypes = new ArrayList<>(); + + for (final NotificationDefinition notification : notifications) { if (notification != null) { DataNodeIterator it = new DataNodeIterator(notification); @@ -623,25 +632,32 @@ public final class BindingGeneratorImpl implements BindingGenerator { // Containers for (ContainerSchemaNode node : it.allContainers()) { if (!node.isAddedByUses()) { - genNotifyTypes.add(containerToGenType(basePackageName, node)); + generatedTypes.add(containerToGenType(basePackageName, node)); } } // Lists for (ListSchemaNode node : it.allLists()) { if (!node.isAddedByUses()) { - genNotifyTypes.addAll(listToGenType(basePackageName, node)); + generatedTypes.addAll(listToGenType(basePackageName, node)); } } - final GeneratedTypeBuilder notificationTypeBuilder = addDefaultInterfaceDefinition(basePackageName, + final GeneratedTypeBuilder notificationInterface = addDefaultInterfaceDefinition(basePackageName, notification); - notificationTypeBuilder.addImplementsType(Types + notificationInterface.addImplementsType(Types .typeForClass(org.opendaylight.yangtools.yang.binding.Notification.class)); // Notification object - resolveDataSchemaNodes(basePackageName, notificationTypeBuilder, notification.getChildNodes()); - genNotifyTypes.add(notificationTypeBuilder.toInstance()); + resolveDataSchemaNodes(basePackageName, notificationInterface, notification.getChildNodes()); + + listenerInterface.addMethod("on"+notificationInterface.getName()) // + .setAccessModifier(AccessModifier.PUBLIC) + .addParameter(notificationInterface, "notification") + .setReturnType(Types.VOID); + + generatedTypes.add(notificationInterface.toInstance()); } } - return genNotifyTypes; + generatedTypes.add(listenerInterface.toInstance()); + return generatedTypes; } /** diff --git a/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/yang/types/TypeProviderImpl.java b/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/yang/types/TypeProviderImpl.java index 1b9abbc652..75d10a82c8 100644 --- a/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/yang/types/TypeProviderImpl.java +++ b/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/yang/types/TypeProviderImpl.java @@ -33,6 +33,7 @@ import org.opendaylight.yangtools.sal.binding.model.api.type.builder.EnumBuilder import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedPropertyBuilder; import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTOBuilder; import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTypeBuilder; +import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTypeBuilderBase; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode; @@ -492,7 +493,7 @@ public final class TypeProviderImpl implements TypeProvider { * */ private Enumeration addInnerEnumerationToTypeBuilder(final EnumTypeDefinition enumTypeDef, final String enumName, - final GeneratedTypeBuilder typeBuilder) { + final GeneratedTypeBuilderBase typeBuilder) { Preconditions.checkArgument(enumTypeDef != null, "EnumTypeDefinition reference cannot be NULL!"); Preconditions.checkArgument(enumTypeDef.getValues() != null, "EnumTypeDefinition MUST contain at least ONE value definition!"); @@ -647,7 +648,6 @@ public final class TypeProviderImpl implements TypeProvider { private GeneratedTransferObject wrapJavaTypeIntoTO(final String basePackageName, final TypeDefinition typedef, final Type javaType) { if (javaType != null) { - final String typedefName = typedef.getQName().getLocalName(); final String propertyName = "value"; final GeneratedTOBuilder genTOBuilder = typedefToTransferObject(basePackageName, typedef); diff --git a/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/AbstractGeneratedTypeBuilder.java b/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/AbstractGeneratedTypeBuilder.java index 1eb60fc5db..f70e1f88e5 100644 --- a/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/AbstractGeneratedTypeBuilder.java +++ b/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/AbstractGeneratedTypeBuilder.java @@ -16,7 +16,7 @@ import org.opendaylight.yangtools.sal.binding.model.api.type.builder.*; import java.util.ArrayList; import java.util.List; -abstract class AbstractGeneratedTypeBuilder extends AbstractBaseType implements GeneratedTypeBuilder { +abstract class AbstractGeneratedTypeBuilder> extends AbstractBaseType implements GeneratedTypeBuilderBase { private String comment = ""; @@ -26,7 +26,7 @@ abstract class AbstractGeneratedTypeBuilder extends AbstractBaseType implements private final List constants = new ArrayList<>(); private final List methodDefinitions = new ArrayList<>(); private final List enclosedTypes = new ArrayList<>(); - private final List enclosingTransferObjects = new ArrayList<>(); + private final List enclosedTransferObjects = new ArrayList<>(); private final List properties = new ArrayList<>(); private boolean isAbstract; @@ -67,40 +67,34 @@ abstract class AbstractGeneratedTypeBuilder extends AbstractBaseType implements } protected List getEnclosedTransferObjects() { - return enclosingTransferObjects; - } - - @Override - public GeneratedTypeBuilder addEnclosingType(String name) { - if (name == null) { - throw new IllegalArgumentException("Name for Enclosing Generated Type cannot be null!"); - } - GeneratedTypeBuilder builder = new GeneratedTOBuilderImpl(getFullyQualifiedName(), name); - enclosedTypes.add(builder); - return builder; + return enclosedTransferObjects; } + abstract protected T thisInstance(); + @Override public GeneratedTOBuilder addEnclosingTransferObject(String name) { if (name == null) { throw new IllegalArgumentException("Name for Enclosing Generated Transfer Object cannot be null!"); } GeneratedTOBuilder builder = new GeneratedTOBuilderImpl(getFullyQualifiedName(), name); - enclosingTransferObjects.add(builder); + enclosedTransferObjects.add(builder); return builder; } @Override - public void addEnclosingTransferObject(final GeneratedTOBuilder genTOBuilder) { + public T addEnclosingTransferObject(final GeneratedTOBuilder genTOBuilder) { if (genTOBuilder == null) { throw new IllegalArgumentException("Parameter genTOBuilder cannot be null!"); } - enclosingTransferObjects.add(genTOBuilder); + enclosedTransferObjects.add(genTOBuilder); + return thisInstance(); } @Override - public void addComment(String comment) { + public T addComment(String comment) { this.comment = comment; + return thisInstance(); } @Override @@ -118,16 +112,18 @@ abstract class AbstractGeneratedTypeBuilder extends AbstractBaseType implements } @Override - public void setAbstract(boolean isAbstract) { + public T setAbstract(boolean isAbstract) { this.isAbstract = isAbstract; + return thisInstance(); } @Override - public boolean addImplementsType(Type genType) { + public T addImplementsType(Type genType) { if (genType == null) { throw new IllegalArgumentException("Type cannot be null"); } - return implementsTypes.add(genType); + implementsTypes.add(genType); + return thisInstance(); } @Override @@ -220,7 +216,7 @@ abstract class AbstractGeneratedTypeBuilder extends AbstractBaseType implements if (getClass() != obj.getClass()) { return false; } - AbstractGeneratedTypeBuilder other = (AbstractGeneratedTypeBuilder) obj; + AbstractGeneratedTypeBuilder other = (AbstractGeneratedTypeBuilder) obj; if (getName() == null) { if (other.getName() != null) { return false; diff --git a/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/AbstractTypeMemberBuilder.java b/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/AbstractTypeMemberBuilder.java index f4ca581661..02f6820824 100644 --- a/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/AbstractTypeMemberBuilder.java +++ b/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/AbstractTypeMemberBuilder.java @@ -16,7 +16,7 @@ import org.opendaylight.yangtools.sal.binding.model.api.type.builder.TypeMemberB import java.util.ArrayList; import java.util.List; -abstract class AbstractTypeMemberBuilder implements TypeMemberBuilder { +abstract class AbstractTypeMemberBuilder> implements TypeMemberBuilder { private final String name; private Type returnType; private final List annotationBuilders; @@ -68,33 +68,39 @@ abstract class AbstractTypeMemberBuilder implements TypeMemberBuilder { return name; } + protected abstract T thisInstance(); + @Override - public void setReturnType(Type returnType) { + public T setReturnType(Type returnType) { if (returnType == null) { throw new IllegalArgumentException("Return Type of member cannot be null!"); } this.returnType = returnType; + return thisInstance(); } @Override - public void setAccessModifier(AccessModifier modifier) { + public T setAccessModifier(AccessModifier modifier) { if (modifier == null) { throw new IllegalArgumentException("Access Modifier for member type cannot be null!"); } this.accessModifier = modifier; + return thisInstance(); } @Override - public void setComment(String comment) { + public T setComment(String comment) { if (comment == null) { this.comment = ""; } this.comment = comment; + return thisInstance(); } @Override - public void setFinal(boolean isFinal) { + public T setFinal(boolean isFinal) { this.isFinal = isFinal; + return thisInstance(); } protected List toAnnotationTypes() { diff --git a/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedPropertyBuilderImpl.java b/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedPropertyBuilderImpl.java index e92564e2bd..3089961a2b 100644 --- a/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedPropertyBuilderImpl.java +++ b/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedPropertyBuilderImpl.java @@ -14,7 +14,7 @@ import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedPr import java.util.List; -final class GeneratedPropertyBuilderImpl extends AbstractTypeMemberBuilder implements GeneratedPropertyBuilder { +final class GeneratedPropertyBuilderImpl extends AbstractTypeMemberBuilder implements GeneratedPropertyBuilder { private boolean isReadOnly; @@ -24,10 +24,16 @@ final class GeneratedPropertyBuilderImpl extends AbstractTypeMemberBuilder imple } @Override - public void setReadOnly(boolean isReadOnly) { + public GeneratedPropertyBuilderImpl setReadOnly(boolean isReadOnly) { this.isReadOnly = isReadOnly; + return this; } + @Override + protected GeneratedPropertyBuilderImpl thisInstance() { + return this; + } + @Override public GeneratedProperty toInstance(Type definingType) { final List annotations = toAnnotationTypes(); diff --git a/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedTOBuilderImpl.java b/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedTOBuilderImpl.java index 3f7ece81ca..3dfb58dc89 100644 --- a/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedTOBuilderImpl.java +++ b/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedTOBuilderImpl.java @@ -13,7 +13,7 @@ import org.opendaylight.yangtools.sal.binding.model.api.type.builder.*; import java.util.ArrayList; import java.util.List; -public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder implements GeneratedTOBuilder { +public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder implements GeneratedTOBuilder { private GeneratedTransferObject extendsType; private final List properties = new ArrayList<>(); @@ -28,11 +28,12 @@ public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder i } @Override - public void setExtendsType(final GeneratedTransferObject genTransObj) { + public GeneratedTOBuilder setExtendsType(final GeneratedTransferObject genTransObj) { if (genTransObj == null) { throw new IllegalArgumentException("Generated Transfer Object cannot be null!"); } extendsType = genTransObj; + return this; } @@ -59,20 +60,28 @@ public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder i } @Override - public boolean addEqualsIdentity(GeneratedPropertyBuilder property) { - return equalsProperties.add(property); + public GeneratedTOBuilder addEqualsIdentity(GeneratedPropertyBuilder property) { + equalsProperties.add(property); + return this; } @Override - public boolean addHashIdentity(GeneratedPropertyBuilder property) { - return hashProperties.add(property); + public GeneratedTOBuilder addHashIdentity(GeneratedPropertyBuilder property) { + hashProperties.add(property); + return this; } @Override - public boolean addToStringProperty(GeneratedPropertyBuilder property) { - return toStringProperties.add(property); + public GeneratedTOBuilder addToStringProperty(GeneratedPropertyBuilder property) { + toStringProperties.add(property); + return this; } + @Override + protected GeneratedTOBuilder thisInstance() { + return this; + } + @Override public GeneratedTransferObject toInstance() { return new GeneratedTransferObjectImpl(this); diff --git a/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedTypeBuilderImpl.java b/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedTypeBuilderImpl.java index ae7d332024..22d11e5384 100644 --- a/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedTypeBuilderImpl.java +++ b/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedTypeBuilderImpl.java @@ -9,8 +9,9 @@ package org.opendaylight.yangtools.binding.generator.util.generated.type.builder import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType; +import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTypeBuilder; -public final class GeneratedTypeBuilderImpl extends AbstractGeneratedTypeBuilder { +public final class GeneratedTypeBuilderImpl extends AbstractGeneratedTypeBuilder implements GeneratedTypeBuilder { public GeneratedTypeBuilderImpl(String packageName, String name) { super(packageName, name); @@ -47,6 +48,11 @@ public final class GeneratedTypeBuilderImpl extends AbstractGeneratedTypeBuilder builder.append("]"); return builder.toString(); } + + @Override + protected GeneratedTypeBuilderImpl thisInstance() { + return this; + } private static final class GeneratedTypeImpl extends AbstractGeneratedType { diff --git a/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/MethodSignatureBuilderImpl.java b/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/MethodSignatureBuilderImpl.java index f5782ad10b..8552804bcf 100644 --- a/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/MethodSignatureBuilderImpl.java +++ b/code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/MethodSignatureBuilderImpl.java @@ -15,7 +15,7 @@ import org.opendaylight.yangtools.sal.binding.model.api.MethodSignature; import org.opendaylight.yangtools.sal.binding.model.api.Type; import org.opendaylight.yangtools.sal.binding.model.api.type.builder.MethodSignatureBuilder; -final class MethodSignatureBuilderImpl extends AbstractTypeMemberBuilder implements MethodSignatureBuilder { +final class MethodSignatureBuilderImpl extends AbstractTypeMemberBuilder implements MethodSignatureBuilder { private final List parameters; private boolean isAbstract; @@ -26,15 +26,22 @@ final class MethodSignatureBuilderImpl extends AbstractTypeMemberBuilder impleme } @Override - public void setAbstract(boolean isAbstract) { + public MethodSignatureBuilder setAbstract(boolean isAbstract) { this.isAbstract = isAbstract; + return this; } @Override - public void addParameter(Type type, String name) { + public MethodSignatureBuilder addParameter(Type type, String name) { parameters.add(new MethodParameterImpl(name, type)); + return this; } +@Override + protected MethodSignatureBuilder thisInstance() { + return this; + } + @Override public MethodSignature toInstance(Type definingType) { final List annotations = toAnnotationTypes(); diff --git a/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/GeneratedPropertyBuilder.java b/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/GeneratedPropertyBuilder.java index b9a5dc3714..18467ab156 100644 --- a/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/GeneratedPropertyBuilder.java +++ b/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/GeneratedPropertyBuilder.java @@ -16,7 +16,7 @@ import org.opendaylight.yangtools.sal.binding.model.api.Type; * * @see GeneratedProperty */ -public interface GeneratedPropertyBuilder extends TypeMemberBuilder { +public interface GeneratedPropertyBuilder extends TypeMemberBuilder { /** * Sets isReadOnly flag for property. If property is marked as read only @@ -24,7 +24,7 @@ public interface GeneratedPropertyBuilder extends TypeMemberBuilder { * * @param isReadOnly Read Only property flag. */ - public void setReadOnly(final boolean isReadOnly); + public GeneratedPropertyBuilder setReadOnly(final boolean isReadOnly); /** * Returns new immutable instance of Generated diff --git a/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/GeneratedTOBuilder.java b/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/GeneratedTOBuilder.java index b4fafbf84b..b5807b9ed7 100644 --- a/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/GeneratedTOBuilder.java +++ b/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/GeneratedTOBuilder.java @@ -15,7 +15,7 @@ import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject; * * @see GeneratedTransferObject */ -public interface GeneratedTOBuilder extends GeneratedTypeBuilder { +public interface GeneratedTOBuilder extends GeneratedTypeBuilderBase { /** * Add Generated Transfer Object from which will be extended current @@ -28,8 +28,9 @@ public interface GeneratedTOBuilder extends GeneratedTypeBuilder { * * @param genTransObj * Generated Transfer Object + * @return This instance of builder */ - public void setExtendsType(final GeneratedTransferObject genTransObj); + public GeneratedTOBuilder setExtendsType(final GeneratedTransferObject genTransObj); /** * Add Property that will be part of equals definition.
@@ -38,10 +39,9 @@ public interface GeneratedTOBuilder extends GeneratedTypeBuilder { * * @param property * Generated Property Builder - * @return true if addition of Generated Property into list of - * equals properties is successful. + * @return This instance of builder */ - public boolean addEqualsIdentity(final GeneratedPropertyBuilder property); + public GeneratedTOBuilder addEqualsIdentity(final GeneratedPropertyBuilder property); /** * Add Property that will be part of hashCode definition.
@@ -50,10 +50,9 @@ public interface GeneratedTOBuilder extends GeneratedTypeBuilder { * * @param property * Generated Property Builder - * @return true if addition of Generated Property into list of - * hashCode properties is successful. + * @return This instance of builder */ - public boolean addHashIdentity(final GeneratedPropertyBuilder property); + public GeneratedTOBuilder addHashIdentity(final GeneratedPropertyBuilder property); /** * Add Property that will be part of toString definition.
@@ -62,12 +61,10 @@ public interface GeneratedTOBuilder extends GeneratedTypeBuilder { * * @param property * Generated Property Builder - * @return true if addition of Generated Property into list of - * toString properties is successful. + * @return This instance of builder */ - public boolean addToStringProperty(final GeneratedPropertyBuilder property); + public GeneratedTOBuilder addToStringProperty(final GeneratedPropertyBuilder property); - @Override public GeneratedTransferObject toInstance(); /** diff --git a/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/GeneratedTypeBuilder.java b/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/GeneratedTypeBuilder.java index d7d78f466c..4c79da50e1 100644 --- a/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/GeneratedTypeBuilder.java +++ b/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/GeneratedTypeBuilder.java @@ -17,186 +17,13 @@ import org.opendaylight.yangtools.sal.binding.model.api.Type; * * @see GeneratedType */ -public interface GeneratedTypeBuilder extends Type { - - /** - * Adds new Enclosing Type into definition of Generated Type and returns - * new Instance of Generated Type Builder.
- * There is no need of specifying of Package Name because enclosing Type is - * already defined inside Generated Type with specific package name.
- * The name of enclosing Type cannot be same as Name of parent type and if - * there is already defined enclosing type with the same name, the new - * enclosing type will simply overwrite the older definition.
- * If the name of enclosing type is null the method SHOULD - * throw {@link IllegalArgumentException} - * - * @param name - * Name of Enclosing Type - * @return new Instance of Generated Type Builder. - */ - public GeneratedTypeBuilder addEnclosingType(final String name); - - /** - * Adds new Enclosing Transfer Object into definition of Generated Type and - * returns new Instance of Generated TO Builder.
- * There is no need of specifying of Package Name because enclosing Type is - * already defined inside Generated Type with specific package name.
- * The name of enclosing Type cannot be same as Name of parent type and if - * there is already defined enclosing type with the same name, the new - * enclosing type will simply overwrite the older definition.
- * If the name of enclosing type is null the method SHOULD - * throw {@link IllegalArgumentException} - * - * @param name - * Name of Enclosing Type - * @return new Instance of Generated Type Builder. - */ - public GeneratedTOBuilder addEnclosingTransferObject(final String name); - - /** - * Adds new Enclosing Transfer Object genTOBuilder into - * definition of Generated Type - * - *
- * There is no need of specifying of Package Name because enclosing Type is - * already defined inside Generated Type with specific package name.
- * The name of enclosing Type cannot be same as Name of parent type and if - * there is already defined enclosing type with the same name, the new - * enclosing type will simply overwrite the older definition.
- * If the parameter genTOBuilder of enclosing type is - * null the method SHOULD throw - * {@link IllegalArgumentException} - * - * @param genTOBuilder Name of Enclosing Type - */ - public void addEnclosingTransferObject(final GeneratedTOBuilder genTOBuilder); - - /** - * Adds String definition of comment into Method Signature definition.
- * The comment String MUST NOT contain anny comment specific chars (i.e. - * "/**" or "//") just plain String text description. - * - * @param comment - * Comment String. - */ - public void addComment(final String comment); - - /** - * The method creates new AnnotationTypeBuilder containing specified package - * name an annotation name.
- * Neither the package name or annotation name can contain null - * references. In case that any of parameters contains null the - * method SHOULD thrown {@link IllegalArgumentException} - * - * @param packageName - * Package Name of Annotation Type - * @param name - * Name of Annotation Type - * @return new instance of Annotation Type Builder. - */ - public AnnotationTypeBuilder addAnnotation(final String packageName, final String name); - - /** - * Sets the abstract flag to define Generated Type as - * abstract type. - * - * @param isAbstract - * abstract flag - */ - public void setAbstract(boolean isAbstract); - - /** - * Add Type to implements. - * - * @param genType - * Type to implement - * @return true if the addition of type is successful. - */ - public boolean addImplementsType(final Type genType); - - /** - * Adds Constant definition and returns new Constant instance.
- * By definition Constant MUST be defined by return Type, Name and assigned - * value. The name SHOULD be defined with cpaital letters. Neither of method - * parameters can be null and the method SHOULD throw - * {@link IllegalArgumentException} if the contract is broken. - * - * @param type - * Constant Type - * @param name - * Name of Constant - * @param value - * Assigned Value - * @return new Constant instance. - */ - public Constant addConstant(final Type type, final String name, final Object value); - - /** - * Adds new Enumeration definition for Generated Type Builder and returns - * Enum Builder for specifying all Enum parameters.
- * If there is already Enumeration stored with the same name, the old enum - * will be simply overwritten byt new enum definition.
- * Name of Enumeration cannot be null, if it is - * null the method SHOULD throw - * {@link IllegalArgumentException} - * - * @param name - * Enumeration Name - * @return new instance of Enumeration Builder. - */ - public EnumBuilder addEnumeration(final String name); - - /** - * Add new Method Signature definition for Generated Type Builder and - * returns Method Signature Builder for specifying all Method parameters.
- * Name of Method cannot be null, if it is null - * the method SHOULD throw {@link IllegalArgumentException}
- * By Default the MethodSignatureBuilder SHOULD be pre-set as - * {@link MethodSignatureBuilder#setAbstract(true)}, - * {@link MethodSignatureBuilder#setFinal(false)} and - * {@link MethodSignatureBuilder#setAccessModifier(PUBLIC)} - * - * @param name - * Name of Method - * @return new instance of Method Signature Builder. - */ - public MethodSignatureBuilder addMethod(final String name); - - /** - * Checks if GeneratedTypeBuilder contains method with name - * methodName - * - * @param methodName - * is method name - */ - public boolean containsMethod(final String methodName); - - /** - * Add new Generated Property definition for Generated Transfer Object - * Builder and returns Generated Property Builder for specifying Property.
- * Name of Property cannot be null, if it is null - * the method SHOULD throw {@link IllegalArgumentException} - * - * @param name - * Name of Property - * @return new instance of Generated Property Builder. - */ - public GeneratedPropertyBuilder addProperty(final String name); - - /** - * Check whether GeneratedTOBuilder contains property with name - * name - * - * @param name - * of property which existance is checked - * @return true if property name exists in list of properties. - */ - public boolean containsProperty(final String name); - +public interface GeneratedTypeBuilder extends GeneratedTypeBuilderBase { + /** * Returns the new immutable instance of Generated Type. * * @return the new immutable instance of Generated Type. */ public GeneratedType toInstance(); + } diff --git a/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/GeneratedTypeBuilderBase.java b/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/GeneratedTypeBuilderBase.java new file mode 100644 index 0000000000..04bc913d63 --- /dev/null +++ b/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/GeneratedTypeBuilderBase.java @@ -0,0 +1,168 @@ +package org.opendaylight.yangtools.sal.binding.model.api.type.builder; + +import org.opendaylight.yangtools.sal.binding.model.api.Constant; +import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType; +import org.opendaylight.yangtools.sal.binding.model.api.Type; + +public interface GeneratedTypeBuilderBase > extends Type { + + /** + * Adds new Enclosing Transfer Object into definition of Generated Type and + * returns new Instance of Generated TO Builder.
+ * There is no need of specifying of Package Name because enclosing Type is + * already defined inside Generated Type with specific package name.
+ * The name of enclosing Type cannot be same as Name of parent type and if + * there is already defined enclosing type with the same name, the new + * enclosing type will simply overwrite the older definition.
+ * If the name of enclosing type is null the method SHOULD + * throw {@link IllegalArgumentException} + * + * @param name + * Name of Enclosing Type + * @return new Instance of Generated Type Builder. + */ + public GeneratedTOBuilder addEnclosingTransferObject(final String name); + + /** + * Adds new Enclosing Transfer Object genTOBuilder into + * definition of Generated Type + * + *
+ * There is no need of specifying of Package Name because enclosing Type is + * already defined inside Generated Type with specific package name.
+ * The name of enclosing Type cannot be same as Name of parent type and if + * there is already defined enclosing type with the same name, the new + * enclosing type will simply overwrite the older definition.
+ * If the parameter genTOBuilder of enclosing type is + * null the method SHOULD throw + * {@link IllegalArgumentException} + * + * @param genTOBuilder Name of Enclosing Type + */ + public T addEnclosingTransferObject(final GeneratedTOBuilder genTOBuilder); + + /** + * Adds String definition of comment into Method Signature definition.
+ * The comment String MUST NOT contain anny comment specific chars (i.e. + * "/**" or "//") just plain String text description. + * + * @param comment + * Comment String. + */ + public T addComment(final String comment); + + /** + * The method creates new AnnotationTypeBuilder containing specified package + * name an annotation name.
+ * Neither the package name or annotation name can contain null + * references. In case that any of parameters contains null the + * method SHOULD thrown {@link IllegalArgumentException} + * + * @param packageName + * Package Name of Annotation Type + * @param name + * Name of Annotation Type + * @return new instance of Annotation Type Builder. + */ + public AnnotationTypeBuilder addAnnotation(final String packageName, final String name); + + /** + * Sets the abstract flag to define Generated Type as + * abstract type. + * + * @param isAbstract + * abstract flag + */ + public T setAbstract(boolean isAbstract); + + /** + * Add Type to implements. + * + * @param genType + * Type to implement + * @return true if the addition of type is successful. + */ + public T addImplementsType(final Type genType); + + /** + * Adds Constant definition and returns new Constant instance.
+ * By definition Constant MUST be defined by return Type, Name and assigned + * value. The name SHOULD be defined with capital letters. Neither of method + * parameters can be null and the method SHOULD throw + * {@link IllegalArgumentException} if the contract is broken. + * + * @param type + * Constant Type + * @param name + * Name of Constant + * @param value + * Assigned Value + * @return new Constant instance. + */ + public Constant addConstant(final Type type, final String name, final Object value); + + /** + * Adds new Enumeration definition for Generated Type Builder and returns + * Enum Builder for specifying all Enum parameters.
+ * If there is already Enumeration stored with the same name, the old enum + * will be simply overwritten byt new enum definition.
+ * Name of Enumeration cannot be null, if it is + * null the method SHOULD throw + * {@link IllegalArgumentException} + * + * @param name + * Enumeration Name + * @return new instance of Enumeration Builder. + */ + public EnumBuilder addEnumeration(final String name); + + /** + * Add new Method Signature definition for Generated Type Builder and + * returns Method Signature Builder for specifying all Method parameters.
+ * Name of Method cannot be null, if it is null + * the method SHOULD throw {@link IllegalArgumentException}
+ * By Default the MethodSignatureBuilder SHOULD be pre-set as + * {@link MethodSignatureBuilder#setAbstract(true)}, + * {@link MethodSignatureBuilder#setFinal(false)} and + * {@link MethodSignatureBuilder#setAccessModifier(PUBLIC)} + * + * @param name + * Name of Method + * @return new instance of Method Signature Builder. + */ + public MethodSignatureBuilder addMethod(final String name); + + /** + * Checks if GeneratedTypeBuilder contains method with name + * methodName + * + * @param methodName + * is method name + */ + public boolean containsMethod(final String methodName); + + /** + * Add new Generated Property definition for Generated Transfer Object + * Builder and returns Generated Property Builder for specifying Property.
+ * Name of Property cannot be null, if it is null + * the method SHOULD throw {@link IllegalArgumentException} + * + * @param name + * Name of Property + * @return new instance of Generated Property Builder. + */ + public GeneratedPropertyBuilder addProperty(final String name); + + /** + * Check whether GeneratedTOBuilder contains property with name + * name + * + * @param name + * of property which existance is checked + * @return true if property name exists in list of properties. + */ + public boolean containsProperty(final String name); + + + +} diff --git a/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/MethodSignatureBuilder.java b/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/MethodSignatureBuilder.java index 4785410a6e..905d229392 100644 --- a/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/MethodSignatureBuilder.java +++ b/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/MethodSignatureBuilder.java @@ -28,7 +28,7 @@ import org.opendaylight.yangtools.sal.binding.model.api.Type; * * @see MethodSignature */ -public interface MethodSignatureBuilder extends TypeMemberBuilder { +public interface MethodSignatureBuilder extends TypeMemberBuilder { /** * Sets the flag for declaration of method as abstract or non abstract. If the flag isAbstract == true @@ -37,7 +37,7 @@ public interface MethodSignatureBuilder extends TypeMemberBuilder { * * @param isAbstract is abstract flag */ - public void setAbstract(boolean isAbstract); + public MethodSignatureBuilder setAbstract(boolean isAbstract); /** * Adds Parameter into the List of method parameters. Neither the Name or @@ -50,7 +50,7 @@ public interface MethodSignatureBuilder extends TypeMemberBuilder { * @param type Parameter Type * @param name Parameter Name */ - public void addParameter(final Type type, final String name); + public MethodSignatureBuilder addParameter(final Type type, final String name); /** * Returns new immutable instance of Method Signature. diff --git a/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/TypeMemberBuilder.java b/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/TypeMemberBuilder.java index 360a141a06..bfad711bb0 100644 --- a/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/TypeMemberBuilder.java +++ b/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/type/builder/TypeMemberBuilder.java @@ -6,7 +6,7 @@ import org.opendaylight.yangtools.sal.binding.model.api.Type; /** * */ -public interface TypeMemberBuilder { +public interface TypeMemberBuilder> { /** * The method creates new AnnotationTypeBuilder containing specified @@ -38,14 +38,14 @@ public interface TypeMemberBuilder { * * @param returnType Return Type of property. */ - public void setReturnType(final Type returnType); + public T setReturnType(final Type returnType); /** * Sets the access modifier of property. * * @param modifier Access Modifier value. */ - public void setAccessModifier(final AccessModifier modifier); + public T setAccessModifier(final AccessModifier modifier); /** * Adds String definition of comment into Method Signature definition. @@ -55,7 +55,7 @@ public interface TypeMemberBuilder { * * @param comment Comment String. */ - public void setComment(final String comment); + public T setComment(final String comment); /** * Sets the flag final for method signature. If this is set the method will be prohibited from overriding. @@ -65,5 +65,5 @@ public interface TypeMemberBuilder { * * @param isFinal Is Final */ - public void setFinal(final boolean isFinal); + public T setFinal(final boolean isFinal); } -- 2.36.6