Use Locale.ROOT for toUpperCase
[mdsal.git] / binding / mdsal-binding-java-api-generator / src / main / java / org / opendaylight / mdsal / binding / java / api / generator / BaseTemplate.xtend
index d57fab88a597ff29df4f0832345b9d12ebaa9e81..b4a6b0d9fc9acf11c7371ee18385864a251857ec 100644 (file)
@@ -31,10 +31,11 @@ import org.opendaylight.mdsal.binding.model.api.Restrictions
 import org.opendaylight.mdsal.binding.model.api.Type
 import org.opendaylight.mdsal.binding.model.api.TypeMemberComment
 import org.opendaylight.mdsal.binding.model.ri.TypeConstants
-import org.opendaylight.mdsal.binding.spec.naming.BindingMapping
 import org.opendaylight.yangtools.yang.binding.BaseIdentity
+import org.opendaylight.yangtools.yang.binding.contract.Naming
+import org.opendaylight.yangtools.yang.common.YangDataName
 
-abstract class BaseTemplate extends JavaFileTemplate {
+abstract class BaseTemplate extends AbstractBaseTemplate {
     static final char NEW_LINE = '\n'
     static final char SPACE = ' '
     static val WS_MATCHER = CharMatcher.anyOf("\n\t")
@@ -49,23 +50,7 @@ abstract class BaseTemplate extends JavaFileTemplate {
         super(javaType, type)
     }
 
-    final def generate() {
-        val _body = body()
-        '''
-            package «type.packageName»;
-            «generateImportBlock»
-
-            «_body»
-        '''.toString
-    }
-
-    protected abstract def CharSequence body();
-
     // Helper patterns
-    final protected def fieldName(GeneratedProperty property) {
-        "_" + property.name
-    }
-
     /**
      * Template method which generates the getter method for <code>field</code>
      *
@@ -85,14 +70,6 @@ abstract class BaseTemplate extends JavaFileTemplate {
         }
     '''
 
-    final protected def getterMethodName(GeneratedProperty field) {
-        return field.name.getterMethodName
-    }
-
-    final protected def getterMethodName(String propName) {
-        return '''«BindingMapping.GETTER_PREFIX»«propName.toFirstUpper»'''
-    }
-
     /**
      * Template method which generates the setter method for <code>field</code>
      *
@@ -295,13 +272,19 @@ abstract class BaseTemplate extends JavaFileTemplate {
     »'''
 
     def protected emitConstant(Constant c) '''
-        «IF BindingMapping.QNAME_STATIC_FIELD_NAME.equals(c.name)»
+        «IF Naming.QNAME_STATIC_FIELD_NAME.equals(c.name)»
             «val entry = c.value as Entry<JavaTypeName, String>»
             /**
              * YANG identifier of the statement represented by this class.
              */
-            public static final «c.type.importedNonNull» «c.name» = «entry.key.importedName».«BindingMapping.MODULE_INFO_QNAMEOF_METHOD_NAME»("«entry.value»");
-        «ELSEIF BindingMapping.VALUE_STATIC_FIELD_NAME.equals(c.name) && BaseIdentity.equals(c.value)»
+            public static final «c.type.importedNonNull» «c.name» = «entry.key.importedName».«Naming.MODULE_INFO_QNAMEOF_METHOD_NAME»("«entry.value»");
+        «ELSEIF Naming.NAME_STATIC_FIELD_NAME.equals(c.name)»
+            «val entry = c.value as Entry<JavaTypeName, YangDataName>»
+            /**
+             * Yang Data template name of the statement represented by this class.
+             */
+            public static final «c.type.importedNonNull» «c.name» = «entry.key.importedName».«Naming.MODULE_INFO_YANGDATANAMEOF_METHOD_NAME»("«entry.value.name»");
+        «ELSEIF Naming.VALUE_STATIC_FIELD_NAME.equals(c.name) && BaseIdentity.equals(c.value)»
             «val typeName = c.type.importedName»
             «val override = OVERRIDE.importedName»
             /**
@@ -309,7 +292,7 @@ abstract class BaseTemplate extends JavaFileTemplate {
              */
             public static final «c.type.importedNonNull» «c.name» = new «typeName»() {
                 @«override»
-                public «CLASS.importedName»<«typeName»> «BindingMapping.BINDING_CONTRACT_IMPLEMENTED_INTERFACE_NAME»() {
+                public «CLASS.importedName»<«typeName»> «Naming.BINDING_CONTRACT_IMPLEMENTED_INTERFACE_NAME»() {
                     return «typeName».class;
                 }
 
@@ -321,7 +304,7 @@ abstract class BaseTemplate extends JavaFileTemplate {
                 @«override»
                 public boolean equals(final «objectType.importedName» obj) {
                     return obj == this || obj instanceof «typeName» other
-                        && «typeName».class.equals(other.«BindingMapping.BINDING_CONTRACT_IMPLEMENTED_INTERFACE_NAME»());
+                        && «typeName».class.equals(other.«Naming.BINDING_CONTRACT_IMPLEMENTED_INTERFACE_NAME»());
                 }
 
                 @«override»
@@ -337,10 +320,10 @@ abstract class BaseTemplate extends JavaFileTemplate {
     def protected generateCheckers(GeneratedProperty field, Restrictions restrictions, Type actualType) '''
        «IF restrictions.rangeConstraint.present»
            «AbstractRangeGenerator.forType(actualType).generateRangeChecker(field.name.toFirstUpper,
-               restrictions.rangeConstraint.get, this)»
+               restrictions.rangeConstraint.orElseThrow, this)»
        «ENDIF»
        «IF restrictions.lengthConstraint.present»
-           «LengthGenerator.generateLengthChecker(field.fieldName, actualType, restrictions.lengthConstraint.get, this)»
+           «LengthGenerator.generateLengthChecker(field.fieldName, actualType, restrictions.lengthConstraint.orElseThrow, this)»
        «ENDIF»
     '''
 
@@ -361,7 +344,7 @@ abstract class BaseTemplate extends JavaFileTemplate {
            «ENDIF»
        «ENDIF»
 
-       «val fieldUpperCase = fieldName.toUpperCase(Locale.ENGLISH
+       «val fieldUpperCase = fieldName.toUpperCase(Locale.ROOT
        «FOR currentConstant : type.getConstantDefinitions»
            «IF currentConstant.getName.startsWith(TypeConstants.PATTERN_CONSTANT_NAME)
                && fieldUpperCase.equals(currentConstant.getName.substring(TypeConstants.PATTERN_CONSTANT_NAME.length))»