Ignore normalizing of identifiers with reserved paths. 21/55721/2
authorJakub Toth <jatoth@cisco.com>
Tue, 18 Apr 2017 09:41:12 +0000 (11:41 +0200)
committerMartin Ciglan <mciglan@cisco.com>
Thu, 20 Apr 2017 12:57:54 +0000 (12:57 +0000)
Change-Id: Ie0a48b8cc7f68e88afa1e4a4837ed7eaa37f637f
Signed-off-by: Jakub Toth <jatoth@cisco.com>
(cherry picked from commit 54d0f5a691e075b4817c432bba9a750bd45e5292)

binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/JavaIdentifierNormalizer.java
binding2/mdsal-binding2-generator-util/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/util/JavaIdentifierNormalizerTest.java

index c8268adf7e5a86f730b759b32a12c51c21fd0324..4e3f50b8ab40dfa268c94650196f697013f20795 100644 (file)
@@ -201,7 +201,9 @@ public final class JavaIdentifierNormalizer {
     private static final String EMPTY_STRING = "";
     private static final String RESERVED_KEYWORD = "reserved_keyword";
     private static final ListMultimap<String, String> PACKAGES_MAP = ArrayListMultimap.create();
-    public static final Set<String> SPECIAL_RESERVED_WORDS = ImmutableSet.of("QName");
+    public static final Set<String> SPECIAL_RESERVED_PATHS =
+            ImmutableSet.of("org.opendaylight.yangtools.yang.common", "org.opendaylight.mdsal.binding.javav2.spec",
+                    "java", "com");
 
     private JavaIdentifierNormalizer() {
         throw new UnsupportedOperationException("Util class");
@@ -308,6 +310,11 @@ public final class JavaIdentifierNormalizer {
      * @return - java acceptable identifier
      */
     public static String normalizeClassIdentifier(final String packageName, final String className) {
+        for (final String reservedPath : SPECIAL_RESERVED_PATHS) {
+            if (packageName.startsWith(reservedPath)) {
+                return className;
+            }
+        }
         final String convertedClassName = normalizeSpecificIdentifier(className, JavaIdentifier.CLASS);
         return normalizeClassIdentifier(packageName, convertedClassName, convertedClassName, FIRST_INDEX);
     }
@@ -323,10 +330,6 @@ public final class JavaIdentifierNormalizer {
      * @return - java acceptable identifier
      */
     public static String normalizeSpecificIdentifier(final String identifier, final JavaIdentifier javaIdentifier) {
-        if (SPECIAL_RESERVED_WORDS.contains(identifier)) {
-            return identifier;
-        }
-
         final StringBuilder sb = new StringBuilder();
 
         // if identifier isn't PACKAGE type then check it by reserved keywords
index ae2d4717b04d4f754242a8c612947dce20627991..d108081993cdb6bc34c753ceb99e711febde8b51 100644 (file)
@@ -17,9 +17,64 @@ import org.opendaylight.mdsal.binding.javav2.util.BindingMapping;
 public class JavaIdentifierNormalizerTest {
 
     @Test
-    public void specialWordsTest(){
-        String normalizeIdentifier = JavaIdentifierNormalizer.normalizeClassIdentifier("org.example.same.package", "QName");
+    public void specialPathsTest() {
+        // QName - reserved & non reserved
+        String normalizeIdentifier =
+                JavaIdentifierNormalizer.normalizeClassIdentifier("org.opendaylight.yangtools.yang.common", "QName");
         assertEquals("QName", normalizeIdentifier);
+        // again reserved
+        normalizeIdentifier =
+                JavaIdentifierNormalizer.normalizeClassIdentifier("org.opendaylight.yangtools.yang.common", "QName");
+        assertEquals("QName", normalizeIdentifier);
+        // non reserved
+        normalizeIdentifier = JavaIdentifierNormalizer.normalizeClassIdentifier("qname.non.reserved", "QName");
+        assertEquals("Qname", normalizeIdentifier);
+        // again non reserved
+        normalizeIdentifier = JavaIdentifierNormalizer.normalizeClassIdentifier("qname.non.reserved", "QName");
+        assertEquals("Qname1", normalizeIdentifier);
+
+        // Augmentable - reserved & non reserved
+        normalizeIdentifier = JavaIdentifierNormalizer
+                .normalizeClassIdentifier("org.opendaylight.mdsal.binding.javav2.spec.structural", "Augmentable");
+        assertEquals("Augmentable", normalizeIdentifier);
+        // again reserved
+        normalizeIdentifier = JavaIdentifierNormalizer
+                .normalizeClassIdentifier("org.opendaylight.mdsal.binding.javav2.spec.structural", "Augmentable");
+        assertEquals("Augmentable", normalizeIdentifier);
+        // non reserved
+        normalizeIdentifier = JavaIdentifierNormalizer
+                .normalizeClassIdentifier("augmentable.non.reserved", "Augmentable");
+        assertEquals("Augmentable", normalizeIdentifier);
+        // again non reserved
+        normalizeIdentifier =
+                JavaIdentifierNormalizer.normalizeClassIdentifier("augmentable.non.reserved", "Augmentable");
+        assertEquals("Augmentable1", normalizeIdentifier);
+
+        // List - reserved & non reserved
+        normalizeIdentifier = JavaIdentifierNormalizer.normalizeClassIdentifier("java.util", "List");
+        assertEquals("List", normalizeIdentifier);
+        // again reserved
+        normalizeIdentifier = JavaIdentifierNormalizer.normalizeClassIdentifier("java.util", "List");
+        assertEquals("List", normalizeIdentifier);
+        // non reserved
+        normalizeIdentifier = JavaIdentifierNormalizer.normalizeClassIdentifier("list.non.reserved", "List");
+        assertEquals("List", normalizeIdentifier);
+        // again non reserved
+        normalizeIdentifier = JavaIdentifierNormalizer.normalizeClassIdentifier("list.non.reserved", "List");
+        assertEquals("List1", normalizeIdentifier);
+
+        // String - reserved & non reserved
+        normalizeIdentifier = JavaIdentifierNormalizer.normalizeClassIdentifier("java.lang", "String");
+        assertEquals("String", normalizeIdentifier);
+        // again reserved
+        normalizeIdentifier = JavaIdentifierNormalizer.normalizeClassIdentifier("java.lang", "String");
+        assertEquals("String", normalizeIdentifier);
+        // non reserved
+        normalizeIdentifier = JavaIdentifierNormalizer.normalizeClassIdentifier("string.non.reserved", "String");
+        assertEquals("String", normalizeIdentifier);
+        // again non reserved
+        normalizeIdentifier = JavaIdentifierNormalizer.normalizeClassIdentifier("string.non.reserved", "String");
+        assertEquals("String1", normalizeIdentifier);
     }
 
     /**