From: Robert Varga Date: Tue, 26 Apr 2022 12:53:38 +0000 (+0200) Subject: Generate a switch expression in forName()/forIntValue() X-Git-Tag: v10.0.0~92 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=mdsal.git;a=commitdiff_plain;h=0ceceb790380a4d3098d7c046c20d8d71233e465 Generate a switch expression in forName()/forIntValue() JDK17 allows us to use switch expressions, which are nice and concise way of matching values. Use them instead of ImmutableMaps for value lookups. JIRA: MDSAL-753 Change-Id: I1f12eb7469ce08ee66024abfb2bef5305f1cee63 Signed-off-by: Robert Varga --- diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/EnumTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/EnumTemplate.xtend index 82b36fa69b..8923918678 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/EnumTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/EnumTemplate.xtend @@ -10,8 +10,6 @@ package org.opendaylight.mdsal.binding.java.api.generator import static extension org.opendaylight.mdsal.binding.generator.BindingGeneratorUtil.encodeAngleBrackets import static org.opendaylight.mdsal.binding.model.ri.Types.STRING; -import com.google.common.collect.ImmutableMap -import com.google.common.collect.ImmutableMap.Builder import org.opendaylight.mdsal.binding.model.api.Enumeration import org.opendaylight.mdsal.binding.model.api.GeneratedType @@ -71,21 +69,6 @@ class EnumTemplate extends BaseTemplate { public enum «enums.name» implements «org.opendaylight.yangtools.yang.binding.Enumeration.importedName» { «writeEnumeration(enums)» - private static final «JU_MAP.importedName»<«STRING.importedName», «enums.name»> NAME_MAP; - private static final «JU_MAP.importedName»<«Integer.importedName», «enums.name»> VALUE_MAP; - - static { - final «Builder.importedName»<«STRING.importedName», «enums.name»> nb = «ImmutableMap.importedName».builder(); - final «Builder.importedName»<«Integer.importedName», «enums.name»> vb = «ImmutableMap.importedName».builder(); - for («enums.name» enumItem : «enums.name».values()) { - vb.put(enumItem.value, enumItem); - nb.put(enumItem.name, enumItem); - } - - NAME_MAP = nb.build(); - VALUE_MAP = vb.build(); - } - private final «STRING.importedNonNull» name; private final int value; @@ -112,7 +95,12 @@ class EnumTemplate extends BaseTemplate { * @throws NullPointerException if {@code name} is null */ public static «enums.importedNullable» forName(«STRING.importedName» name) { - return NAME_MAP.get(«JU_OBJECTS.importedName».requireNonNull(name)); + return switch (name) { + «FOR v : enums.values» + case "«v.name»" -> «v.mappedName»; + «ENDFOR» + default -> null; + }; } /** @@ -122,7 +110,12 @@ class EnumTemplate extends BaseTemplate { * @return corresponding «enums.name» item, or {@code null} if no such item exists */ public static «enums.importedNullable» forValue(int intValue) { - return VALUE_MAP.get(intValue); + return switch (intValue) { + «FOR v : enums.values» + case «v.value» -> «v.mappedName»; + «ENDFOR» + default -> null; + }; } /**