From: Robert Varga Date: Wed, 27 Apr 2022 16:56:13 +0000 (+0200) Subject: Use instanceof pattern match in fieldsFrom() X-Git-Tag: v10.0.0~70 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;ds=sidebyside;h=9023215e0c5cf56fb031f05c1a2f7e050f546271;p=mdsal.git Use instanceof pattern match in fieldsFrom() 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 --- diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend index b1ed4c0361..1427d2edbc 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend @@ -246,7 +246,7 @@ class BuilderTemplate extends AbstractBuilderTemplate { def private generateIfCheck(Type impl, List 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» diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/Mdsal732Test.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/Mdsal732Test.java index f05db66943..5a9b81f9cf 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/Mdsal732Test.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/Mdsal732Test.java @@ -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]\");", diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/SpecializingLeafrefTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/SpecializingLeafrefTest.java index 0d87cbffc9..7b29f3c540 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/SpecializingLeafrefTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/SpecializingLeafrefTest.java @@ -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 + "]\");"),