Add missing copyright headers
[yangtools.git] / code-generator / binding-generator-util / src / main / java / org / opendaylight / yangtools / binding / generator / util / BindingGeneratorUtil.java
index 57e319f5904aacbf7146988bbd99136d40b52742..e39d6251eaaa3e0953d4b6d29d2d4bdd1a367e6c 100644 (file)
@@ -1,3 +1,10 @@
+/*
+ * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
 package org.opendaylight.yangtools.binding.generator.util;
 
 import java.io.ByteArrayOutputStream;
@@ -22,13 +29,17 @@ import org.opendaylight.yangtools.sal.binding.model.api.Type;
 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedPropertyBuilder;
 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.MethodSignatureBuilder;
 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.TypeMemberBuilder;
+import org.opendaylight.yangtools.yang.binding.BindingMapping;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
 import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
 import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
+import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition;
 import org.opendaylight.yangtools.yang.model.util.ExtendedType;
 
 /**
@@ -44,6 +55,7 @@ public final class BindingGeneratorUtil {
     /**
      * Array of strings values which represents JAVA reserved words.
      */
+    @Deprecated
     private static final String[] SET_VALUES = new String[] { "abstract", "assert", "boolean", "break", "byte", "case",
             "catch", "char", "class", "const", "continue", "default", "double", "do", "else", "enum", "extends",
             "false", "final", "finally", "float", "for", "goto", "if", "implements", "import", "instanceof", "int",
@@ -61,6 +73,7 @@ public final class BindingGeneratorUtil {
     /**
      * Hash set of words which are reserved in JAVA language.
      */
+    @Deprecated
     private static final Set<String> JAVA_RESERVED_WORDS = new HashSet<String>(Arrays.asList(SET_VALUES));
 
     /**
@@ -240,7 +253,10 @@ 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
     public static String parseToClassName(String token) {
         return parseToCamelCase(token, true);
     }
@@ -404,9 +420,19 @@ public final class BindingGeneratorUtil {
 
         if (type instanceof ExtendedType) {
             ExtendedType ext = (ExtendedType)type;
+            TypeDefinition<?> base = ext.getBaseType();
             length.addAll(ext.getLengthConstraints());
             pattern.addAll(ext.getPatternConstraints());
             range.addAll(ext.getRangeConstraints());
+
+            if (base instanceof IntegerTypeDefinition && range.isEmpty()) {
+                range.addAll(((IntegerTypeDefinition)base).getRangeConstraints());
+            } else if (base instanceof UnsignedIntegerTypeDefinition && range.isEmpty()) {
+                range.addAll(((UnsignedIntegerTypeDefinition)base).getRangeConstraints());
+            } else if (base instanceof DecimalTypeDefinition && range.isEmpty()) {
+                range.addAll(((DecimalTypeDefinition)base).getRangeConstraints());
+            }
+
         }
 
         return new Restrictions() {