From: illia.ihushev Date: Wed, 29 Jul 2020 10:41:34 +0000 (+0300) Subject: Add @NonNull in DataObjects' default method signatures X-Git-Tag: v7.0.0~67 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=95de0ae3f5617dcc910db29c3581d09186e527a6;p=mdsal.git Add @NonNull in DataObjects' default method signatures When specific DataObject is not Augmentable bindingToString parameter, bindingEquals thisObj parameter, bindingHashCode parameter are not annotated with @NonNull. Add these missing @NonNulls. JIRA: MDSAL-582 Change-Id: I1ec4b500fd30cdf6b5006b8da2d91e035eff04ae Signed-off-by: illia.ihushev --- diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractJavaGeneratedType.java b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractJavaGeneratedType.java index b6a0d56464..cdbcc1654d 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractJavaGeneratedType.java +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractJavaGeneratedType.java @@ -80,6 +80,16 @@ abstract class AbstractJavaGeneratedType { return name.simpleName(); } + private String annotateReference(final String ref, final Type type, final String annotation) { + return type instanceof ParameterizedType ? getReferenceString(annotate(ref, annotation), type, + ((ParameterizedType) type).getActualTypeArguments()) + : annotate(ref, annotation).toString(); + } + + final String getFullyQualifiedReference(final Type type, final String annotation) { + return annotateReference(type.getFullyQualifiedName(), type ,annotation); + } + final String getReferenceString(final Type type) { final String ref = getReferenceString(type.getIdentifier()); return type instanceof ParameterizedType ? getReferenceString(new StringBuilder(ref), type, @@ -91,9 +101,7 @@ abstract class AbstractJavaGeneratedType { // Package-private method, all callers who would be passing an empty array are bound to the more special // case above, hence we know annotations.length >= 1 final String ref = getReferenceString(type.getIdentifier()); - return type instanceof ParameterizedType ? getReferenceString(annotate(ref, annotation), type, - ((ParameterizedType) type).getActualTypeArguments()) - : annotate(ref, annotation).toString(); + return annotateReference(ref, type, annotation); } private String getReferenceString(final StringBuilder sb, final Type type, final @NonNull Type[] arguments) { diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/InterfaceTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/InterfaceTemplate.xtend index 9007afcfdf..2ead021a95 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/InterfaceTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/InterfaceTemplate.xtend @@ -241,7 +241,7 @@ class InterfaceTemplate extends BaseTemplate { «IF augmentable» static > int «BINDING_HASHCODE_NAME»(final @«NONNULL.importedName» T$$ obj) { «ELSE» - static int «BINDING_HASHCODE_NAME»(final «type.fullyQualifiedName» obj) { + static int «BINDING_HASHCODE_NAME»(final «type.fullyQualifiedNonNull» obj) { «ENDIF» final int prime = 31; int result = 1; @@ -276,7 +276,7 @@ class InterfaceTemplate extends BaseTemplate { «IF augmentable» static > boolean «BINDING_EQUALS_NAME»(final @«NONNULL.importedName» T$$ thisObj, final «Types.objectType().importedName» obj) { «ELSE» - static boolean «BINDING_EQUALS_NAME»(final «type.fullyQualifiedName» thisObj, final «Types.objectType().importedName» obj) { + static boolean «BINDING_EQUALS_NAME»(final «type.fullyQualifiedNonNull» thisObj, final «Types.objectType().importedName» obj) { «ENDIF» if (thisObj == obj) { return true; @@ -313,7 +313,7 @@ class InterfaceTemplate extends BaseTemplate { «IF augmentable» static > «STRING.importedName» «BINDING_TO_STRING_NAME»(final @«NONNULL.importedName» T$$ obj) { «ELSE» - static «STRING.importedName» «BINDING_TO_STRING_NAME»(final «type.fullyQualifiedName» obj) { + static «STRING.importedName» «BINDING_TO_STRING_NAME»(final «type.fullyQualifiedNonNull» obj) { «ENDIF» final «MoreObjects.importedName».ToStringHelper helper = «MoreObjects.importedName».toStringHelper("«type.name»"); «FOR property : typeAnalysis.value» diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/JavaFileTemplate.java b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/JavaFileTemplate.java index 3aa4f8f790..b8b3ecf23c 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/JavaFileTemplate.java +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/JavaFileTemplate.java @@ -183,6 +183,14 @@ class JavaFileTemplate { return importedName(intype, importedName(NULLABLE)); } + final @NonNull String fullyQualifiedNonNull(final @NonNull Type intype) { + return fullyQualifiedName(intype, importedName(NONNULL)); + } + + final @NonNull String fullyQualifiedName(final @NonNull Type intype, final @NonNull String annotation) { + return javaType.getFullyQualifiedReference(intype, annotation); + } + // Exposed for BuilderTemplate boolean isLocalInnerClass(final JavaTypeName name) { final Optional optEnc = name.immediatelyEnclosingClass(); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderGeneratorTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderGeneratorTest.java index 7fb78485e5..79cbe70982 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderGeneratorTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderGeneratorTest.java @@ -48,7 +48,7 @@ public class BuilderGeneratorTest { + " * @return Hash code value of data modeled by this interface.\n" + " * @throws NullPointerException if {@code obj} is null\n" + " */\n" - + "static int bindingHashCode(final test.test obj) {\n" + + "static int bindingHashCode(final test.@NonNull test obj) {\n" + " final int prime = 31;\n" + " int result = 1;\n" + " result = prime * result + Objects.hashCode(obj.getTest());\n" @@ -73,7 +73,7 @@ public class BuilderGeneratorTest { + " * @return Hash code value of data modeled by this interface.\n" + " * @throws NullPointerException if {@code obj} is null\n" + " */\n" - + "static int bindingHashCode(final test.test obj) {\n" + + "static int bindingHashCode(final test.@NonNull test obj) {\n" + " final int prime = 31;\n" + " int result = 1;\n" + " result = prime * result + Objects.hashCode(obj.getTest1());\n" @@ -167,7 +167,7 @@ public class BuilderGeneratorTest { + " * @return {@link String} value of data modeled by this interface.\n" + " * @throws NullPointerException if {@code obj} is null\n" + " */\n" - + "static String bindingToString(final test.test obj) {\n" + + "static String bindingToString(final test.@NonNull test obj) {\n" + " final MoreObjects.ToStringHelper helper = MoreObjects.toStringHelper(\"test\");\n" + " CodeHelpers.appendValue(helper, \"test\", obj.gettest());\n" + " return helper.toString();\n" @@ -185,7 +185,7 @@ public class BuilderGeneratorTest { + " * @return {@link String} value of data modeled by this interface.\n" + " * @throws NullPointerException if {@code obj} is null\n" + " */\n" - + "static String bindingToString(final test.test obj) {\n" + + "static String bindingToString(final test.@NonNull test obj) {\n" + " final MoreObjects.ToStringHelper helper = MoreObjects.toStringHelper(\"test\");\n" + " return helper.toString();\n" + "}\n", genToString(mockGenType(TEST)).toString()); @@ -202,7 +202,7 @@ public class BuilderGeneratorTest { + " * @return {@link String} value of data modeled by this interface.\n" + " * @throws NullPointerException if {@code obj} is null\n" + " */\n" - + "static String bindingToString(final test.test obj) {\n" + + "static String bindingToString(final test.@NonNull test obj) {\n" + " final MoreObjects.ToStringHelper helper = MoreObjects.toStringHelper(\"test\");\n" + " CodeHelpers.appendValue(helper, \"test1\", obj.gettest1());\n" + " CodeHelpers.appendValue(helper, \"test2\", obj.gettest2());\n"