X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-spec-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fspec%2Fnaming%2FBindingMapping.java;h=e3294a19109ec2b2a87306eeda1f37a5f0046d88;hb=fc9179bad702407d1d88075dd89db78e97d81343;hp=75c9fb4e444086b73f13f5b9cd09f4fd2dad7f30;hpb=e54d4a7c334812e4fe01292c8316e5e6ad288210;p=mdsal.git diff --git a/binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/naming/BindingMapping.java b/binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/naming/BindingMapping.java index 75c9fb4e44..e3294a1910 100644 --- a/binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/naming/BindingMapping.java +++ b/binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/naming/BindingMapping.java @@ -36,17 +36,26 @@ public final class BindingMapping { public static final @NonNull String VERSION = "0.6"; + // Note: these are not just JLS keywords, but rather character sequences which are reserved in codegen contexts public static final ImmutableSet JAVA_RESERVED_WORDS = ImmutableSet.of( - // https://docs.oracle.com/javase/specs/jls/se9/html/jls-3.html#jls-3.9 + // https://docs.oracle.com/javase/specs/jls/se9/html/jls-3.html#jls-3.9 except module-info.java constructs "abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "default", "do", "double", "else", "enum", "extends", "final", "finally", "float", "for", "goto", "if", "implements", "import", "instanceof", "int", "interface", "long", "native", "new", "package", "private", "protected", "public", "return", "short", "static", "strictfp", "super", "switch", "synchronized", "this", "throw", "throws", "transient", "try", "void", "volatile", "while", "_", + // "open", "module", "requires", "transitive", "exports, "opens", "to", "uses", "provides", "with", + // https://docs.oracle.com/javase/specs/jls/se9/html/jls-3.html#jls-3.10.3 "false", "true", // https://docs.oracle.com/javase/specs/jls/se9/html/jls-3.html#jls-3.10.7 - "null"); + "null", + // https://docs.oracle.com/javase/specs/jls/se10/html/jls-3.html#jls-3.9 + "var", + // https://docs.oracle.com/javase/specs/jls/se14/html/jls-3.html#jls-3.9 + "yield", + // https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html#jls-3.9 + "record"); public static final @NonNull String DATA_ROOT_SUFFIX = "Data"; public static final @NonNull String RPC_SERVICE_SUFFIX = "Service"; @@ -86,6 +95,12 @@ public final class BindingMapping { */ public static final @NonNull String BINDING_HASHCODE_NAME = "bindingHashCode"; + /** + * Name of default {@link Object#equals(Object)} implementation for instantiated DataObjects. Each such generated + * interface contains this static method. + */ + public static final @NonNull String BINDING_EQUALS_NAME = "bindingEquals"; + /** * Name of default {@link Object#toString()} implementation for instantiated DataObjects. Each such generated * interface contains this static method. @@ -97,11 +112,6 @@ public final class BindingMapping { */ public static final @NonNull String SCALAR_TYPE_OBJECT_GET_VALUE_NAME = "getValue"; - /** - * Prefix for getter methods working on top of boolean. - */ - public static final @NonNull String BOOLEAN_GETTER_PREFIX = "is"; - /** * Prefix for normal getter methods. */ @@ -210,20 +220,16 @@ public final class BindingMapping { return getMethodName(name.getLocalName()); } - public static @NonNull String getGetterPrefix(final boolean isBoolean) { - return isBoolean ? BOOLEAN_GETTER_PREFIX : GETTER_PREFIX; - } - - public static @NonNull String getGetterMethodName(final String localName, final boolean isBoolean) { - return getGetterPrefix(isBoolean) + toFirstUpper(getPropertyName(localName)); + public static @NonNull String getGetterMethodName(final String localName) { + return GETTER_PREFIX + toFirstUpper(getPropertyName(localName)); } - public static @NonNull String getGetterMethodName(final QName name, final boolean isBoolean) { - return getGetterPrefix(isBoolean) + getGetterSuffix(name); + public static @NonNull String getGetterMethodName(final QName name) { + return GETTER_PREFIX + getGetterSuffix(name); } public static boolean isGetterMethodName(final String methodName) { - return methodName.startsWith(GETTER_PREFIX) || methodName.startsWith(BOOLEAN_GETTER_PREFIX); + return methodName.startsWith(GETTER_PREFIX); } public static @NonNull String getGetterMethodForNonnull(final String methodName) { @@ -364,7 +370,9 @@ public final class BindingMapping { return javaToYang.inverse(); } - // See https://docs.oracle.com/javase/specs/jls/se9/html/jls-3.html#jls-3.8 + // See https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html#jls-3.8 + // TODO: we are being conservative here, but should differentiate TypeIdentifier and UnqualifiedMethodIdentifier, + // which have different exclusions private static boolean isValidJavaIdentifier(final String str) { return !str.isEmpty() && !JAVA_RESERVED_WORDS.contains(str) && Character.isJavaIdentifierStart(str.codePointAt(0))