Fix for Bug 489.
[yangtools.git] / code-generator / binding-generator-util / src / main / java / org / opendaylight / yangtools / binding / generator / util / BindingGeneratorUtil.java
index e39d6251eaaa3e0953d4b6d29d2d4bdd1a367e6c..34d1760d8bc71def84a4eda235a06d9262c1315c 100644 (file)
@@ -12,7 +12,6 @@ import java.io.DataOutputStream;
 import java.io.IOException;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
-import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -50,7 +49,18 @@ import org.opendaylight.yangtools.yang.model.util.ExtendedType;
  */
 public final class BindingGeneratorUtil {
 
-    private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyMMdd");
+    private static final ThreadLocal<SimpleDateFormat> DATE_FORMAT = new ThreadLocal<SimpleDateFormat>() {
+
+        @Override
+        protected SimpleDateFormat initialValue() {
+            return new SimpleDateFormat("yyMMdd");
+        }
+
+        @Override
+        public void set(SimpleDateFormat value) {
+            throw new UnsupportedOperationException();
+        }
+    };
 
     /**
      * Array of strings values which represents JAVA reserved words.
@@ -172,11 +182,15 @@ public final class BindingGeneratorUtil {
 
         packageNameBuilder.append(namespace);
         packageNameBuilder.append(".rev");
-        packageNameBuilder.append(DATE_FORMAT.format(module.getRevision()));
+        packageNameBuilder.append(DATE_FORMAT.get().format(module.getRevision()));
 
         return validateJavaPackage(packageNameBuilder.toString());
     }
 
+    public static String packageNameForGeneratedType(final String basePackageName, final SchemaPath schemaPath) {
+        return packageNameForGeneratedType(basePackageName, schemaPath, false);
+    }
+
     /**
      * Creates package name from specified <code>basePackageName</code> (package
      * name for module) and <code>schemaPath</code>.
@@ -192,7 +206,8 @@ public final class BindingGeneratorUtil {
      *            name of this node
      * @return string with valid JAVA package name
      */
-    public static String packageNameForGeneratedType(final String basePackageName, final SchemaPath schemaPath) {
+    public static String packageNameForGeneratedType(final String basePackageName, final SchemaPath schemaPath,
+            boolean isUsesAugment) {
         if (basePackageName == null) {
             throw new IllegalArgumentException("Base Package Name cannot be NULL!");
         }
@@ -203,7 +218,12 @@ public final class BindingGeneratorUtil {
         final StringBuilder builder = new StringBuilder();
         builder.append(basePackageName);
         final List<QName> pathToNode = schemaPath.getPath();
-        final int traversalSteps = (pathToNode.size() - 1);
+        final int traversalSteps;
+        if (isUsesAugment) {
+            traversalSteps = (pathToNode.size());
+        } else {
+            traversalSteps = (pathToNode.size() - 1);
+        }
         for (int i = 0; i < traversalSteps; ++i) {
             builder.append(".");
             String nodeLocalName = pathToNode.get(i).getLocalName();
@@ -253,7 +273,7 @@ public final class BindingGeneratorUtil {
      *            JAVA class name
      * @return string which is in accordance with best practices for JAVA class
      *         name.
-     *         
+     *
      * @deprecated Use {@link BindingMapping#getClassName(QName)} instead.
      */
     @Deprecated