From 2f8f56af98be1f58d14256e780e2a9a77c0cfc49 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 18 Dec 2019 11:23:33 +0100 Subject: [PATCH] Add BindingTypes.augmentation() This migrates Types.augmentationTypeFor() into BindingTypes, so we have proper separation. Change-Id: I6ff923be4b598714761ed60ca6a36037295b9ac5 Signed-off-by: Robert Varga --- .../generator/impl/AbstractTypeGenerator.java | 4 ++-- .../mdsal/binding/model/util/BindingTypes.java | 11 +++++++++++ .../mdsal/binding/model/util/Types.java | 9 ++++----- .../binding/model/util/BindingTypesTest.java | 15 ++++++++++++++- .../mdsal/binding/model/util/TypesTest.java | 4 ++++ 5 files changed, 35 insertions(+), 8 deletions(-) diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/AbstractTypeGenerator.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/AbstractTypeGenerator.java index 1b51e8b05f..9d6e853877 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/AbstractTypeGenerator.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/AbstractTypeGenerator.java @@ -26,6 +26,7 @@ import static org.opendaylight.mdsal.binding.model.util.BindingTypes.RPC_OUTPUT; import static org.opendaylight.mdsal.binding.model.util.BindingTypes.RPC_SERVICE; import static org.opendaylight.mdsal.binding.model.util.BindingTypes.action; import static org.opendaylight.mdsal.binding.model.util.BindingTypes.augmentable; +import static org.opendaylight.mdsal.binding.model.util.BindingTypes.augmentation; import static org.opendaylight.mdsal.binding.model.util.BindingTypes.childOf; import static org.opendaylight.mdsal.binding.model.util.BindingTypes.choiceIn; import static org.opendaylight.mdsal.binding.model.util.BindingTypes.identifiable; @@ -37,7 +38,6 @@ import static org.opendaylight.mdsal.binding.model.util.BindingTypes.opaqueObjec import static org.opendaylight.mdsal.binding.model.util.BindingTypes.rpcResult; import static org.opendaylight.mdsal.binding.model.util.Types.BOOLEAN; import static org.opendaylight.mdsal.binding.model.util.Types.STRING; -import static org.opendaylight.mdsal.binding.model.util.Types.augmentationTypeFor; import static org.opendaylight.mdsal.binding.model.util.Types.classType; import static org.opendaylight.mdsal.binding.model.util.Types.listTypeFor; import static org.opendaylight.mdsal.binding.model.util.Types.listenableFutureTypeFor; @@ -981,7 +981,7 @@ abstract class AbstractTypeGenerator { augTypeBuilder.addImplementsType(DATA_OBJECT); defaultImplementedInterace(augTypeBuilder); - augTypeBuilder.addImplementsType(augmentationTypeFor(targetTypeRef)); + augTypeBuilder.addImplementsType(augmentation(targetTypeRef)); annotateDeprecatedIfNecessary(augSchema, augTypeBuilder); addImplementedInterfaceFromUses(augSchema, augTypeBuilder); diff --git a/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/BindingTypes.java b/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/BindingTypes.java index 250ca03e22..a61359edf6 100644 --- a/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/BindingTypes.java +++ b/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/BindingTypes.java @@ -148,6 +148,17 @@ public final class BindingTypes { return parameterizedTypeFor(AUGMENTABLE, type); } + /** + * Specialize {@link Augmentation} for a particular type. + * + * @param type Type for which to specialize + * @return A parameterized type corresponding to {@code Augmentation} + * @throws NullPointerException if {@code type} is null + */ + public static @NonNull ParameterizedType augmentation(final Type type) { + return parameterizedTypeFor(AUGMENTATION, type); + } + /** * Specialize {@link ChildOf} for a particular type. * diff --git a/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/Types.java b/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/Types.java index 99137a9272..eefeaa26b0 100644 --- a/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/Types.java +++ b/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/Types.java @@ -34,7 +34,6 @@ import org.opendaylight.mdsal.binding.model.api.Restrictions; import org.opendaylight.mdsal.binding.model.api.Type; import org.opendaylight.mdsal.binding.model.api.WildcardType; import org.opendaylight.yangtools.concepts.Builder; -import org.opendaylight.yangtools.yang.binding.Augmentation; import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint; import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; @@ -64,8 +63,6 @@ public final class Types { private static final @NonNull ConcreteType SERIALIZABLE = typeForClass(Serializable.class); private static final @NonNull ConcreteType SET_TYPE = typeForClass(Set.class); - private static final @NonNull ConcreteType AUGMENTATION = typeForClass(Augmentation.class); - /** * It is not desirable to create instance of this class. */ @@ -260,12 +257,14 @@ public final class Types { * is valueType. * * @param valueType JAVA Type with actual parameter - * @return ParametrizedType reprezentation of raw type + * @return ParametrizedType representation of raw type * Augmentation with actual parameter * valueType + * @deprecated Use {@link BindingTypes#augmentation(Type)} instead. */ + @Deprecated(forRemoval = true) public static @NonNull ParameterizedType augmentationTypeFor(final Type valueType) { - return parameterizedTypeFor(AUGMENTATION, valueType); + return BindingTypes.augmentation(valueType); } public static @Nullable String getOuterClassName(final Type valueType) { diff --git a/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/BindingTypesTest.java b/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/BindingTypesTest.java index 79876b771b..f271337f9f 100644 --- a/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/BindingTypesTest.java +++ b/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/BindingTypesTest.java @@ -12,6 +12,7 @@ import static org.junit.Assert.assertNotNull; import static org.opendaylight.mdsal.binding.model.util.Types.typeForClass; import org.junit.Test; +import org.opendaylight.mdsal.binding.model.api.ParameterizedType; import org.opendaylight.yangtools.yang.binding.Augmentable; import org.opendaylight.yangtools.yang.binding.Augmentation; import org.opendaylight.yangtools.yang.binding.BaseIdentity; @@ -54,11 +55,23 @@ public class BindingTypesTest { @Test public void testAugmentable() { - assertNotNull(BindingTypes.augmentable(Types.objectType())); + ParameterizedType augmentableType = BindingTypes.augmentable(Types.objectType()); + assertEquals("Augmentable", augmentableType.getName()); } @Test public void testChildOf() { assertNotNull(BindingTypes.childOf(Types.objectType())); } + + @Test(expected = NullPointerException.class) + public void testAugmentationNull() { + BindingTypes.augmentation(null); + } + + @Test + public void testAugmentation() { + ParameterizedType augmentationType = BindingTypes.augmentation(Types.objectType()); + assertEquals("Augmentation", augmentationType.getName()); + } } \ No newline at end of file diff --git a/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/TypesTest.java b/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/TypesTest.java index e9546eca58..0ff2d4077a 100644 --- a/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/TypesTest.java +++ b/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/TypesTest.java @@ -72,22 +72,26 @@ public class TypesTest { assertEquals("WildcardTypeTest", wildcardType.getName()); } + @Deprecated @Test(expected = NullPointerException.class) public void testAugmentableTypeForNull() { Types.augmentableTypeFor(null); } + @Deprecated @Test(expected = NullPointerException.class) public void augmentationTypeForNull() { Types.augmentationTypeFor(null); } + @Deprecated @Test public void testAugmentableTypeFor() { ParameterizedType augmentableType = Types.augmentableTypeFor(Types.objectType()); assertEquals("Augmentable", augmentableType.getName()); } + @Deprecated @Test public void augmentationTypeFor() { ParameterizedType augmentationType = Types.augmentationTypeFor(Types.objectType()); -- 2.36.6