Use instanceof pattern match in fieldsFrom() 51/100851/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 27 Apr 2022 16:56:13 +0000 (18:56 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 27 Apr 2022 16:56:13 +0000 (18:56 +0200)
With JD17 we can use a pattern match to cast the argument only once,
simplifying the generated code and the codegen a bit.

Change-Id: I14c61480eee3d0214d43af2337c5fd0cf9b7d3ae
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend
binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/Mdsal732Test.java
binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/SpecializingLeafrefTest.java

index b1ed4c03612c18e4d535113fdbc3de0940fe36a1..1427d2edbc73a4412bc7d6cf6fab58606b3f825c 100644 (file)
@@ -246,7 +246,7 @@ class BuilderTemplate extends AbstractBuilderTemplate {
     def private generateIfCheck(Type impl, List<Type> done) '''
         «IF (impl instanceof GeneratedType && (impl as GeneratedType).hasNonDefaultMethods)»
             «val implType = impl as GeneratedType»
-            if (arg instanceof «implType.importedName») {
+            if (arg instanceof «implType.importedName» castArg) {
                 «printPropertySetter(implType)»
                 isValidArg = true;
             }
@@ -258,7 +258,7 @@ class BuilderTemplate extends AbstractBuilderTemplate {
         «val ifc = implementedIfc as GeneratedType»
         «FOR getter : ifc.nonDefaultMethods»
             «IF BindingMapping.isGetterMethodName(getter.name) && !hasOverrideAnnotation(getter)»
-                «printPropertySetter(getter, '''((«ifc.importedName»)arg).«getter.name»()''', getter.propertyNameFromGetter)»;
+                «printPropertySetter(getter, '''castArg.«getter.name»()''', getter.propertyNameFromGetter)»;
             «ENDIF»
         «ENDFOR»
         «ENDIF»
index f05db66943d224f126a2ef1e5d3abbaec14a1ffe..5a9b81f9cff5e6d4e343e29c7e36cb4b80ffb1ad 100644 (file)
@@ -48,10 +48,10 @@ public class Mdsal732Test extends BaseCompilationTest {
         FileSearchUtil.assertFileContainsConsecutiveLines(xyzzyBuilder, content,
             "    public void fieldsFrom(DataObject arg) {",
             "        boolean isValidArg = false;",
-            "        if (arg instanceof Grp) {",
-            "            this._foo = CodeHelpers.checkFieldCast(Foo.class, \"foo\", ((Grp)arg).getFoo());",
-            "            this._bar = CodeHelpers.checkSetFieldCast(Foo.class, \"bar\", ((Grp)arg).getBar());",
-            "            this._baz = CodeHelpers.checkListFieldCast(Foo.class, \"baz\", ((Grp)arg).getBaz());",
+            "        if (arg instanceof Grp castArg) {",
+            "            this._foo = CodeHelpers.checkFieldCast(Foo.class, \"foo\", castArg.getFoo());",
+            "            this._bar = CodeHelpers.checkSetFieldCast(Foo.class, \"bar\", castArg.getBar());",
+            "            this._baz = CodeHelpers.checkListFieldCast(Foo.class, \"baz\", castArg.getBaz());",
             "            isValidArg = true;",
             "        }",
             "        CodeHelpers.validValue(isValidArg, arg, \"[Grp]\");",
index 0d87cbffc935a76611ee9ba4a15182a739907708..7b29f3c54016c3cded88f2d943f0fad7875c4b19 100644 (file)
@@ -67,11 +67,7 @@ public class SpecializingLeafrefTest extends BaseCompilationTest {
 
     private static final String FOO_GRP_REF = "FooGrp";
     private static final String RESOLVED_LEAF_GRP_REF = "ResolvedLeafGrp";
-
-    private static final String UNRESOLVED_GROUPING_REF =
-            "UnresolvedGrouping";
-
-    private static final String ARG_AS_FOO_GRP = "((" + FOO_GRP_REF + ")arg)";
+    private static final String UNRESOLVED_GROUPING_REF = "UnresolvedGrouping";
 
     private static final String LEAF2_ASSIGNMENT = "this._leaf2 = arg.getLeaf2();";
 
@@ -218,16 +214,15 @@ public class SpecializingLeafrefTest extends BaseCompilationTest {
         FileSearchUtil.assertFileContainsConsecutiveLines(file, content,
                 TAB_FIELDS_FROM_SIGNATURE,
                 DTAB_INIT_IS_VALID_ARG_FALSE,
-                doubleTab("if (arg instanceof " + FOO_GRP_REF + ") {"),
-                tripleTab("this._leaf1 = CodeHelpers.checkFieldCast(String.class, \"leaf1\", "
-                    + ARG_AS_FOO_GRP + ".getLeaf1());"),
+                doubleTab("if (arg instanceof " + FOO_GRP_REF + " castArg) {"),
+                tripleTab("this._leaf1 = CodeHelpers.checkFieldCast(String.class, \"leaf1\", castArg.getLeaf1());"),
                 tripleTab("this._leafList1 = CodeHelpers.checkSetFieldCast(String.class, \"leafList1\", "
-                    + ARG_AS_FOO_GRP + ".getLeafList1());"),
-                tripleTab("this._leaf2 = " + ARG_AS_FOO_GRP + ".getLeaf2();"),
+                    + "castArg.getLeafList1());"),
+                tripleTab("this._leaf2 = castArg.getLeaf2();"),
                 TTAB_SET_IS_VALID_ARG_TRUE,
                 DTAB_CLOSING_METHOD_BRACE,
-                doubleTab("if (arg instanceof " + RESOLVED_LEAF_GRP_REF + ") {"),
-                tripleTab("this._name = ((" + RESOLVED_LEAF_GRP_REF + ")arg).getName();"),
+                doubleTab("if (arg instanceof " + RESOLVED_LEAF_GRP_REF + " castArg) {"),
+                tripleTab("this._name = castArg.getName();"),
                 TTAB_SET_IS_VALID_ARG_TRUE,
                 DTAB_CLOSING_METHOD_BRACE,
                 doubleTab("CodeHelpers.validValue(isValidArg, arg, \"[" + FOO_GRP_REF + ", " + RESOLVED_LEAF_GRP_REF
@@ -259,9 +254,8 @@ public class SpecializingLeafrefTest extends BaseCompilationTest {
         FileSearchUtil.assertFileContainsConsecutiveLines(file, content,
                 TAB_FIELDS_FROM_SIGNATURE,
                 DTAB_INIT_IS_VALID_ARG_FALSE,
-                doubleTab("if (arg instanceof " + UNRESOLVED_GROUPING_REF + ") {"),
-                tripleTab("this._leaf1 = CodeHelpers.checkFieldCast(Boolean.class, \"leaf1\", (("
-                    + UNRESOLVED_GROUPING_REF + ")arg).getLeaf1());"),
+                doubleTab("if (arg instanceof " + UNRESOLVED_GROUPING_REF + " castArg) {"),
+                tripleTab("this._leaf1 = CodeHelpers.checkFieldCast(Boolean.class, \"leaf1\", castArg.getLeaf1());"),
                 TTAB_SET_IS_VALID_ARG_TRUE,
                 DTAB_CLOSING_METHOD_BRACE,
                 doubleTab("CodeHelpers.validValue(isValidArg, arg, \"[" + UNRESOLVED_GROUPING_REF + "]\");"),