Defect Fixes and optimization for YANG translator.

Change-Id: I974a968f3c41e1abea9f2567aceb3d523645d0ae
diff --git a/src/test/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGeneratorTest.java b/src/test/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGeneratorTest.java
index 7ca84c7..7b3c932 100644
--- a/src/test/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGeneratorTest.java
+++ b/src/test/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGeneratorTest.java
@@ -16,24 +16,39 @@
 
 package org.onosproject.yangutils.translator.tojava.utils;
 
-import static org.hamcrest.core.Is.is;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThat;
-
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 
 import org.junit.Test;
-import org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType;
-import org.onosproject.yangutils.translator.tojava.GeneratedMethodTypes;
-import org.onosproject.yangutils.translator.tojava.TraversalType;
-import org.onosproject.yangutils.utils.UtilConstants;
+
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.IMPL_CLASS_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.INTERFACE_MASK;
+import static org.onosproject.yangutils.translator.tojava.utils.ClassDefinitionGenerator.generateClassDefinition;
+import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
+import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
+import static org.onosproject.yangutils.utils.UtilConstants.FINAL;
+import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
+import static org.onosproject.yangutils.utils.UtilConstants.IMPLEMENTS;
+import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE;
+import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
+import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
+import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
+import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
 
 /**
  * Unit tests for class definition generator for generated files.
  */
 public final class ClassDefinitionGeneratorTest {
 
+    private static final String CLASS_NAME = "testclass";
+
     /**
      * Unit test for private constructor.
      *
@@ -62,10 +77,10 @@
     @Test
     public void generateBuilderClassDefinitionTest() {
 
-        String builderClassDefinition = ClassDefinitionGenerator
-                .generateClassDefinition(GeneratedJavaFileType.BUILDER_CLASS_MASK, "BuilderClass");
-        assertThat(true, is(builderClassDefinition.contains(UtilConstants.BUILDER)));
-        assertThat(true, is(builderClassDefinition.contains(UtilConstants.CLASS)));
+        String builderClassDefinition = generateClassDefinition(BUILDER_CLASS_MASK, CLASS_NAME);
+        assertThat(true, is(builderClassDefinition.equals(
+                PUBLIC + SPACE + CLASS + SPACE + CLASS_NAME + BUILDER + SPACE + IMPLEMENTS + SPACE + CLASS_NAME + PERIOD
+                        + CLASS_NAME + BUILDER + SPACE + OPEN_CURLY_BRACKET + NEW_LINE)));
     }
 
     /**
@@ -74,9 +89,9 @@
     @Test
     public void generateBuilderInterfaceDefinitionTest() {
 
-        String builderInterfaceDefinition = ClassDefinitionGenerator
-                .generateClassDefinition(GeneratedJavaFileType.BUILDER_INTERFACE_MASK, "BuilderInterfaceClass");
-        assertThat(true, is(builderInterfaceDefinition.contains(UtilConstants.BUILDER)));
+        String builderInterfaceDefinition = generateClassDefinition(BUILDER_INTERFACE_MASK, CLASS_NAME);
+        assertThat(true, is(builderInterfaceDefinition
+                .equals(INTERFACE + SPACE + CLASS_NAME + BUILDER + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + NEW_LINE)));
     }
 
     /**
@@ -85,9 +100,10 @@
     @Test
     public void generateImplDefinitionTest() {
 
-        String implDefinition = ClassDefinitionGenerator.generateClassDefinition(GeneratedJavaFileType.IMPL_CLASS_MASK,
-                "ImplClass");
-        assertThat(true, is(implDefinition.contains(UtilConstants.IMPL)));
+        String implDefinition = generateClassDefinition(IMPL_CLASS_MASK, CLASS_NAME);
+        assertThat(true, is(implDefinition.equals(
+                PUBLIC + SPACE + FINAL + SPACE + CLASS + SPACE + CLASS_NAME + IMPL + SPACE + IMPLEMENTS + SPACE
+                        + CLASS_NAME + SPACE + OPEN_CURLY_BRACKET + NEW_LINE)));
     }
 
     /**
@@ -96,10 +112,9 @@
     @Test
     public void generateinterfaceDefinitionTest() {
 
-        String interfaceDefinition = ClassDefinitionGenerator.generateClassDefinition(
-                GeneratedJavaFileType.INTERFACE_MASK,
-                "InterfaceClass");
-        assertThat(true, is(interfaceDefinition.contains(UtilConstants.INTERFACE)));
+        String interfaceDefinition = generateClassDefinition(INTERFACE_MASK, CLASS_NAME);
+        assertThat(true, is(interfaceDefinition
+                .equals(PUBLIC + SPACE + INTERFACE + SPACE + CLASS_NAME + SPACE + OPEN_CURLY_BRACKET + NEW_LINE)));
     }
 
     /**
@@ -108,19 +123,8 @@
     @Test
     public void generateTypeDefTest() {
 
-        String typeDef = ClassDefinitionGenerator.generateClassDefinition(GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS,
-                "invalid");
-        assertThat(true, is(typeDef.contains(UtilConstants.CLASS)));
-    }
-
-    /**
-     * Unit test for enum data types.
-     */
-    @Test
-    public void enumDataTypesTest() {
-
-        TraversalType.valueOf(TraversalType.CHILD.toString());
-        GeneratedMethodTypes.valueOf(GeneratedMethodTypes.CONSTRUCTOR.toString());
-        TempDataStoreTypes.valueOf(TempDataStoreTypes.CONSTRUCTOR.toString());
+        String typeDef = generateClassDefinition(GENERATE_TYPEDEF_CLASS, CLASS_NAME);
+        assertThat(true, is(typeDef.equals(
+                PUBLIC + SPACE + FINAL + SPACE + CLASS + SPACE + CLASS_NAME + SPACE + OPEN_CURLY_BRACKET + NEW_LINE)));
     }
 }
diff --git a/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntaxTest.java b/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntaxTest.java
index 7d66c7b..d4a51d8 100644
--- a/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntaxTest.java
+++ b/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntaxTest.java
@@ -16,38 +16,47 @@
 
 package org.onosproject.yangutils.translator.tojava.utils;
 
-import static org.hamcrest.core.Is.is;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThat;
-
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 
 import org.junit.Test;
-import org.onosproject.yangutils.utils.UtilConstants;
+
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getJavaPackageFromPackagePath;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getPackageDirPathFromJavaJPackage;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getYangRevisionStr;
+import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT_BASE_PKG;
+import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
 
 /**
  * Unit tests for java identifier syntax.
  */
 public final class JavaIdentifierSyntaxTest {
 
-    public static final String PARENT_PACKAGE = "test5.test6.test7";
-    public static final String CHILD_PACKAGE = "test1:test2:test3";
-    public static final String DATE1 = "2000-1-5";
-    public static final String DATE2 = "1992-01-25";
-    public static final String PARENT_WITH_PERIOD = "test5.test6.test7";
-    public static final String CHILD_WITH_PERIOD = "test1.test2.test3";
-    public static final String DATE_WITH_REV1 = "rev20000105";
-    public static final String DATE_WITH_REV2 = "rev19920125";
-    public static final String VERSION_NUMBER = "v1";
-    public static final String INVALID_NAME_SPACE1 = "byte:#test2:9test3";
-    public static final String INVALID_NAME_SPACE2 = "const:#test2://9test3";
-    public static final String VALID_NAME_SPACE1 = "_byte.test2._9test3";
-    public static final String VALID_NAME_SPACE2 = "_const.test2._9test3";
-    public static final String WITHOUT_CAMEL_CASE = "test-camel-case-identifier";
-    public static final String WITH_CAMEL_CASE = "testCamelCaseIdentifier";
-    public static final String WITHOUT_CAPITAL = "test_this";
-    public static final String WITH_CAPITAL = "Test_this";
+    private static final String PARENT_PACKAGE = "test5/test6/test7";
+    private static final String CHILD_PACKAGE = "test1:test2:test3";
+    private static final String DATE1 = "2000-1-5";
+    private static final String DATE2 = "1992-01-25";
+    private static final String PARENT_WITH_PERIOD = "test5.test6.test7";
+    private static final String CHILD_WITH_PERIOD = "test1.test2.test3";
+    private static final String DATE_WITH_REV1 = "rev20000105";
+    private static final String DATE_WITH_REV2 = "rev19920125";
+    private static final String VERSION_NUMBER = "v1";
+    private static final String INVALID_NAME_SPACE1 = "byte:#test2:9test3";
+    private static final String INVALID_NAME_SPACE2 = "const:#test2://9test3";
+    private static final String VALID_NAME_SPACE1 = "_byte.test2._9test3";
+    private static final String VALID_NAME_SPACE2 = "_const.test2._9test3";
+    private static final String WITHOUT_CAMEL_CASE = "test-camel-case-identifier";
+    private static final String WITH_CAMEL_CASE = "testCamelCaseIdentifier";
+    private static final String WITHOUT_CAPITAL = "test_this";
+    private static final String WITH_CAPITAL = "Test_this";
+    private static final String WITH_SMALL = "test_this";
 
     /**
      * Unit test for private constructor.
@@ -65,6 +74,7 @@
     @Test
     public void callPrivateConstructors() throws SecurityException, NoSuchMethodException, IllegalArgumentException,
             InstantiationException, IllegalAccessException, InvocationTargetException {
+
         Class<?>[] classesToConstruct = {JavaIdentifierSyntax.class };
         for (Class<?> clazz : classesToConstruct) {
             Constructor<?> constructor = clazz.getDeclaredConstructor();
@@ -79,9 +89,9 @@
     @Test
     public void getRootPackageTest() {
 
-        String rootPackage = JavaIdentifierSyntax.getRootPackage((byte) 1, CHILD_PACKAGE, DATE1);
-        assertThat(rootPackage.equals(UtilConstants.DEFAULT_BASE_PKG + UtilConstants.PERIOD + VERSION_NUMBER
-                + UtilConstants.PERIOD + CHILD_WITH_PERIOD + UtilConstants.PERIOD + DATE_WITH_REV1), is(true));
+        String rootPackage = getRootPackage((byte) 1, CHILD_PACKAGE, DATE1);
+        assertThat(rootPackage.equals(DEFAULT_BASE_PKG + PERIOD + VERSION_NUMBER
+                + PERIOD + CHILD_WITH_PERIOD + PERIOD + DATE_WITH_REV1), is(true));
     }
 
     /**
@@ -90,12 +100,12 @@
     @Test
     public void getRootPackageWithSpecialCharactersTest() {
 
-        String rootPackage = JavaIdentifierSyntax.getRootPackage((byte) 1, INVALID_NAME_SPACE1, DATE1);
-        assertThat(rootPackage.equals(UtilConstants.DEFAULT_BASE_PKG + UtilConstants.PERIOD + VERSION_NUMBER
-                + UtilConstants.PERIOD + VALID_NAME_SPACE1 + UtilConstants.PERIOD + DATE_WITH_REV1), is(true));
-        String rootPackage1 = JavaIdentifierSyntax.getRootPackage((byte) 1, INVALID_NAME_SPACE2, DATE1);
-        assertThat(rootPackage1.equals(UtilConstants.DEFAULT_BASE_PKG + UtilConstants.PERIOD + VERSION_NUMBER
-                + UtilConstants.PERIOD + VALID_NAME_SPACE2 + UtilConstants.PERIOD + DATE_WITH_REV1), is(true));
+        String rootPackage = getRootPackage((byte) 1, INVALID_NAME_SPACE1, DATE1);
+        assertThat(rootPackage.equals(DEFAULT_BASE_PKG + PERIOD + VERSION_NUMBER
+                + PERIOD + VALID_NAME_SPACE1 + PERIOD + DATE_WITH_REV1), is(true));
+        String rootPackage1 = getRootPackage((byte) 1, INVALID_NAME_SPACE2, DATE1);
+        assertThat(rootPackage1.equals(DEFAULT_BASE_PKG + PERIOD + VERSION_NUMBER
+                + PERIOD + VALID_NAME_SPACE2 + PERIOD + DATE_WITH_REV1), is(true));
     }
 
     /**
@@ -104,9 +114,9 @@
     @Test
     public void getRootPackageWithRevTest() {
 
-        String rootPkgWithRev = JavaIdentifierSyntax.getRootPackage((byte) 1, CHILD_PACKAGE, DATE2);
-        assertThat(rootPkgWithRev.equals(UtilConstants.DEFAULT_BASE_PKG + UtilConstants.PERIOD
-                + VERSION_NUMBER + UtilConstants.PERIOD + CHILD_WITH_PERIOD + UtilConstants.PERIOD + DATE_WITH_REV2),
+        String rootPkgWithRev = getRootPackage((byte) 1, CHILD_PACKAGE, DATE2);
+        assertThat(rootPkgWithRev.equals(
+                DEFAULT_BASE_PKG + PERIOD + VERSION_NUMBER + PERIOD + CHILD_WITH_PERIOD + PERIOD + DATE_WITH_REV2),
                 is(true));
     }
 
@@ -116,7 +126,7 @@
     @Test
     public void getCapitalCaseTest() {
 
-        String capitalCase = JavaIdentifierSyntax.getCaptialCase(WITHOUT_CAPITAL);
+        String capitalCase = getCaptialCase(WITHOUT_CAPITAL);
         assertThat(capitalCase.equals(WITH_CAPITAL), is(true));
     }
 
@@ -125,7 +135,48 @@
      */
     @Test
     public void getCamelCaseTest() {
-        String camelCase = JavaIdentifierSyntax.getCamelCase(WITHOUT_CAMEL_CASE);
+
+        String camelCase = getCamelCase(WITHOUT_CAMEL_CASE);
         assertThat(camelCase.equals(WITH_CAMEL_CASE), is(true));
     }
+
+    /**
+     * Unit test for getting the camel case for the received string.
+     */
+    @Test
+    public void getSmallCaseTest() {
+
+        String smallCase = getSmallCase(WITHOUT_CAPITAL);
+        assertThat(smallCase.equals(WITH_SMALL), is(true));
+    }
+
+    /**
+     * Unit test for getting the camel case for the received string.
+     */
+    @Test
+    public void getPackageFromPathTest() {
+
+        String pkg = getJavaPackageFromPackagePath(PARENT_PACKAGE);
+        assertThat(pkg.equals(PARENT_WITH_PERIOD), is(true));
+    }
+
+    /**
+     * Unit test for getting the camel case for the received string.
+     */
+    @Test
+    public void getPathFromPackageTest() {
+
+        String path = getPackageDirPathFromJavaJPackage(PARENT_WITH_PERIOD);
+        assertThat(path.equals(PARENT_PACKAGE), is(true));
+    }
+
+    /**
+     * Unit test for getting the camel case for the received string.
+     */
+    @Test
+    public void getYangRevTest() {
+
+        String rev = getYangRevisionStr(DATE1);
+        assertThat(rev.equals(DATE_WITH_REV1), is(true));
+    }
 }