Merge "- Removed sitebuildsettings, the deployment of this and manteinance in openday...
authorGiovanni Meo <gmeo@cisco.com>
Thu, 28 Mar 2013 16:30:26 +0000 (16:30 +0000)
committerGerrit Code Review <gerrit@daylight1.linux-foundation.org>
Thu, 28 Mar 2013 16:30:26 +0000 (16:30 +0000)
44 files changed:
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/api/SchemaNodeBuilder.java
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/api/TypeDefinitionBuilder.java
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/ContainerSchemaNodeBuilder.java
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/ExtensionBuilder.java
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/FeatureBuilder.java
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/GroupingBuilderImpl.java
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/LeafListSchemaNodeBuilder.java
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/LeafSchemaNodeBuilder.java
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/ListSchemaNodeBuilder.java
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/NotificationBuilder.java
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/RpcDefinitionBuilder.java
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/TypedefBuilder.java
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/UnknownSchemaNodeBuilder.java
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/impl/YangModelParserImpl.java
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/util/YangModelBuilderUtil.java
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/model/parser/impl/YangModelParserTest.java
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/resources/model/testfile1.yang
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/resources/model/testfile2.yang
opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/model/api/type/UnknownTypeDefinition.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/AbstractSignedInteger.java [moved from opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/AbstractInteger.java with 71% similarity]
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/AbstractUnsignedInteger.java [new file with mode: 0644]
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/BaseConstraints.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/BaseTypes.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/BinaryType.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/BitsType.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/BooleanType.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/Decimal64.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/EnumerationType.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/IdentityType.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/Identityref.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/InstanceIdentifier.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/Int16.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/Int32.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/Int64.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/Int8.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/Leafref.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/RevisionAwareXPathImpl.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/StringType.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/Uint16.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/Uint32.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/Uint64.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/Uint8.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/UnknownType.java
opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/YangTypesConverter.java

index 06855cffacea0d72ae042efe1312e9dd99fc0b73..b96347ef18f53d326cccea7d53a7d2f3233f7f00 100644 (file)
@@ -1,26 +1,32 @@
-/*
- * Copyright (c) 2013 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.controller.yang.model.parser.builder.api;
-
-import org.opendaylight.controller.yang.common.QName;
-import org.opendaylight.controller.yang.model.api.SchemaPath;
-import org.opendaylight.controller.yang.model.api.Status;
-
-
-/**
- * Interface for all builders of SchemaNode nodes.
- */
-public interface SchemaNodeBuilder extends Builder {
-
-       QName getQName();
-       void setPath(SchemaPath schemaPath);
-       void setDescription(String description);
-       void setReference(String reference);
-       void setStatus(Status status);
-
-}
+/*\r
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.controller.yang.model.parser.builder.api;\r
+\r
+import org.opendaylight.controller.yang.common.QName;\r
+import org.opendaylight.controller.yang.model.api.SchemaPath;\r
+import org.opendaylight.controller.yang.model.api.Status;\r
+import org.opendaylight.controller.yang.model.parser.builder.impl.UnknownSchemaNodeBuilder;\r
+\r
+/**\r
+ * Interface for all builders of SchemaNode nodes.\r
+ */\r
+public interface SchemaNodeBuilder extends Builder {\r
+\r
+    QName getQName();\r
+\r
+    void setPath(SchemaPath schemaPath);\r
+\r
+    void setDescription(String description);\r
+\r
+    void setReference(String reference);\r
+\r
+    void setStatus(Status status);\r
+\r
+    void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder);\r
+\r
+}\r
index fc7ef22b80b679328988cab6b4f9b3d37611cc12..a303b969a64d1be381af418385ee88f20d5cb451 100644 (file)
@@ -1,24 +1,28 @@
-/*
- * Copyright (c) 2013 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.controller.yang.model.parser.builder.api;
-
-import org.opendaylight.controller.yang.common.QName;
-import org.opendaylight.controller.yang.model.api.TypeDefinition;
-
-
-/**
- * Interface for builders of 'typedef' statement.
- */
-public interface TypeDefinitionBuilder {
-
-       QName getQName();
-       TypeDefinition<?> getBaseType();
-       TypeDefinition<?> build();
-       void setUnits(String units);
-
-}
+/*\r
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.controller.yang.model.parser.builder.api;\r
+\r
+import org.opendaylight.controller.yang.common.QName;\r
+import org.opendaylight.controller.yang.model.api.TypeDefinition;\r
+\r
+/**\r
+ * Interface for builders of 'typedef' statement.\r
+ */\r
+public interface TypeDefinitionBuilder {\r
+\r
+    QName getQName();\r
+\r
+    TypeDefinition<?> getBaseType();\r
+\r
+    TypeDefinition<?> build();\r
+\r
+    void setUnits(String units);\r
+\r
+    void setDefaultValue(Object defaultValue);\r
+\r
+}\r
index 953b22e1749d42057a54f4b6855657b21270d4ac..9b965daae6473cbb81b3b8d2a622ba1d268eabfb 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.controller.yang.model.parser.builder.impl;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -43,6 +44,7 @@ public class ContainerSchemaNodeBuilder extends AbstractChildNodeBuilder
     private final Set<TypeDefinitionBuilder> addedTypedefs = new HashSet<TypeDefinitionBuilder>();
     private final Set<AugmentationSchema> augmentations = new HashSet<AugmentationSchema>();
     private final Set<UsesNodeBuilder> addedUsesNodes = new HashSet<UsesNodeBuilder>();
+    private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
 
     ContainerSchemaNodeBuilder(QName qname) {
         super(qname);
@@ -80,6 +82,13 @@ public class ContainerSchemaNodeBuilder extends AbstractChildNodeBuilder
         }
         instance.setUses(uses);
 
+        // UNKNOWN NODES
+        final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
+        for(UnknownSchemaNodeBuilder b : addedUnknownNodes) {
+            unknownNodes.add(b.build());
+        }
+        instance.setUnknownSchemaNodes(unknownNodes);
+
         instance.setConstraints(constraintsBuilder.build());
         instance.setAvailableAugmentations(augmentations);
 
@@ -140,6 +149,11 @@ public class ContainerSchemaNodeBuilder extends AbstractChildNodeBuilder
         instance.setPresenceContainer(presence);
     }
 
+    @Override
+    public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
+        addedUnknownNodes.add(unknownSchemaNodeBuilder);
+    }
+
     private class ContainerSchemaNodeImpl implements ContainerSchemaNode {
 
         private final QName qname;
@@ -155,6 +169,7 @@ public class ContainerSchemaNodeBuilder extends AbstractChildNodeBuilder
         private Set<GroupingDefinition> groupings = Collections.emptySet();
         private Set<TypeDefinition<?>> typeDefinitions = Collections.emptySet();
         private Set<UsesNode> uses = Collections.emptySet();
+        private List<UnknownSchemaNode> unknownSchemaNodes = Collections.emptyList();
         private boolean presence;
 
         private ContainerSchemaNodeImpl(QName qname) {
@@ -315,7 +330,13 @@ public class ContainerSchemaNodeBuilder extends AbstractChildNodeBuilder
 
         @Override
         public List<UnknownSchemaNode> getUnknownSchemaNodes() {
-            return Collections.emptyList();
+            return unknownSchemaNodes;
+        }
+
+        private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownSchemaNodes) {
+            if(unknownSchemaNodes != null) {
+                this.unknownSchemaNodes = unknownSchemaNodes;
+            }
         }
 
         @Override
@@ -323,6 +344,7 @@ public class ContainerSchemaNodeBuilder extends AbstractChildNodeBuilder
             final int prime = 31;
             int result = 1;
             result = prime * result + ((qname == null) ? 0 : qname.hashCode());
+            result = prime * result + ((path == null) ? 0 : path.hashCode());
             return result;
         }
 
@@ -345,6 +367,13 @@ public class ContainerSchemaNodeBuilder extends AbstractChildNodeBuilder
             } else if (!qname.equals(other.qname)) {
                 return false;
             }
+            if (path == null) {
+                if (other.path != null) {
+                    return false;
+                }
+            } else if (!path.equals(other.path)) {
+                return false;
+            }
             return true;
         }
 
index 735feb1ab7c3a7931510c44591a1beda47c8c6af..fa5c4954ad65483a729e1b01ec2fca98003b6080 100644 (file)
@@ -22,12 +22,12 @@ public class ExtensionBuilder implements SchemaNodeBuilder {
 
     private final ExtensionDefinitionImpl instance;
     private final QName qname;
-    private final List<UnknownSchemaNodeBuilder> addedExtensions;
+    private final List<UnknownSchemaNodeBuilder> addedExtensions = new ArrayList<UnknownSchemaNodeBuilder>();
+    private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
 
     ExtensionBuilder(QName qname) {
         this.qname = qname;
         instance = new ExtensionDefinitionImpl(qname);
-        addedExtensions = new ArrayList<UnknownSchemaNodeBuilder>();
     }
 
     @Override
@@ -73,6 +73,11 @@ public class ExtensionBuilder implements SchemaNodeBuilder {
         instance.setStatus(status);
     }
 
+    @Override
+    public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
+        addedUnknownNodes.add(unknownSchemaNodeBuilder);
+    }
+
     private static class ExtensionDefinitionImpl implements ExtensionDefinition {
         private final QName qname;
         private SchemaPath schemaPath;
index 23c74fd0bc57aca621b1b12cf24b5fab069b8abb..b8617003505dc68a9a5283091d3a87c88b35e5ac 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.controller.yang.model.parser.builder.impl;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
@@ -21,6 +22,7 @@ public class FeatureBuilder implements SchemaNodeBuilder {
 
     private final FeatureDefinitionImpl instance;
     private final QName qname;
+    private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
 
     FeatureBuilder(QName qname) {
         this.qname = qname;
@@ -29,6 +31,13 @@ public class FeatureBuilder implements SchemaNodeBuilder {
 
     @Override
     public FeatureDefinitionImpl build() {
+        // UNKNOWN NODES
+        final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
+        for(UnknownSchemaNodeBuilder b : addedUnknownNodes) {
+            unknownNodes.add(b.build());
+        }
+        instance.setUnknownSchemaNodes(unknownNodes);
+
         return instance;
     }
 
@@ -57,6 +66,11 @@ public class FeatureBuilder implements SchemaNodeBuilder {
         instance.setStatus(status);
     }
 
+    @Override
+    public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
+        addedUnknownNodes.add(unknownSchemaNodeBuilder);
+    }
+
     private static class FeatureDefinitionImpl implements FeatureDefinition {
         private final QName qname;
         private SchemaPath path;
@@ -117,18 +131,18 @@ public class FeatureBuilder implements SchemaNodeBuilder {
             return unknownSchemaNodes;
         }
 
+        private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownSchemaNodes) {
+            if(unknownSchemaNodes != null) {
+                this.unknownSchemaNodes = unknownSchemaNodes;
+            }
+        }
+
         @Override
         public int hashCode() {
             final int prime = 31;
             int result = 1;
             result = prime * result + ((qname == null) ? 0 : qname.hashCode());
             result = prime * result + ((path == null) ? 0 : path.hashCode());
-            result = prime * result
-                    + ((description == null) ? 0 : description.hashCode());
-            result = prime * result
-                    + ((reference == null) ? 0 : reference.hashCode());
-            result = prime * result
-                    + ((status == null) ? 0 : status.hashCode());
             return result;
         }
 
@@ -158,27 +172,6 @@ public class FeatureBuilder implements SchemaNodeBuilder {
             } else if (!path.equals(other.path)) {
                 return false;
             }
-            if (description == null) {
-                if (other.description != null) {
-                    return false;
-                }
-            } else if (!description.equals(other.description)) {
-                return false;
-            }
-            if (reference == null) {
-                if (other.reference != null) {
-                    return false;
-                }
-            } else if (!reference.equals(other.reference)) {
-                return false;
-            }
-            if (status == null) {
-                if (other.status != null) {
-                    return false;
-                }
-            } else if (!status.equals(other.status)) {
-                return false;
-            }
             return true;
         }
 
@@ -187,10 +180,7 @@ public class FeatureBuilder implements SchemaNodeBuilder {
             StringBuilder sb = new StringBuilder(
                     FeatureDefinitionImpl.class.getSimpleName());
             sb.append("[name=" + qname);
-            sb.append(", path=" + path);
-            sb.append(", description=" + description);
-            sb.append(", reference=" + reference);
-            sb.append(", status=" + status + "]");
+            sb.append(", path=" + path + "]");
             return sb.toString();
         }
     }
index 1bacca8d5b3dc78168efafd28ca5e71e07d11490..03dd15b50466024741a0a6edbf86632cc66a2ee4 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.controller.yang.model.parser.builder.impl;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -34,6 +35,7 @@ public class GroupingBuilderImpl implements GroupingBuilder {
     private final Set<GroupingBuilder> groupings = new HashSet<GroupingBuilder>();
     private final Set<TypeDefinitionBuilder> addedTypedefs = new HashSet<TypeDefinitionBuilder>();
     private final Set<UsesNodeBuilder> usesNodes = new HashSet<UsesNodeBuilder>();
+    private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
 
     GroupingBuilderImpl(QName qname) {
         this.instance = new GroupingDefinitionImpl(qname);
@@ -69,6 +71,13 @@ public class GroupingBuilderImpl implements GroupingBuilder {
         }
         instance.setUses(usesNodeDefinitions);
 
+        // UNKNOWN NODES
+        final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
+        for(UnknownSchemaNodeBuilder b : addedUnknownNodes) {
+            unknownNodes.add(b.build());
+        }
+        instance.setUnknownSchemaNodes(unknownNodes);
+
         return instance;
     }
 
@@ -120,16 +129,22 @@ public class GroupingBuilderImpl implements GroupingBuilder {
         usesNodes.add(usesBuilder);
     }
 
+    @Override
+    public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
+        addedUnknownNodes.add(unknownSchemaNodeBuilder);
+    }
+
     private static class GroupingDefinitionImpl implements GroupingDefinition {
         private final QName qname;
         private SchemaPath path;
         private String description;
         private String reference;
         private Status status;
-        private Map<QName, DataSchemaNode> childNodes;
-        private Set<GroupingDefinition> groupings;
-        private Set<TypeDefinition<?>> typeDefinitions;
-        private Set<UsesNode> uses;
+        private Map<QName, DataSchemaNode> childNodes = Collections.emptyMap();
+        private Set<GroupingDefinition> groupings = Collections.emptySet();
+        private Set<TypeDefinition<?>> typeDefinitions = Collections.emptySet();
+        private Set<UsesNode> uses = Collections.emptySet();
+        private List<UnknownSchemaNode> unknownSchemaNodes = Collections.emptyList();
 
         private GroupingDefinitionImpl(QName qname) {
             this.qname = qname;
@@ -214,7 +229,13 @@ public class GroupingBuilderImpl implements GroupingBuilder {
 
         @Override
         public List<UnknownSchemaNode> getUnknownSchemaNodes() {
-            return Collections.emptyList();
+            return unknownSchemaNodes;
+        }
+
+        private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownSchemaNodes) {
+            if(unknownSchemaNodes != null) {
+                this.unknownSchemaNodes = unknownSchemaNodes;
+            }
         }
 
         @Override
@@ -240,21 +261,6 @@ public class GroupingBuilderImpl implements GroupingBuilder {
             int result = 1;
             result = prime * result + ((qname == null) ? 0 : qname.hashCode());
             result = prime * result + ((path == null) ? 0 : path.hashCode());
-            result = prime * result
-                    + ((description == null) ? 0 : description.hashCode());
-            result = prime * result
-                    + ((reference == null) ? 0 : reference.hashCode());
-            result = prime * result
-                    + ((status == null) ? 0 : status.hashCode());
-            result = prime * result
-                    + ((childNodes == null) ? 0 : childNodes.hashCode());
-            result = prime * result
-                    + ((groupings == null) ? 0 : groupings.hashCode());
-            result = prime
-                    * result
-                    + ((typeDefinitions == null) ? 0 : typeDefinitions
-                            .hashCode());
-            result = prime * result + ((uses == null) ? 0 : uses.hashCode());
             return result;
         }
 
@@ -284,55 +290,6 @@ public class GroupingBuilderImpl implements GroupingBuilder {
             } else if (!path.equals(other.path)) {
                 return false;
             }
-            if (description == null) {
-                if (other.description != null) {
-                    return false;
-                }
-            } else if (!description.equals(other.description)) {
-                return false;
-            }
-            if (reference == null) {
-                if (other.reference != null) {
-                    return false;
-                }
-            } else if (!reference.equals(other.reference)) {
-                return false;
-            }
-            if (status == null) {
-                if (other.status != null) {
-                    return false;
-                }
-            } else if (!status.equals(other.status)) {
-                return false;
-            }
-            if (childNodes == null) {
-                if (other.childNodes != null) {
-                    return false;
-                }
-            } else if (!childNodes.equals(other.childNodes)) {
-                return false;
-            }
-            if (groupings == null) {
-                if (other.groupings != null) {
-                    return false;
-                }
-            } else if (!groupings.equals(other.groupings)) {
-                return false;
-            }
-            if (typeDefinitions == null) {
-                if (other.typeDefinitions != null) {
-                    return false;
-                }
-            } else if (!typeDefinitions.equals(other.typeDefinitions)) {
-                return false;
-            }
-            if (uses == null) {
-                if (other.uses != null) {
-                    return false;
-                }
-            } else if (!uses.equals(other.uses)) {
-                return false;
-            }
             return true;
         }
 
index 99d3e647940c06ceebb0debf22c40426540941a9..5a9fdb581548710946cd474afd9f47eb6c8ae348 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.controller.yang.model.parser.builder.impl;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
@@ -26,13 +27,13 @@ public class LeafListSchemaNodeBuilder implements SchemaNodeBuilder,
 
     private final LeafListSchemaNodeImpl instance;
     private final QName qname;
-    private final ConstraintsBuilder constraintsBuilder;
+    private final ConstraintsBuilder constraintsBuilder = new ConstraintsBuilder();
+    private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
     private TypeDefinition<?> type;
 
     LeafListSchemaNodeBuilder(QName qname) {
         this.qname = qname;
         instance = new LeafListSchemaNodeImpl(qname);
-        constraintsBuilder = new ConstraintsBuilder();
     }
 
     @Override
@@ -98,6 +99,11 @@ public class LeafListSchemaNodeBuilder implements SchemaNodeBuilder,
         instance.setUserOrdered(userOrdered);
     }
 
+    @Override
+    public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
+        addedUnknownNodes.add(unknownSchemaNodeBuilder);
+    }
+
     private class LeafListSchemaNodeImpl implements LeafListSchemaNode {
         private final QName qname;
         private SchemaPath path;
@@ -206,24 +212,18 @@ public class LeafListSchemaNodeBuilder implements SchemaNodeBuilder,
             return unknownSchemaNodes;
         }
 
+        private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownSchemaNodes) {
+            if(unknownSchemaNodes != null) {
+                this.unknownSchemaNodes = unknownSchemaNodes;
+            }
+        }
+
         @Override
         public int hashCode() {
             final int prime = 31;
             int result = 1;
             result = prime * result + ((qname == null) ? 0 : qname.hashCode());
             result = prime * result + ((path == null) ? 0 : path.hashCode());
-            result = prime * result
-                    + ((description == null) ? 0 : description.hashCode());
-            result = prime * result
-                    + ((reference == null) ? 0 : reference.hashCode());
-            result = prime * result
-                    + ((status == null) ? 0 : status.hashCode());
-            result = prime * result + (augmenting ? 1231 : 1237);
-            result = prime * result + (configuration ? 1231 : 1237);
-            result = prime * result
-                    + ((constraints == null) ? 0 : constraints.hashCode());
-            result = prime * result + ((type == null) ? 0 : type.hashCode());
-            result = prime * result + (userOrdered ? 1231 : 1237);
             return result;
         }
 
@@ -253,50 +253,6 @@ public class LeafListSchemaNodeBuilder implements SchemaNodeBuilder,
             } else if (!path.equals(other.path)) {
                 return false;
             }
-            if (description == null) {
-                if (other.description != null) {
-                    return false;
-                }
-            } else if (!description.equals(other.description)) {
-                return false;
-            }
-            if (reference == null) {
-                if (other.reference != null) {
-                    return false;
-                }
-            } else if (!reference.equals(other.reference)) {
-                return false;
-            }
-            if (status == null) {
-                if (other.status != null) {
-                    return false;
-                }
-            } else if (!status.equals(other.status)) {
-                return false;
-            }
-            if (augmenting != other.augmenting) {
-                return false;
-            }
-            if (configuration != other.configuration) {
-                return false;
-            }
-            if (constraints == null) {
-                if (other.constraints != null) {
-                    return false;
-                }
-            } else if (!constraints.equals(other.constraints)) {
-                return false;
-            }
-            if (type == null) {
-                if (other.type != null) {
-                    return false;
-                }
-            } else if (!type.equals(other.type)) {
-                return false;
-            }
-            if (userOrdered != other.userOrdered) {
-                return false;
-            }
             return true;
         }
 
index 5c28e1ba2c8233d7e271a0b98c468c30ef945e67..bd18ba50a3c5e8eb7065f01948d5ba0b67d8b314 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.controller.yang.model.parser.builder.impl;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
@@ -26,17 +27,24 @@ public class LeafSchemaNodeBuilder implements DataSchemaNodeBuilder,
 
     private final QName qname;
     private final LeafSchemaNodeImpl instance;
-    private final ConstraintsBuilder constraintsBuilder;
+    private final ConstraintsBuilder constraintsBuilder = new ConstraintsBuilder();
+    private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
     private TypeDefinition<?> type;
 
     LeafSchemaNodeBuilder(QName qname) {
         this.qname = qname;
         instance = new LeafSchemaNodeImpl(qname);
-        constraintsBuilder = new ConstraintsBuilder();
     }
 
     @Override
     public LeafSchemaNode build() {
+        // UNKNOWN NODES
+        final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
+        for(UnknownSchemaNodeBuilder b : addedUnknownNodes) {
+            unknownNodes.add(b.build());
+        }
+        instance.setUnknownSchemaNodes(unknownNodes);
+
         instance.setConstraints(constraintsBuilder.build());
         return instance;
     }
@@ -94,6 +102,11 @@ public class LeafSchemaNodeBuilder implements DataSchemaNodeBuilder,
         instance.setType(type);
     }
 
+    @Override
+    public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
+        addedUnknownNodes.add(unknownSchemaNodeBuilder);
+    }
+
     private class LeafSchemaNodeImpl implements LeafSchemaNode {
         private final QName qname;
         private SchemaPath path;
@@ -194,23 +207,18 @@ public class LeafSchemaNodeBuilder implements DataSchemaNodeBuilder,
             return unknownSchemaNodes;
         }
 
+        private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownSchemaNodes) {
+            if(unknownSchemaNodes != null) {
+                this.unknownSchemaNodes = unknownSchemaNodes;
+            }
+        }
+
         @Override
         public int hashCode() {
             final int prime = 31;
             int result = 1;
             result = prime * result + ((qname == null) ? 0 : qname.hashCode());
             result = prime * result + ((path == null) ? 0 : path.hashCode());
-            result = prime * result
-                    + ((description == null) ? 0 : description.hashCode());
-            result = prime * result
-                    + ((reference == null) ? 0 : reference.hashCode());
-            result = prime * result
-                    + ((status == null) ? 0 : status.hashCode());
-            result = prime * result + (augmenting ? 1231 : 1237);
-            result = prime * result + (configuration ? 1231 : 1237);
-            result = prime * result
-                    + ((constraints == null) ? 0 : constraints.hashCode());
-            result = prime * result + ((type == null) ? 0 : type.hashCode());
             return result;
         }
 
@@ -240,47 +248,6 @@ public class LeafSchemaNodeBuilder implements DataSchemaNodeBuilder,
             } else if (!path.equals(other.path)) {
                 return false;
             }
-            if (description == null) {
-                if (other.description != null) {
-                    return false;
-                }
-            } else if (!description.equals(other.description)) {
-                return false;
-            }
-            if (reference == null) {
-                if (other.reference != null) {
-                    return false;
-                }
-            } else if (!reference.equals(other.reference)) {
-                return false;
-            }
-            if (status == null) {
-                if (other.status != null) {
-                    return false;
-                }
-            } else if (!status.equals(other.status)) {
-                return false;
-            }
-            if (augmenting != other.augmenting) {
-                return false;
-            }
-            if (configuration != other.configuration) {
-                return false;
-            }
-            if (constraints == null) {
-                if (other.constraints != null) {
-                    return false;
-                }
-            } else if (!constraints.equals(other.constraints)) {
-                return false;
-            }
-            if (type == null) {
-                if (other.type != null) {
-                    return false;
-                }
-            } else if (!type.equals(other.type)) {
-                return false;
-            }
             return true;
         }
 
index 2a4befe1e3afb068397f0c36d3834e511f49399a..ccca99c2bcd74d9a8a8db7cbb90fcb544e5337f3 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.controller.yang.model.parser.builder.impl;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -44,6 +45,7 @@ public class ListSchemaNodeBuilder extends AbstractChildNodeBuilder implements
     private final Set<TypeDefinitionBuilder> addedTypedefs = new HashSet<TypeDefinitionBuilder>();
     private final Set<AugmentationSchema> augmentations = new HashSet<AugmentationSchema>();
     private final Set<UsesNodeBuilder> usesNodes = new HashSet<UsesNodeBuilder>();
+    private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
 
     ListSchemaNodeBuilder(QName qname) {
         super(qname);
@@ -81,6 +83,13 @@ public class ListSchemaNodeBuilder extends AbstractChildNodeBuilder implements
         }
         instance.setGroupings(groupingDefinitions);
 
+        // UNKNOWN NODES
+        final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
+        for(UnknownSchemaNodeBuilder b : addedUnknownNodes) {
+            unknownNodes.add(b.build());
+        }
+        instance.setUnknownSchemaNodes(unknownNodes);
+
         instance.setConstraints(constraintsBuilder.build());
         instance.setAvailableAugmentations(augmentations);
 
@@ -147,6 +156,11 @@ public class ListSchemaNodeBuilder extends AbstractChildNodeBuilder implements
         instance.setUserOrdered(userOrdered);
     }
 
+    @Override
+    public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
+        addedUnknownNodes.add(unknownSchemaNodeBuilder);
+    }
+
     private class ListSchemaNodeImpl implements ListSchemaNode {
         private final QName qname;
         private SchemaPath path;
@@ -339,36 +353,18 @@ public class ListSchemaNodeBuilder extends AbstractChildNodeBuilder implements
             return unknownSchemaNodes;
         }
 
+        private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownSchemaNodes) {
+            if(unknownSchemaNodes != null) {
+                this.unknownSchemaNodes = unknownSchemaNodes;
+            }
+        }
+
         @Override
         public int hashCode() {
             final int prime = 31;
             int result = 1;
             result = prime * result + ((qname == null) ? 0 : qname.hashCode());
             result = prime * result + ((path == null) ? 0 : path.hashCode());
-            result = prime * result
-                    + ((description == null) ? 0 : description.hashCode());
-            result = prime * result
-                    + ((reference == null) ? 0 : reference.hashCode());
-            result = prime * result
-                    + ((status == null) ? 0 : status.hashCode());
-            result = prime * result
-                    + ((keyDefinition == null) ? 0 : keyDefinition.hashCode());
-            result = prime * result + (augmenting ? 1231 : 1237);
-            result = prime * result + (configuration ? 1231 : 1237);
-            result = prime * result
-                    + ((constraints == null) ? 0 : constraints.hashCode());
-            result = prime * result
-                    + ((augmentations == null) ? 0 : augmentations.hashCode());
-            result = prime * result
-                    + ((childNodes == null) ? 0 : childNodes.hashCode());
-            result = prime
-                    * result
-                    + ((typeDefinitions == null) ? 0 : typeDefinitions
-                            .hashCode());
-            result = prime * result
-                    + ((groupings == null) ? 0 : groupings.hashCode());
-            result = prime * result + ((uses == null) ? 0 : uses.hashCode());
-            result = prime * result + (userOrdered ? 1231 : 1237);
             return result;
         }
 
@@ -398,85 +394,6 @@ public class ListSchemaNodeBuilder extends AbstractChildNodeBuilder implements
             } else if (!path.equals(other.path)) {
                 return false;
             }
-            if (description == null) {
-                if (other.description != null) {
-                    return false;
-                }
-            } else if (!description.equals(other.description)) {
-                return false;
-            }
-            if (reference == null) {
-                if (other.reference != null) {
-                    return false;
-                }
-            } else if (!reference.equals(other.reference)) {
-                return false;
-            }
-            if (status == null) {
-                if (other.status != null) {
-                    return false;
-                }
-            } else if (!status.equals(other.status)) {
-                return false;
-            }
-            if (keyDefinition == null) {
-                if (other.keyDefinition != null) {
-                    return false;
-                }
-            } else if (!keyDefinition.equals(other.keyDefinition)) {
-                return false;
-            }
-            if (augmenting != other.augmenting) {
-                return false;
-            }
-            if (configuration != other.configuration) {
-                return false;
-            }
-            if (constraints == null) {
-                if (other.constraints != null) {
-                    return false;
-                }
-            } else if (!constraints.equals(other.constraints)) {
-                return false;
-            }
-            if (augmentations == null) {
-                if (other.augmentations != null) {
-                    return false;
-                }
-            } else if (!augmentations.equals(other.augmentations)) {
-                return false;
-            }
-            if (childNodes == null) {
-                if (other.childNodes != null) {
-                    return false;
-                }
-            } else if (!childNodes.equals(other.childNodes)) {
-                return false;
-            }
-            if (typeDefinitions == null) {
-                if (other.typeDefinitions != null) {
-                    return false;
-                }
-            } else if (!typeDefinitions.equals(other.typeDefinitions)) {
-                return false;
-            }
-            if (groupings == null) {
-                if (other.groupings != null) {
-                    return false;
-                }
-            } else if (!groupings.equals(other.groupings)) {
-                return false;
-            }
-            if (uses == null) {
-                if (other.uses != null) {
-                    return false;
-                }
-            } else if (!uses.equals(other.uses)) {
-                return false;
-            }
-            if (userOrdered != other.userOrdered) {
-                return false;
-            }
             return true;
         }
 
index 783b21e04b717ba63695c008ce3545e03e4ec782..d2010c6578deb987f946f39e0ec29fe7e3178edc 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.controller.yang.model.parser.builder.impl;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -38,6 +39,7 @@ public class NotificationBuilder extends AbstractChildNodeBuilder implements
     private final NotificationDefinitionImpl instance;
     private final Set<TypeDefinitionBuilder> addedTypedefs = new HashSet<TypeDefinitionBuilder>();
     private final Set<UsesNodeBuilder> addedUsesNodes = new HashSet<UsesNodeBuilder>();
+    private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
 
     NotificationBuilder(QName qname) {
         super(qname);
@@ -74,6 +76,13 @@ public class NotificationBuilder extends AbstractChildNodeBuilder implements
         }
         instance.setUses(uses);
 
+        // UNKNOWN NODES
+        final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
+        for(UnknownSchemaNodeBuilder b : addedUnknownNodes) {
+            unknownNodes.add(b.build());
+        }
+        instance.setUnknownSchemaNodes(unknownNodes);
+
         return instance;
     }
 
@@ -107,6 +116,11 @@ public class NotificationBuilder extends AbstractChildNodeBuilder implements
         instance.setStatus(status);
     }
 
+    @Override
+    public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
+        addedUnknownNodes.add(unknownSchemaNodeBuilder);
+    }
+
     private class NotificationDefinitionImpl implements NotificationDefinition {
 
         private final QName qname;
@@ -214,6 +228,12 @@ public class NotificationBuilder extends AbstractChildNodeBuilder implements
             return unknownSchemaNodes;
         }
 
+        private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownSchemaNodes) {
+            if(unknownSchemaNodes != null) {
+                this.unknownSchemaNodes = unknownSchemaNodes;
+            }
+        }
+
         @Override
         public DataSchemaNode getDataChildByName(QName name) {
             return childNodes.get(name);
@@ -237,19 +257,6 @@ public class NotificationBuilder extends AbstractChildNodeBuilder implements
             int result = 1;
             result = prime * result + ((qname == null) ? 0 : qname.hashCode());
             result = prime * result + ((path == null) ? 0 : path.hashCode());
-            result = prime * result
-                    + ((description == null) ? 0 : description.hashCode());
-            result = prime * result
-                    + ((reference == null) ? 0 : reference.hashCode());
-            result = prime * result
-                    + ((status == null) ? 0 : status.hashCode());
-            result = prime * result
-                    + ((childNodes == null) ? 0 : childNodes.hashCode());
-            result = prime * result
-                    + ((groupings == null) ? 0 : groupings.hashCode());
-            result = prime * result
-                    + ((typeDefinitions == null) ? 0 : typeDefinitions.hashCode());
-            result = prime * result + ((uses == null) ? 0 : uses.hashCode());
             return result;
         }
 
@@ -279,55 +286,6 @@ public class NotificationBuilder extends AbstractChildNodeBuilder implements
             } else if (!path.equals(other.path)) {
                 return false;
             }
-            if (description == null) {
-                if (other.description != null) {
-                    return false;
-                }
-            } else if (!description.equals(other.description)) {
-                return false;
-            }
-            if (reference == null) {
-                if (other.reference != null) {
-                    return false;
-                }
-            } else if (!reference.equals(other.reference)) {
-                return false;
-            }
-            if (status == null) {
-                if (other.status != null) {
-                    return false;
-                }
-            } else if (!status.equals(other.status)) {
-                return false;
-            }
-            if (childNodes == null) {
-                if (other.childNodes != null) {
-                    return false;
-                }
-            } else if (!childNodes.equals(other.childNodes)) {
-                return false;
-            }
-            if (groupings == null) {
-                if (other.groupings != null) {
-                    return false;
-                }
-            } else if (!groupings.equals(other.groupings)) {
-                return false;
-            }
-            if (typeDefinitions == null) {
-                if (other.typeDefinitions != null) {
-                    return false;
-                }
-            } else if (!typeDefinitions.equals(other.typeDefinitions)) {
-                return false;
-            }
-            if (uses == null) {
-                if (other.uses != null) {
-                    return false;
-                }
-            } else if (!uses.equals(other.uses)) {
-                return false;
-            }
             return true;
         }
 
@@ -335,7 +293,7 @@ public class NotificationBuilder extends AbstractChildNodeBuilder implements
         public String toString() {
             StringBuilder sb = new StringBuilder(
                     NotificationDefinitionImpl.class.getSimpleName());
-            sb.append("[qname=" + qname + "]");
+            sb.append("[qname=" + qname + ", path="+ path +"]");
             return sb.toString();
         }
     }
index 822a8359c45fd52bf80276748dacbe6b232b5e65..28ee66751ebfe51d365ae15f1ee241e6f0f469e2 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.controller.yang.model.parser.builder.impl;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
@@ -37,6 +38,7 @@ public class RpcDefinitionBuilder implements ChildNodeBuilder,
     private ContainerSchemaNodeBuilder outputBuilder;
     private final Set<TypeDefinitionBuilder> addedTypedefs = new HashSet<TypeDefinitionBuilder>();
     private final Set<GroupingBuilder> addedGroupings = new HashSet<GroupingBuilder>();
+    private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
 
     RpcDefinitionBuilder(QName qname) {
         this.qname = qname;
@@ -64,6 +66,13 @@ public class RpcDefinitionBuilder implements ChildNodeBuilder,
         }
         instance.setGroupings(groupings);
 
+        // UNKNOWN NODES
+        final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
+        for(UnknownSchemaNodeBuilder b : addedUnknownNodes) {
+            unknownNodes.add(b.build());
+        }
+        instance.setUnknownSchemaNodes(unknownNodes);
+
         return instance;
     }
 
@@ -122,6 +131,11 @@ public class RpcDefinitionBuilder implements ChildNodeBuilder,
                 "Can not add uses node to rpc definition: rpc can not contains uses nodes.");
     }
 
+    @Override
+    public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
+        addedUnknownNodes.add(unknownSchemaNodeBuilder);
+    }
+
     @Override
     public int hashCode() {
         return qname.hashCode();
@@ -245,26 +259,17 @@ public class RpcDefinitionBuilder implements ChildNodeBuilder,
             return unknownSchemaNodes;
         }
 
+        private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownSchemaNodes) {
+            if(unknownSchemaNodes != null) {
+                this.unknownSchemaNodes = unknownSchemaNodes;
+            }
+        }
+
         @Override
         public int hashCode() {
             final int prime = 31;
             int result = 1;
             result = prime * result + ((qname == null) ? 0 : qname.hashCode());
-            result = prime * result + ((path == null) ? 0 : path.hashCode());
-            result = prime * result
-                    + ((description == null) ? 0 : description.hashCode());
-            result = prime * result
-                    + ((reference == null) ? 0 : reference.hashCode());
-            result = prime * result
-                    + ((status == null) ? 0 : status.hashCode());
-            result = prime * result
-                    + ((input == null) ? 0 : input.hashCode());
-            result = prime * result
-                    + ((output == null) ? 0 : output.hashCode());
-            result = prime * result
-                    + ((typeDefinitions == null) ? 0 : typeDefinitions.hashCode());
-            result = prime * result
-                    + ((groupings == null) ? 0 : groupings.hashCode());
             return result;
         }
 
@@ -287,62 +292,6 @@ public class RpcDefinitionBuilder implements ChildNodeBuilder,
             } else if (!qname.equals(other.qname)) {
                 return false;
             }
-            if (path == null) {
-                if (other.path != null) {
-                    return false;
-                }
-            } else if (!path.equals(other.path)) {
-                return false;
-            }
-            if (description == null) {
-                if (other.description != null) {
-                    return false;
-                }
-            } else if (!description.equals(other.description)) {
-                return false;
-            }
-            if (reference == null) {
-                if (other.reference != null) {
-                    return false;
-                }
-            } else if (!reference.equals(other.reference)) {
-                return false;
-            }
-            if (status == null) {
-                if (other.status != null) {
-                    return false;
-                }
-            } else if (!status.equals(other.status)) {
-                return false;
-            }
-            if (input == null) {
-                if (other.input != null) {
-                    return false;
-                }
-            } else if (!input.equals(other.input)) {
-                return false;
-            }
-            if (output == null) {
-                if (other.output != null) {
-                    return false;
-                }
-            } else if (!output.equals(other.output)) {
-                return false;
-            }
-            if (typeDefinitions == null) {
-                if (other.typeDefinitions != null) {
-                    return false;
-                }
-            } else if (!typeDefinitions.equals(other.typeDefinitions)) {
-                return false;
-            }
-            if (groupings == null) {
-                if (other.groupings != null) {
-                    return false;
-                }
-            } else if (!groupings.equals(other.groupings)) {
-                return false;
-            }
             return true;
         }
 
index 1a2c43d148689ecf4f9065a1254c06d181611cb9..3a8813fd6574ae4751aad0adfb713f97eb33dbe3 100644 (file)
@@ -32,6 +32,7 @@ public class TypedefBuilder implements TypeDefinitionBuilder,
     private String reference;
     private Status status;
     private String units;
+    private Object defaultValue;
 
     TypedefBuilder(QName qname) {
         this.qname = qname;
@@ -53,6 +54,7 @@ public class TypedefBuilder implements TypeDefinitionBuilder,
                 instance.setPath(schemaPath);
                 instance.setBaseType(baseType);
                 instance.setUnits(units);
+                instance.setDefaultValue(defaultValue);
                 return instance;
             } else {
                 // type
@@ -96,6 +98,11 @@ public class TypedefBuilder implements TypeDefinitionBuilder,
         this.units = units;
     }
 
+    @Override
+    public void setDefaultValue(Object defaultValue) {
+        this.defaultValue = defaultValue;
+    }
+
     @Override
     public TypeDefinition<?> getType() {
         return baseType;
@@ -111,6 +118,11 @@ public class TypedefBuilder implements TypeDefinitionBuilder,
         return baseType;
     }
 
+    @Override
+    public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
+        // TODO
+    }
+
     private static class TypeDefinitionImpl<T extends TypeDefinition<T>>
             implements TypeDefinition<T> {
 
@@ -119,6 +131,7 @@ public class TypedefBuilder implements TypeDefinitionBuilder,
         private String description;
         private String reference;
         private Status status = Status.CURRENT;
+        private Object defaultValue;
         private T baseType;
         private String units;
         private List<UnknownSchemaNode> unknownSchemaNodes = Collections.emptyList();
@@ -188,8 +201,11 @@ public class TypedefBuilder implements TypeDefinitionBuilder,
 
         @Override
         public Object getDefaultValue() {
-            // TODO Auto-generated method stub
-            return null;
+            return defaultValue;
+        }
+
+        private void setDefaultValue(Object defaultValue) {
+            this.defaultValue = defaultValue;
         }
 
         @Override
index d0bb01cf34d35db1b318569c81c334dc5163e846..91c6ed197ec30f007b3f7afefe8919316544c9ba 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.controller.yang.model.parser.builder.impl;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
@@ -20,6 +21,7 @@ public class UnknownSchemaNodeBuilder implements SchemaNodeBuilder {
 
     private final QName qname;
     private final UnknownSchemaNodeImpl instance;
+    private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
 
     UnknownSchemaNodeBuilder(final QName qname) {
         this.qname = qname;
@@ -29,6 +31,12 @@ public class UnknownSchemaNodeBuilder implements SchemaNodeBuilder {
 
     @Override
     public UnknownSchemaNode build() {
+        // UNKNOWN NODES
+        final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
+        for(UnknownSchemaNodeBuilder b : addedUnknownNodes) {
+            unknownNodes.add(b.build());
+        }
+        instance.setUnknownSchemaNodes(unknownNodes);
         return instance;
     }
 
@@ -57,6 +65,11 @@ public class UnknownSchemaNodeBuilder implements SchemaNodeBuilder {
         instance.setStatus(status);
     }
 
+    @Override
+    public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
+        addedUnknownNodes.add(unknownSchemaNodeBuilder);
+    }
+
     private static class UnknownSchemaNodeImpl implements UnknownSchemaNode {
         private final QName qname;
         private SchemaPath path;
index d86b49d78bccc6c219a475ea2d9ad89ac491bd7b..d7c6711affb740de272f754e76e331561782f8ba 100644 (file)
@@ -26,7 +26,22 @@ import org.antlr.v4.runtime.tree.ParseTree;
 import org.antlr.v4.runtime.tree.ParseTreeWalker;
 import org.opendaylight.controller.antlrv4.code.gen.YangLexer;
 import org.opendaylight.controller.antlrv4.code.gen.YangParser;
+import org.opendaylight.controller.model.api.type.BinaryTypeDefinition;
+import org.opendaylight.controller.model.api.type.BitsTypeDefinition;
+import org.opendaylight.controller.model.api.type.BitsTypeDefinition.Bit;
+import org.opendaylight.controller.model.api.type.DecimalTypeDefinition;
+import org.opendaylight.controller.model.api.type.InstanceIdentifierTypeDefinition;
+import org.opendaylight.controller.model.api.type.IntegerTypeDefinition;
+import org.opendaylight.controller.model.api.type.LengthConstraint;
+import org.opendaylight.controller.model.api.type.PatternConstraint;
+import org.opendaylight.controller.model.api.type.RangeConstraint;
+import org.opendaylight.controller.model.api.type.StringTypeDefinition;
+import org.opendaylight.controller.model.util.BaseConstraints;
+import org.opendaylight.controller.model.util.BinaryType;
+import org.opendaylight.controller.model.util.BitsType;
+import org.opendaylight.controller.model.util.StringType;
 import org.opendaylight.controller.model.util.UnknownType;
+import org.opendaylight.controller.model.util.YangTypesConverter;
 import org.opendaylight.controller.yang.common.QName;
 import org.opendaylight.controller.yang.model.api.AugmentationSchema;
 import org.opendaylight.controller.yang.model.api.DataSchemaNode;
@@ -37,6 +52,7 @@ import org.opendaylight.controller.yang.model.api.NotificationDefinition;
 import org.opendaylight.controller.yang.model.api.RpcDefinition;
 import org.opendaylight.controller.yang.model.api.SchemaContext;
 import org.opendaylight.controller.yang.model.api.SchemaPath;
+import org.opendaylight.controller.yang.model.api.TypeDefinition;
 import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
 import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;
 import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationTargetBuilder;
@@ -72,22 +88,85 @@ public class YangModelParserImpl implements YangModelParser {
         return new SchemaContextImpl(modules);
     }
 
+    private Map<String, TreeMap<Date, ModuleBuilder>> loadFiles(
+            String... yangFiles) {
+        final Map<String, TreeMap<Date, ModuleBuilder>> modules = new HashMap<String, TreeMap<Date, ModuleBuilder>>();
+
+        final YangModelParserListenerImpl yangModelParser = new YangModelParserListenerImpl();
+        final ParseTreeWalker walker = new ParseTreeWalker();
+
+        List<ParseTree> trees = parseFiles(yangFiles);
+
+        ModuleBuilder[] builders = new ModuleBuilder[trees.size()];
+
+        for (int i = 0; i < trees.size(); i++) {
+            walker.walk(yangModelParser, trees.get(i));
+            builders[i] = yangModelParser.getModuleBuilder();
+        }
+
+        for (ModuleBuilder builder : builders) {
+            final String builderName = builder.getName();
+            Date builderRevision = builder.getRevision();
+            if (builderRevision == null) {
+                builderRevision = createEpochTime();
+            }
+
+            TreeMap<Date, ModuleBuilder> builderByRevision = modules
+                    .get(builderName);
+            if (builderByRevision == null) {
+                builderByRevision = new TreeMap<Date, ModuleBuilder>();
+            }
+            builderByRevision.put(builderRevision, builder);
+
+            modules.put(builderName, builderByRevision);
+        }
+        return modules;
+    }
+
+    private List<ParseTree> parseFiles(String... yangFileNames) {
+        List<ParseTree> trees = new ArrayList<ParseTree>();
+        for (String fileName : yangFileNames) {
+            trees.add(parseFile(fileName));
+        }
+        return trees;
+    }
+
+    private ParseTree parseFile(String yangFileName) {
+        ParseTree result = null;
+        try {
+            final File yangFile = new File(yangFileName);
+            final FileInputStream inStream = new FileInputStream(yangFile);
+            final ANTLRInputStream input = new ANTLRInputStream(inStream);
+            final YangLexer lexer = new YangLexer(input);
+            final CommonTokenStream tokens = new CommonTokenStream(lexer);
+            final YangParser parser = new YangParser(tokens);
+            result = parser.yang();
+        } catch (IOException e) {
+            logger.warn("Exception while reading yang file: " + yangFileName, e);
+        }
+        return result;
+    }
+
     private Set<Module> build(Map<String, TreeMap<Date, ModuleBuilder>> modules) {
         // first validate
-        for (Map.Entry<String, TreeMap<Date, ModuleBuilder>> entry : modules.entrySet()) {
-            for (Map.Entry<Date, ModuleBuilder> childEntry : entry.getValue().entrySet()) {
+        for (Map.Entry<String, TreeMap<Date, ModuleBuilder>> entry : modules
+                .entrySet()) {
+            for (Map.Entry<Date, ModuleBuilder> childEntry : entry.getValue()
+                    .entrySet()) {
                 ModuleBuilder moduleBuilder = childEntry.getValue();
                 validateBuilder(modules, moduleBuilder);
             }
         }
-
         // then build
         final Set<Module> result = new HashSet<Module>();
-        for (Map.Entry<String, TreeMap<Date, ModuleBuilder>> entry : modules.entrySet()) {
+        for (Map.Entry<String, TreeMap<Date, ModuleBuilder>> entry : modules
+                .entrySet()) {
             final Map<Date, Module> modulesByRevision = new HashMap<Date, Module>();
-            for (Map.Entry<Date, ModuleBuilder> childEntry : entry.getValue().entrySet()) {
+            for (Map.Entry<Date, ModuleBuilder> childEntry : entry.getValue()
+                    .entrySet()) {
                 ModuleBuilder moduleBuilder = childEntry.getValue();
-                modulesByRevision.put(childEntry.getKey(),moduleBuilder.build());
+                modulesByRevision.put(childEntry.getKey(),
+                        moduleBuilder.build());
                 result.add(moduleBuilder.build());
             }
         }
@@ -95,47 +174,175 @@ public class YangModelParserImpl implements YangModelParser {
         return result;
     }
 
-    private void validateBuilder(Map<String, TreeMap<Date, ModuleBuilder>> modules, ModuleBuilder builder) {
+    private void validateBuilder(
+            Map<String, TreeMap<Date, ModuleBuilder>> modules,
+            ModuleBuilder builder) {
         resolveTypedefs(modules, builder);
         resolveAugments(modules, builder);
     }
 
-    private void resolveTypedefs(Map<String, TreeMap<Date, ModuleBuilder>> modules, ModuleBuilder builder) {
-        Map<List<String>, TypeAwareBuilder> dirtyNodes = builder.getDirtyNodes();
+    /**
+     * Search for dirty nodes (node which contains UnknownType) and resolve
+     * unknown types.
+     *
+     * @param modules
+     *            all available modules
+     * @param builder
+     *            current module
+     */
+    private void resolveTypedefs(
+            Map<String, TreeMap<Date, ModuleBuilder>> modules,
+            ModuleBuilder builder) {
+        Map<List<String>, TypeAwareBuilder> dirtyNodes = builder
+                .getDirtyNodes();
         if (dirtyNodes.size() == 0) {
             return;
         } else {
-            for (Map.Entry<List<String>, TypeAwareBuilder> entry : dirtyNodes.entrySet()) {
-                TypeAwareBuilder tab = entry.getValue();
-                TypeDefinitionBuilder tdb = findTypeDefinitionBuilder(modules,entry.getValue(), builder);
-                tab.setType(tdb.build());
+            for (Map.Entry<List<String>, TypeAwareBuilder> entry : dirtyNodes
+                    .entrySet()) {
+                TypeAwareBuilder typeToResolve = entry.getValue();
+                Map<TypeDefinitionBuilder, TypeConstraints> foundedTypeDefinitionBuilder = findTypeDefinitionBuilderWithConstraints(
+                        modules, entry.getValue(), builder);
+                TypeDefinitionBuilder targetType = foundedTypeDefinitionBuilder
+                        .entrySet().iterator().next().getKey();
+                TypeConstraints constraints = foundedTypeDefinitionBuilder
+                        .entrySet().iterator().next().getValue();
+
+                UnknownType ut = (UnknownType) typeToResolve.getType();
+
+                // RANGE
+                List<RangeConstraint> ranges = ut.getRangeStatements();
+                resolveRanges(ranges, typeToResolve, targetType, modules,
+                        builder);
+
+                // LENGTH
+                List<LengthConstraint> lengths = ut.getLengthStatements();
+                resolveLengths(lengths, typeToResolve, targetType, modules,
+                        builder);
+
+                // PATTERN
+                List<PatternConstraint> patterns = ut.getPatterns();
+
+                // Fraction Digits
+                Integer fractionDigits = ut.getFractionDigits();
+
+                TypeDefinition<?> type = targetType.getBaseType();
+                String typeName = type.getQName().getLocalName();
+
+                // MERGE CONSTRAINTS (enumeration and leafref omitted because
+                // they have no restrictions)
+                if (type instanceof DecimalTypeDefinition) {
+                    List<RangeConstraint> fullRanges = new ArrayList<RangeConstraint>();
+                    fullRanges.addAll(constraints.getRanges());
+                    fullRanges.addAll(ranges);
+                    Integer fd = fractionDigits == null ? constraints
+                            .getFractionDigits() : fractionDigits;
+                    type = YangTypesConverter.javaTypeForBaseYangDecimal64Type(
+                            fullRanges, fd);
+                } else if (type instanceof IntegerTypeDefinition) {
+                    List<RangeConstraint> fullRanges = new ArrayList<RangeConstraint>();
+                    fullRanges.addAll(constraints.getRanges());
+                    fullRanges.addAll(ranges);
+                    if (typeName.startsWith("int")) {
+                        type = YangTypesConverter
+                                .javaTypeForBaseYangSignedIntegerType(typeName,
+                                        fullRanges);
+                    } else {
+                        type = YangTypesConverter
+                                .javaTypeForBaseYangUnsignedIntegerType(
+                                        typeName, fullRanges);
+                    }
+                } else if (type instanceof StringTypeDefinition) {
+                    List<LengthConstraint> fullLengths = new ArrayList<LengthConstraint>();
+                    fullLengths.addAll(constraints.getLengths());
+                    fullLengths.addAll(lengths);
+                    List<PatternConstraint> fullPatterns = new ArrayList<PatternConstraint>();
+                    fullPatterns.addAll(constraints.getPatterns());
+                    fullPatterns.addAll(patterns);
+                    type = new StringType(fullLengths, fullPatterns);
+                } else if (type instanceof BitsTypeDefinition) {
+                    // TODO: add 'length' restriction to BitsType
+                    BitsTypeDefinition bitsType = (BitsTypeDefinition) type;
+                    List<Bit> bits = bitsType.getBits();
+                    type = new BitsType(bits);
+                } else if (type instanceof BinaryTypeDefinition) {
+                    type = new BinaryType(null, lengths, null);
+                } else if (typeName.equals("instance-identifier")) {
+                    // TODO: instance-identifier
+                    /*
+                     * boolean requireInstance = isRequireInstance(typeBody);
+                     * type = new InstanceIdentifier(null, requireInstance);
+                     */
+                }
+                typeToResolve.setType(type);
             }
         }
     }
 
-    private TypeDefinitionBuilder findTypeDefinitionBuilder(Map<String, TreeMap<Date, ModuleBuilder>> modules, TypeAwareBuilder typeBuilder, ModuleBuilder builder) {
+    private TypeDefinitionBuilder findTypeDefinitionBuilder(
+            Map<String, TreeMap<Date, ModuleBuilder>> modules,
+            TypeAwareBuilder typeBuilder, ModuleBuilder builder) {
+        Map<TypeDefinitionBuilder, TypeConstraints> result = findTypeDefinitionBuilderWithConstraints(
+                modules, typeBuilder, builder);
+        return result.entrySet().iterator().next().getKey();
+    }
+
+    private Map<TypeDefinitionBuilder, TypeConstraints> findTypeDefinitionBuilderWithConstraints(
+            Map<String, TreeMap<Date, ModuleBuilder>> modules,
+            TypeAwareBuilder typeBuilder, ModuleBuilder builder) {
+        return findTypeDefinitionBuilderWithConstraints(new TypeConstraints(),
+                modules, typeBuilder, builder);
+    }
+
+    /**
+     * Traverse through all referenced types chain until base YANG type is
+     * founded.
+     *
+     * @param constraints
+     *            current type constraints
+     * @param modules
+     *            all available modules
+     * @param typeBuilder
+     *            type builder which contains type
+     * @param builder
+     *            current module
+     * @return map, where key is type referenced and value is its constraints
+     */
+    private Map<TypeDefinitionBuilder, TypeConstraints> findTypeDefinitionBuilderWithConstraints(
+            TypeConstraints constraints,
+            Map<String, TreeMap<Date, ModuleBuilder>> modules,
+            TypeAwareBuilder typeBuilder, ModuleBuilder builder) {
+        Map<TypeDefinitionBuilder, TypeConstraints> result = new HashMap<TypeDefinitionBuilder, TypeConstraints>();
+
         UnknownType type = (UnknownType) typeBuilder.getType();
         QName typeQName = type.getQName();
         String typeName = type.getQName().getLocalName();
         String prefix = typeQName.getPrefix();
 
+        // search for module which contains referenced typedef
         ModuleBuilder dependentModuleBuilder;
         if (prefix.equals(builder.getPrefix())) {
             dependentModuleBuilder = builder;
         } else {
-            ModuleImport dependentModuleImport = getDependentModuleImport(builder, prefix);
+            ModuleImport dependentModuleImport = getModuleImport(builder,
+                    prefix);
             String dependentModuleName = dependentModuleImport.getModuleName();
             Date dependentModuleRevision = dependentModuleImport.getRevision();
-            TreeMap<Date, ModuleBuilder> moduleBuildersByRevision = modules.get(dependentModuleName);
-            if(dependentModuleRevision == null) {
-                dependentModuleBuilder = moduleBuildersByRevision.lastEntry().getValue();
+            TreeMap<Date, ModuleBuilder> moduleBuildersByRevision = modules
+                    .get(dependentModuleName);
+            if (dependentModuleRevision == null) {
+                dependentModuleBuilder = moduleBuildersByRevision.lastEntry()
+                        .getValue();
             } else {
-                dependentModuleBuilder = moduleBuildersByRevision.get(dependentModuleRevision);
+                dependentModuleBuilder = moduleBuildersByRevision
+                        .get(dependentModuleRevision);
             }
         }
 
-        final Set<TypeDefinitionBuilder> typedefs = dependentModuleBuilder.getModuleTypedefs();
-
+        // pull all typedef statements from dependent module...
+        final Set<TypeDefinitionBuilder> typedefs = dependentModuleBuilder
+                .getModuleTypedefs();
+        // and search for referenced typedef
         TypeDefinitionBuilder lookedUpBuilder = null;
         for (TypeDefinitionBuilder tdb : typedefs) {
             QName qname = tdb.getQName();
@@ -145,15 +352,65 @@ public class YangModelParserImpl implements YangModelParser {
             }
         }
 
-        if (lookedUpBuilder.getBaseType() instanceof UnknownType) {
-            return findTypeDefinitionBuilder(modules, (TypeAwareBuilder) lookedUpBuilder, dependentModuleBuilder);
+        // if referenced type is UnknownType again, search recursively with
+        // current constraints
+        TypeDefinition<?> referencedType = lookedUpBuilder.getBaseType();
+        if (referencedType instanceof UnknownType) {
+            UnknownType unknown = (UnknownType) lookedUpBuilder.getBaseType();
+
+            final List<RangeConstraint> ranges = unknown.getRangeStatements();
+            constraints.addRanges(ranges);
+            final List<LengthConstraint> lengths = unknown
+                    .getLengthStatements();
+            constraints.addLengths(lengths);
+            final List<PatternConstraint> patterns = unknown.getPatterns();
+            constraints.addPatterns(patterns);
+            return findTypeDefinitionBuilderWithConstraints(constraints,
+                    modules, (TypeAwareBuilder) lookedUpBuilder,
+                    dependentModuleBuilder);
         } else {
-            return lookedUpBuilder;
+            // pull restriction from this base type and add them to
+            // 'constraints'
+            if (referencedType instanceof DecimalTypeDefinition) {
+                constraints.addRanges(((DecimalTypeDefinition) referencedType)
+                        .getRangeStatements());
+                constraints
+                        .setFractionDigits(((DecimalTypeDefinition) referencedType)
+                                .getFractionDigits());
+            } else if (referencedType instanceof IntegerTypeDefinition) {
+                constraints.addRanges(((IntegerTypeDefinition) referencedType)
+                        .getRangeStatements());
+            } else if (referencedType instanceof StringTypeDefinition) {
+                constraints.addPatterns(((StringTypeDefinition) referencedType)
+                        .getPatterns());
+            } else if (referencedType instanceof BitsTypeDefinition) {
+                // TODO: add 'length' restriction to BitsType
+            } else if (referencedType instanceof BinaryTypeDefinition) {
+                // TODO
+            } else if (referencedType instanceof InstanceIdentifierTypeDefinition) {
+                // TODO: instance-identifier
+            }
+
+            result.put(lookedUpBuilder, constraints);
+            // return lookedUpBuilder;
+            return result;
         }
     }
 
-    private void resolveAugments(Map<String, TreeMap<Date, ModuleBuilder>> modules, ModuleBuilder builder) {
-        Set<AugmentationSchemaBuilder> augmentBuilders = builder.getAddedAugments();
+    /**
+     * Go through all augmentation definitions and resolve them. This means find
+     * referenced node and add child nodes to it.
+     *
+     * @param modules
+     *            all available modules
+     * @param builder
+     *            current module
+     */
+    private void resolveAugments(
+            Map<String, TreeMap<Date, ModuleBuilder>> modules,
+            ModuleBuilder builder) {
+        Set<AugmentationSchemaBuilder> augmentBuilders = builder
+                .getAddedAugments();
 
         Set<AugmentationSchema> augments = new HashSet<AugmentationSchema>();
         for (AugmentationSchemaBuilder augmentBuilder : augmentBuilders) {
@@ -164,21 +421,26 @@ public class YangModelParserImpl implements YangModelParser {
                 prefix = pathPart.getPrefix();
                 augmentTargetPath.add(pathPart.getLocalName());
             }
-            ModuleImport dependentModuleImport = getDependentModuleImport(builder, prefix);
+            ModuleImport dependentModuleImport = getModuleImport(builder,
+                    prefix);
             String dependentModuleName = dependentModuleImport.getModuleName();
             augmentTargetPath.add(0, dependentModuleName);
 
             Date dependentModuleRevision = dependentModuleImport.getRevision();
 
-            TreeMap<Date, ModuleBuilder> moduleBuildersByRevision = modules.get(dependentModuleName);
+            TreeMap<Date, ModuleBuilder> moduleBuildersByRevision = modules
+                    .get(dependentModuleName);
             ModuleBuilder dependentModule;
-            if(dependentModuleRevision == null) {
-                dependentModule = moduleBuildersByRevision.lastEntry().getValue();
+            if (dependentModuleRevision == null) {
+                dependentModule = moduleBuildersByRevision.lastEntry()
+                        .getValue();
             } else {
-                dependentModule = moduleBuildersByRevision.get(dependentModuleRevision);
+                dependentModule = moduleBuildersByRevision
+                        .get(dependentModuleRevision);
             }
 
-            AugmentationTargetBuilder augmentTarget = (AugmentationTargetBuilder) dependentModule.getNode(augmentTargetPath);
+            AugmentationTargetBuilder augmentTarget = (AugmentationTargetBuilder) dependentModule
+                    .getNode(augmentTargetPath);
             AugmentationSchema result = augmentBuilder.build();
             augmentTarget.addAugmentation(result);
             fillAugmentTarget(augmentBuilder, (ChildNodeBuilder) augmentTarget);
@@ -187,6 +449,12 @@ public class YangModelParserImpl implements YangModelParser {
         builder.setAugmentations(augments);
     }
 
+    /**
+     * Add all augment's child nodes to given target.
+     *
+     * @param augment
+     * @param target
+     */
     private void fillAugmentTarget(AugmentationSchemaBuilder augment,
             ChildNodeBuilder target) {
         for (DataSchemaNodeBuilder builder : augment.getChildNodes()) {
@@ -195,72 +463,143 @@ public class YangModelParserImpl implements YangModelParser {
         }
     }
 
-    private Map<String, TreeMap<Date, ModuleBuilder>> loadFiles(String... yangFiles) {
-        final Map<String, TreeMap<Date, ModuleBuilder>> modules = new HashMap<String, TreeMap<Date, ModuleBuilder>>();
-
-        final YangModelParserListenerImpl yangModelParser = new YangModelParserListenerImpl();
-        final ParseTreeWalker walker = new ParseTreeWalker();
-
-        List<ParseTree> trees = parseFiles(yangFiles);
-
-        ModuleBuilder[] builders = new ModuleBuilder[trees.size()];
-
-        for (int i = 0; i < trees.size(); i++) {
-            walker.walk(yangModelParser, trees.get(i));
-            builders[i] = yangModelParser.getModuleBuilder();
-        }
-
-        for (ModuleBuilder builder : builders) {
-            final String builderName = builder.getName();
-            Date builderRevision = builder.getRevision();
-            if(builderRevision == null) {
-                builderRevision = createEpochTime();
-            }
-
-            TreeMap<Date, ModuleBuilder> builderByRevision = modules.get(builderName);
-            if (builderByRevision == null) {
-                builderByRevision = new TreeMap<Date, ModuleBuilder>();
+    /**
+     * Get module import referenced by given prefix.
+     *
+     * @param builder
+     *            module to search
+     * @param prefix
+     *            prefix associated with import
+     * @return ModuleImport based on given prefix
+     */
+    private ModuleImport getModuleImport(ModuleBuilder builder, String prefix) {
+        ModuleImport moduleImport = null;
+        for (ModuleImport mi : builder.getModuleImports()) {
+            if (mi.getPrefix().equals(prefix)) {
+                moduleImport = mi;
+                break;
             }
-            builderByRevision.put(builderRevision, builder);
-
-            modules.put(builderName, builderByRevision);
         }
-        return modules;
+        return moduleImport;
     }
 
-    private List<ParseTree> parseFiles(String... yangFileNames) {
-        List<ParseTree> trees = new ArrayList<ParseTree>();
-        for (String fileName : yangFileNames) {
-            trees.add(parseFile(fileName));
+    /**
+     * Helper method for resolving special 'min' or 'max' values in range
+     * constraint
+     *
+     * @param ranges
+     *            ranges to resolve
+     * @param typeToResolve
+     *            type to resolve
+     * @param targetType
+     *            target type
+     * @param modules
+     *            all available modules
+     * @param builder
+     *            current module
+     */
+    private void resolveRanges(List<RangeConstraint> ranges,
+            TypeAwareBuilder typeToResolve, TypeDefinitionBuilder targetType,
+            Map<String, TreeMap<Date, ModuleBuilder>> modules,
+            ModuleBuilder builder) {
+        if (ranges != null && ranges.size() > 0) {
+            Long min = (Long) ranges.get(0).getMin();
+            Long max = (Long) ranges.get(ranges.size() - 1).getMax();
+            // if range contains one of the special values 'min' or 'max'
+            if (min.equals(Long.MIN_VALUE) || max.equals(Long.MAX_VALUE)) {
+                Long[] values = parseRangeConstraint(typeToResolve, targetType,
+                        modules, builder);
+                if (min.equals(Long.MIN_VALUE)) {
+                    min = values[0];
+                    RangeConstraint oldFirst = ranges.get(0);
+                    RangeConstraint newFirst = BaseConstraints.rangeConstraint(
+                            min, oldFirst.getMax(), oldFirst.getDescription(),
+                            oldFirst.getReference());
+                    ranges.set(0, newFirst);
+                }
+                if (max.equals(Long.MAX_VALUE)) {
+                    max = values[1];
+                    RangeConstraint oldLast = ranges.get(ranges.size() - 1);
+                    RangeConstraint newLast = BaseConstraints.rangeConstraint(
+                            oldLast.getMin(), max, oldLast.getDescription(),
+                            oldLast.getReference());
+                    ranges.set(ranges.size() - 1, newLast);
+                }
+            }
         }
-        return trees;
     }
 
-    private ParseTree parseFile(String yangFileName) {
-        ParseTree result = null;
-        try {
-            final File yangFile = new File(yangFileName);
-            final FileInputStream inStream = new FileInputStream(yangFile);
-            final ANTLRInputStream input = new ANTLRInputStream(inStream);
-            final YangLexer lexer = new YangLexer(input);
-            final CommonTokenStream tokens = new CommonTokenStream(lexer);
-            final YangParser parser = new YangParser(tokens);
-            result = parser.yang();
-        } catch (IOException e) {
-            logger.warn("Exception while reading yang file: " + yangFileName, e);
+    /**
+     * Helper method for resolving special 'min' or 'max' values in length
+     * constraint
+     *
+     * @param ranges
+     *            ranges to resolve
+     * @param typeToResolve
+     *            type to resolve
+     * @param targetType
+     *            target type
+     * @param modules
+     *            all available modules
+     * @param builder
+     *            current module
+     */
+    private void resolveLengths(List<LengthConstraint> lengths,
+            TypeAwareBuilder typeToResolve, TypeDefinitionBuilder targetType,
+            Map<String, TreeMap<Date, ModuleBuilder>> modules,
+            ModuleBuilder builder) {
+        if (lengths != null && lengths.size() > 0) {
+            Long min = lengths.get(0).getMin();
+            Long max = lengths.get(lengths.size() - 1).getMax();
+            // if length contains one of the special values 'min' or 'max'
+            if (min.equals(Long.MIN_VALUE) || max.equals(Long.MAX_VALUE)) {
+                Long[] values = parseRangeConstraint(typeToResolve, targetType,
+                        modules, builder);
+                if (min.equals(Long.MIN_VALUE)) {
+                    min = values[0];
+                    LengthConstraint oldFirst = lengths.get(0);
+                    LengthConstraint newFirst = BaseConstraints
+                            .lengthConstraint(min, oldFirst.getMax(),
+                                    oldFirst.getDescription(),
+                                    oldFirst.getReference());
+                    lengths.set(0, newFirst);
+                }
+                if (max.equals(Long.MAX_VALUE)) {
+                    max = values[1];
+                    LengthConstraint oldLast = lengths.get(lengths.size() - 1);
+                    LengthConstraint newLast = BaseConstraints
+                            .lengthConstraint(oldLast.getMin(), max,
+                                    oldLast.getDescription(),
+                                    oldLast.getReference());
+                    lengths.set(lengths.size() - 1, newLast);
+                }
+            }
         }
-        return result;
     }
 
-    private ModuleImport getDependentModuleImport(ModuleBuilder builder, String prefix) {
-        ModuleImport moduleImport = null;
-        for (ModuleImport mi : builder.getModuleImports()) {
-            if (mi.getPrefix().equals(prefix)) {
-                moduleImport = mi;
-                break;
-            }
+    private Long[] parseRangeConstraint(TypeAwareBuilder typeToResolve,
+            TypeDefinitionBuilder targetType,
+            Map<String, TreeMap<Date, ModuleBuilder>> modules,
+            ModuleBuilder builder) {
+        TypeDefinition<?> targetBaseType = targetType.getBaseType();
+
+        if (targetBaseType instanceof IntegerTypeDefinition) {
+            IntegerTypeDefinition itd = (IntegerTypeDefinition) targetBaseType;
+            List<RangeConstraint> ranges = itd.getRangeStatements();
+            Long min = (Long) ranges.get(0).getMin();
+            Long max = (Long) ranges.get(ranges.size() - 1).getMax();
+            return new Long[] { min, max };
+        } else if (targetBaseType instanceof DecimalTypeDefinition) {
+            DecimalTypeDefinition dtd = (DecimalTypeDefinition) targetBaseType;
+            List<RangeConstraint> ranges = dtd.getRangeStatements();
+            Long min = (Long) ranges.get(0).getMin();
+            Long max = (Long) ranges.get(ranges.size() - 1).getMax();
+            return new Long[] { min, max };
+        } else {
+            return parseRangeConstraint(typeToResolve,
+                    findTypeDefinitionBuilder(modules, typeToResolve, builder),
+                    modules, builder);
         }
-        return moduleImport;
     }
 
     private Date createEpochTime() {
@@ -318,4 +657,45 @@ public class YangModelParserImpl implements YangModelParser {
         }
     }
 
+    private static class TypeConstraints {
+        private final List<RangeConstraint> ranges = new ArrayList<RangeConstraint>();
+        private final List<LengthConstraint> lengths = new ArrayList<LengthConstraint>();
+        private final List<PatternConstraint> patterns = new ArrayList<PatternConstraint>();
+        private Integer fractionDigits;
+
+        public List<RangeConstraint> getRanges() {
+            return ranges;
+        }
+
+        public void addRanges(List<RangeConstraint> ranges) {
+            this.ranges.addAll(0, ranges);
+        }
+
+        public List<LengthConstraint> getLengths() {
+            return lengths;
+        }
+
+        public void addLengths(List<LengthConstraint> lengths) {
+            this.lengths.addAll(0, lengths);
+        }
+
+        public List<PatternConstraint> getPatterns() {
+            return patterns;
+        }
+
+        public void addPatterns(List<PatternConstraint> patterns) {
+            this.patterns.addAll(0, patterns);
+        }
+
+        public Integer getFractionDigits() {
+            return fractionDigits;
+        }
+
+        public void setFractionDigits(Integer fractionDigits) {
+            if (fractionDigits != null) {
+                this.fractionDigits = fractionDigits;
+            }
+        }
+    }
+
 }
index 022798e0d9490e1771fb9ac210291549ba466fff..d5dfa9a2151b012d4a0d8d6dbdebdf59ed9dffce 100644 (file)
@@ -932,10 +932,12 @@ public class YangModelBuilderUtil {
             List<RangeConstraint> rangeStatements = getRangeConstraints(ctx);
             List<LengthConstraint> lengthStatements = getLengthConstraints(ctx);
             List<PatternConstraint> patternStatements = getPatternConstraint(ctx);
+            Integer fractionDigits = getFractionDigits(ctx);
 
             ut.rangeStatements(rangeStatements);
             ut.lengthStatements(lengthStatements);
             ut.patterns(patternStatements);
+            ut.fractionDigits(fractionDigits);
         }
 
         return ut.build();
@@ -973,7 +975,10 @@ public class YangModelBuilderUtil {
             type = YangTypesConverter.javaTypeForBaseYangDecimal64Type(
                     rangeStatements, fractionDigits);
         } else if (typeName.startsWith("int") || typeName.startsWith("uint")) {
-            type = YangTypesConverter.javaTypeForBaseYangIntegerType(typeName,
+            type = YangTypesConverter.javaTypeForBaseYangSignedIntegerType(typeName,
+                    rangeStatements);
+        } else if(typeName.startsWith("uint")) {
+            type = YangTypesConverter.javaTypeForBaseYangUnsignedIntegerType(typeName,
                     rangeStatements);
         } else if (typeName.equals("enumeration")) {
             type = new EnumerationType(enumConstants);
@@ -990,7 +995,7 @@ public class YangModelBuilderUtil {
             type = new Leafref(xpath);
         } else if (typeName.equals("binary")) {
             type = new BinaryType(null, lengthStatements, null);
-        } else if (typeName.equals("instanceidentifier")) {
+        } else if (typeName.equals("instance-identifier")) {
             boolean requireInstance = isRequireInstance(typeBody);
             type = new InstanceIdentifier(null, requireInstance);
         }
index 74cfed5fb13bbfaf8eeed80298216869bc3a8286..889290f65c1ce20dc1ffe0dd6e690217062305c5 100644 (file)
@@ -9,17 +9,24 @@ package org.opendaylight.controller.yang.model.parser.impl;
 
 import static org.junit.Assert.*;
 
-import java.io.IOException;
+import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 import org.junit.Before;
 import org.junit.Test;
+import org.opendaylight.controller.model.api.type.IntegerTypeDefinition;
+import org.opendaylight.controller.model.api.type.PatternConstraint;
+import org.opendaylight.controller.model.api.type.RangeConstraint;
+import org.opendaylight.controller.model.util.Decimal64;
 import org.opendaylight.controller.model.util.Int32;
+import org.opendaylight.controller.model.util.StringType;
 import org.opendaylight.controller.yang.model.api.AugmentationSchema;
 import org.opendaylight.controller.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.controller.yang.model.api.LeafSchemaNode;
 import org.opendaylight.controller.yang.model.api.ListSchemaNode;
 import org.opendaylight.controller.yang.model.api.Module;
+import org.opendaylight.controller.yang.model.api.TypeDefinition;
 import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
 
 public class YangModelParserTest {
@@ -29,7 +36,7 @@ public class YangModelParserTest {
     private YangModelParser tested;
 
     @Before
-    public void init() throws IOException {
+    public void init() {
         tested = new YangModelParserImpl();
     }
 
@@ -68,13 +75,14 @@ public class YangModelParserTest {
 
         ListSchemaNode list = (ListSchemaNode)container.getDataChildByName("ifEntry");
         assertNotNull(list);
+        assertEquals(1, list.getAvailableAugmentations().size());
 
         LeafSchemaNode leaf = (LeafSchemaNode)list.getDataChildByName("ds0ChannelNumber");
         assertNotNull(leaf);
     }
 
     @Test
-    public void testTypeDef() {
+    public void testTypedefRangesResolving() {
         Set<Module> modules = tested.parseYangModels(testFile1, testFile2);
         assertEquals(2, modules.size());
 
@@ -87,7 +95,141 @@ public class YangModelParserTest {
         assertNotNull(m1);
 
         LeafSchemaNode testleaf = (LeafSchemaNode)m1.getDataChildByName("testleaf");
+        TypeDefinition<?> baseType = testleaf.getType().getBaseType();
+        assertTrue(testleaf.getType().getBaseType() instanceof Int32);
+        Int32 baseTypeCast = (Int32)baseType;
+        List<RangeConstraint> ranges = baseTypeCast.getRangeStatements();
+        assertEquals(2, ranges.size());
+        RangeConstraint range = ranges.get(0);
+        assertEquals(2L, range.getMin());
+        assertEquals(20L, range.getMax());
+    }
+
+    @Test
+    public void testTypedefPatternsResolving() {
+        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);
+        assertEquals(2, modules.size());
+
+        Module m1 = null;
+        for(Module m : modules) {
+            if(m.getName().equals("types1")) {
+                m1 = m;
+            }
+        }
+        assertNotNull(m1);
+
+        LeafSchemaNode testleaf = (LeafSchemaNode)m1.getDataChildByName("test-string-leaf");
+        TypeDefinition<?> baseType = testleaf.getType().getBaseType();
+        assertTrue(testleaf.getType().getBaseType() instanceof StringType);
+        StringType baseTypeCast = (StringType)baseType;
+
+        Set<String> expectedRegularExpressions = new HashSet<String>();
+        expectedRegularExpressions.add("[a-k]*");
+        expectedRegularExpressions.add("[b-u]*");
+        expectedRegularExpressions.add("[e-z]*");
+
+        Set<String> actualRegularExpressions = new HashSet<String>();
+        List<PatternConstraint> patterns = baseTypeCast.getPatterns();
+        for(PatternConstraint pc : patterns) {
+            actualRegularExpressions.add(pc.getRegularExpression());
+        }
+
+        assertEquals(expectedRegularExpressions, actualRegularExpressions);
+    }
+
+    @Test
+    public void testTypedefLengthsResolving() {
+        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);
+        assertEquals(2, modules.size());
+
+        Module m1 = null;
+        for(Module m : modules) {
+            if(m.getName().equals("types1")) {
+                m1 = m;
+            }
+        }
+        assertNotNull(m1);
+
+        LeafSchemaNode testleaf = (LeafSchemaNode)m1.getDataChildByName("test-int-leaf");
+        TypeDefinition<?> baseType = testleaf.getType().getBaseType();
+        assertTrue(testleaf.getType().getBaseType() instanceof IntegerTypeDefinition);
+        Int32 baseTypeCast = (Int32)baseType;
+
+        Long[][] expectedRanges = new Long[3][2];
+        expectedRanges[0] = new Long[]{10L, 20L};
+        expectedRanges[1] = new Long[]{12L, 18L};
+        expectedRanges[2] = new Long[]{14L, 16L};
+
+        List<RangeConstraint> actualRanges = baseTypeCast.getRangeStatements();
+        assertEquals(3, actualRanges.size());
+        for(int i = 0; i < actualRanges.size(); i++) {
+            assertEquals(expectedRanges[i][0], actualRanges.get(i).getMin());
+            assertEquals(expectedRanges[i][1], actualRanges.get(i).getMax());
+        }
+    }
+
+    @Test
+    public void testTypeDef() {
+        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);
+        assertEquals(2, modules.size());
+
+        Module m2 = null;
+        for(Module m : modules) {
+            if(m.getName().equals("types2")) {
+                m2 = m;
+            }
+        }
+        assertNotNull(m2);
+
+        LeafSchemaNode testleaf = (LeafSchemaNode)m2.getDataChildByName("nested-type-leaf");
+        TypeDefinition<?> baseType = testleaf.getType().getBaseType();
         assertTrue(testleaf.getType().getBaseType() instanceof Int32);
+        Int32 baseTypeCast = (Int32)baseType;
+        List<RangeConstraint> ranges = baseTypeCast.getRangeStatements();
+        assertEquals(2, ranges.size());
+        RangeConstraint range = ranges.get(0);
+        assertEquals(2L, range.getMin());
+        assertEquals(20L, range.getMax());
+    }
+
+    @Test
+    public void testTypedefDecimal1() {
+        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);
+        assertEquals(2, modules.size());
+
+        Module m1 = null;
+        for(Module m : modules) {
+            if(m.getName().equals("types1")) {
+                m1 = m;
+            }
+        }
+        assertNotNull(m1);
+
+        LeafSchemaNode testleaf = (LeafSchemaNode)m1.getDataChildByName("test-decimal-leaf");
+        TypeDefinition<?> baseType = testleaf.getType().getBaseType();
+        assertTrue(testleaf.getType().getBaseType() instanceof Decimal64);
+        Decimal64 baseTypeCast = (Decimal64)baseType;
+        assertEquals(4, (int)baseTypeCast.getFractionDigits());
+    }
+
+    @Test
+    public void testTypedefDecimal2() {
+        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);
+        assertEquals(2, modules.size());
+
+        Module m1 = null;
+        for(Module m : modules) {
+            if(m.getName().equals("types1")) {
+                m1 = m;
+            }
+        }
+        assertNotNull(m1);
+
+        LeafSchemaNode testleaf = (LeafSchemaNode)m1.getDataChildByName("test-decimal-leaf2");
+        TypeDefinition<?> baseType = testleaf.getType().getBaseType();
+        assertTrue(testleaf.getType().getBaseType() instanceof Decimal64);
+        Decimal64 baseTypeCast = (Decimal64)baseType;
+        assertEquals(5, (int)baseTypeCast.getFractionDigits());
     }
 
 }
index 2c796a9acd8e0f4199aebb43bc1a57ed4eaef3bf..0d5fba7b356a2fe2abc273067d888706b29beb6a 100644 (file)
@@ -1,39 +1,57 @@
-module types1 {
-       yang-version 1;
-    namespace "urn:simple.container.demo";
-    prefix "t1";
-    
-    import types2 {
-         prefix "data";
-         revision-date 2013-02-27;
-     }
-    
-    organization "Cisco";
-    contact "WILL-BE-DEFINED-LATER";
-    
-    revision "2013-02-27" {
-        reference " WILL BE DEFINED LATER";
-    }
-    
-    container interfaces {
-         list ifEntry {
-             key "ifIndex";
-
-             leaf ifIndex {
-                 type uint32;
-                 units minutes;
-             }
-             
-             leaf ifMtu {
-                 type int32;
-             }
-         }
-     }
-     
-       leaf testleaf {
-               type data:my-base-int32-type {
-                       range "11..max";
-               }
-       } 
-
-}
+module types1 {\r
+    yang-version 1;\r
+    namespace "urn:simple.container.demo";\r
+    prefix "t1";\r
+    \r
+    import types2 {\r
+         prefix "data";\r
+         revision-date 2013-02-27;\r
+     }\r
+    \r
+    organization "Cisco";\r
+    contact "WILL-BE-DEFINED-LATER";\r
+    \r
+    revision "2013-02-27" {\r
+        reference " WILL BE DEFINED LATER";\r
+    }\r
+    \r
+    container interfaces {\r
+         list ifEntry {\r
+             key "ifIndex";\r
+\r
+             leaf ifIndex {\r
+                 type uint32;\r
+                 units minutes;\r
+             }\r
+             \r
+             leaf ifMtu {\r
+                 type int32;\r
+             }\r
+         }\r
+     }\r
+     \r
+    leaf testleaf {\r
+        type data:my-base-int32-type {\r
+            range "min..max";\r
+        }\r
+    }\r
+    \r
+    leaf test-string-leaf {\r
+        type data:my-string-type-ext;\r
+    }\r
+    \r
+    leaf test-int-leaf {\r
+        type data:my-int-type-ext;\r
+    }\r
+    \r
+    leaf test-decimal-leaf {\r
+        type data:my-decimal-type {\r
+            fraction-digits 4;\r
+        }\r
+    }\r
+    \r
+    leaf test-decimal-leaf2 {\r
+        type data:my-decimal-type-ext;\r
+    }\r
+\r
+}\r
index 9d1220717971721b687da6ee34070539845c0117..aea5fb4e4bb15096473ebac075f0efa2f65cf709 100644 (file)
-module types2 {
-       yang-version 1;
-    namespace "urn:simple.types.data.demo";
-    prefix "t2";
-    
-    import types1 {
-         prefix "if";
-         revision-date 2013-02-27;
-     }
-
-    organization "Cisco";
-    contact "WILL-BE-DEFINED-LATER";
-    description "This is types-data test description";
-
-    revision "2013-02-27" {
-        reference " WILL BE DEFINED LATER";
-    }
-    
-    
-     augment "/if:interfaces/if:ifEntry" {
-         when "if:ifType='ds0'";
-         leaf ds0ChannelNumber {
-             type string;
-         }
-     }
-     
-     leaf if-name {
-       type leafref {
-               path "/interface/name";
-        }
-     }
-     
-     leaf name {
-       type string;
-     }
-     
-     typedef my-base-int32-type {
-               type int32 {
-               range "0..32";
-        }
-       }
-
-}
+module types2 {\r
+    yang-version 1;\r
+    namespace "urn:simple.types.data.demo";\r
+    prefix "t2";\r
+    \r
+    import types1 {\r
+         prefix "if";\r
+         revision-date 2013-02-27;\r
+     }\r
+\r
+    organization "Cisco";\r
+    contact "WILL-BE-DEFINED-LATER";\r
+    description "This is types-data test description";\r
+\r
+    revision "2013-02-27" {\r
+        reference " WILL BE DEFINED LATER";\r
+    }\r
+    \r
+    typedef my-base-int32-type {\r
+        type int32 {\r
+            range "2..20";\r
+        }\r
+    }\r
+\r
+     typedef my-type1 {\r
+         type my-base-int32-type {\r
+            range "11..max";\r
+        }\r
+    }\r
+    \r
+    typedef my-string-type {\r
+        type string {\r
+            pattern "[a-k]*";\r
+        }\r
+    }\r
+    \r
+    typedef my-string-type2 {\r
+        type my-string-type {\r
+            pattern "[b-u]*";\r
+        }\r
+    }\r
+    \r
+    typedef my-string-type-ext {\r
+        type my-string-type2 {\r
+            pattern "[e-z]*";\r
+        }\r
+    }\r
+    \r
+    typedef my-int-type {\r
+        type int32 {\r
+            range "10..20";\r
+        }\r
+    }\r
+    \r
+    typedef my-int-type2 {\r
+        type my-int-type {\r
+            range "12..18";\r
+        }\r
+    }\r
+    \r
+    typedef my-int-type-ext {\r
+        type my-int-type2 {\r
+            range "14..16";\r
+        }\r
+    }\r
+    \r
+    typedef my-decimal-type {\r
+        type decimal64 {\r
+            fraction-digits 6;\r
+        }\r
+    }\r
+    \r
+    typedef my-decimal-type-ext {\r
+        type decimal64 {\r
+            fraction-digits 5;\r
+        }\r
+    }\r
+\r
+    augment "/if:interfaces/if:ifEntry" {\r
+        when "if:ifType='ds0'";\r
+        leaf ds0ChannelNumber {\r
+            type string;\r
+        }\r
+    }\r
+\r
+    leaf if-name {\r
+        type leafref {\r
+            path "/interface/name";\r
+        }\r
+    }\r
+     \r
+    leaf name {\r
+        type string;\r
+    }\r
+     \r
+    leaf nested-type-leaf {\r
+        type my-type1;\r
+    }\r
+\r
+}\r
index a4da8f7a94dea4616d1675e5f918f43fe34d2fcc..f5f3b178869d49370756cb6c8ed792acc232d83c 100644 (file)
@@ -14,11 +14,14 @@ import org.opendaylight.controller.yang.model.api.TypeDefinition;
 public interface UnknownTypeDefinition extends\r
         TypeDefinition<UnknownTypeDefinition> {\r
 \r
-    public List<RangeConstraint> getRangeStatements();\r
+    List<RangeConstraint> getRangeStatements();\r
 \r
-    public List<LengthConstraint> getLengthStatements();\r
+    List<LengthConstraint> getLengthStatements();\r
 \r
-    public List<PatternConstraint> getPatterns();\r
+    List<PatternConstraint> getPatterns();\r
+\r
+    LengthConstraint getLengthConstraint();\r
+\r
+    Integer getFractionDigits();\r
 \r
-    public LengthConstraint getLengthConstraint();\r
 }\r
-/*\r
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.controller.model.util;\r
-\r
-import java.util.Collections;\r
-import java.util.List;\r
-\r
-import org.opendaylight.controller.model.api.type.IntegerTypeDefinition;\r
-import org.opendaylight.controller.model.api.type.RangeConstraint;\r
-import org.opendaylight.controller.yang.common.QName;\r
-import org.opendaylight.controller.yang.model.api.SchemaPath;\r
-import org.opendaylight.controller.yang.model.api.Status;\r
-import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;\r
-\r
-public abstract class AbstractInteger implements IntegerTypeDefinition {\r
-\r
-    private final QName name;\r
-    private final SchemaPath path;\r
-\r
-    private final String description;\r
-    private final String reference;\r
-\r
-    private String units = "";\r
-    private final List<RangeConstraint> rangeStatements;\r
-\r
-    public AbstractInteger(final QName name, final String description,\r
-            final String reference) {\r
-        super();\r
-        this.name = name;\r
-        this.description = description;\r
-        this.reference = reference;\r
-        this.path = BaseTypes.schemaPath(name);\r
-\r
-        final List<? extends RangeConstraint> emptyContstraints = Collections\r
-                .emptyList();\r
-        this.rangeStatements = Collections.unmodifiableList(emptyContstraints);\r
-    }\r
-\r
-    public AbstractInteger(QName name, String description, String reference,\r
-            List<RangeConstraint> rangeStatements) {\r
-        super();\r
-        this.name = name;\r
-        this.description = description;\r
-        this.reference = reference;\r
-        this.rangeStatements = rangeStatements;\r
-        this.path = BaseTypes.schemaPath(name);\r
-    }\r
-\r
-    public AbstractInteger(QName name, String description, String reference,\r
-            String units) {\r
-        super();\r
-        this.name = name;\r
-        this.description = description;\r
-        this.reference = reference;\r
-        this.units = units;\r
-        this.path = BaseTypes.schemaPath(name);\r
-\r
-        final List<? extends RangeConstraint> emptyContstraints = Collections\r
-                .emptyList();\r
-        this.rangeStatements = Collections.unmodifiableList(emptyContstraints);\r
-    }\r
-\r
-    public AbstractInteger(QName name, String description, String reference,\r
-            String units, List<RangeConstraint> rangeStatements) {\r
-        super();\r
-        this.name = name;\r
-        this.description = description;\r
-        this.reference = reference;\r
-        this.units = units;\r
-        this.rangeStatements = rangeStatements;\r
-        this.path = BaseTypes.schemaPath(name);\r
-    }\r
-\r
-    @Override\r
-    public String getUnits() {\r
-        return units;\r
-    }\r
-\r
-    @Override\r
-    public QName getQName() {\r
-        return name;\r
-    }\r
-\r
-    @Override\r
-    public SchemaPath getPath() {\r
-        return path;\r
-    }\r
-\r
-    @Override\r
-    public String getDescription() {\r
-        return description;\r
-    }\r
-\r
-    @Override\r
-    public String getReference() {\r
-        return reference;\r
-    }\r
-\r
-    @Override\r
-    public Status getStatus() {\r
-        return Status.CURRENT;\r
-    }\r
-\r
-    @Override\r
-    public List<RangeConstraint> getRangeStatements() {\r
-        return rangeStatements;\r
-    }\r
-\r
-    @Override\r
-    public List<UnknownSchemaNode> getUnknownSchemaNodes() {\r
-        return Collections.emptyList();\r
-    }\r
-\r
-    @Override\r
-    public int hashCode() {\r
-        final int prime = 31;\r
-        int result = 1;\r
-        result = prime * result\r
-                + ((description == null) ? 0 : description.hashCode());\r
-        result = prime * result + ((name == null) ? 0 : name.hashCode());\r
-        result = prime * result + ((path == null) ? 0 : path.hashCode());\r
-        result = prime * result\r
-                + ((rangeStatements == null) ? 0 : rangeStatements.hashCode());\r
-        result = prime * result\r
-                + ((reference == null) ? 0 : reference.hashCode());\r
-        result = prime * result + ((units == null) ? 0 : units.hashCode());\r
-        return result;\r
-    }\r
-\r
-    @Override\r
-    public boolean equals(Object obj) {\r
-        if (this == obj) {\r
-            return true;\r
-        }\r
-        if (obj == null) {\r
-            return false;\r
-        }\r
-        if (getClass() != obj.getClass()) {\r
-            return false;\r
-        }\r
-        AbstractInteger other = (AbstractInteger) obj;\r
-        if (description == null) {\r
-            if (other.description != null) {\r
-                return false;\r
-            }\r
-        } else if (!description.equals(other.description)) {\r
-            return false;\r
-        }\r
-        if (name == null) {\r
-            if (other.name != null) {\r
-                return false;\r
-            }\r
-        } else if (!name.equals(other.name)) {\r
-            return false;\r
-        }\r
-        if (path == null) {\r
-            if (other.path != null) {\r
-                return false;\r
-            }\r
-        } else if (!path.equals(other.path)) {\r
-            return false;\r
-        }\r
-        if (rangeStatements == null) {\r
-            if (other.rangeStatements != null) {\r
-                return false;\r
-            }\r
-        } else if (!rangeStatements.equals(other.rangeStatements)) {\r
-            return false;\r
-        }\r
-        if (reference == null) {\r
-            if (other.reference != null) {\r
-                return false;\r
-            }\r
-        } else if (!reference.equals(other.reference)) {\r
-            return false;\r
-        }\r
-        if (units == null) {\r
-            if (other.units != null) {\r
-                return false;\r
-            }\r
-        } else if (!units.equals(other.units)) {\r
-            return false;\r
-        }\r
-        return true;\r
-    }\r
-\r
-    @Override\r
-    public String toString() {\r
-        StringBuilder builder = new StringBuilder();\r
-        builder.append("AbstractInteger [name=");\r
-        builder.append(name);\r
-        builder.append(", path=");\r
-        builder.append(path);\r
-        builder.append(", description=");\r
-        builder.append(description);\r
-        builder.append(", reference=");\r
-        builder.append(reference);\r
-        builder.append(", units=");\r
-        builder.append(units);\r
-        builder.append(", rangeStatements=");\r
-        builder.append(rangeStatements);\r
-        builder.append("]");\r
-        return builder.toString();\r
-    }\r
-}\r
+/*
+ * Copyright (c) 2013 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.controller.model.util;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.opendaylight.controller.model.api.type.IntegerTypeDefinition;
+import org.opendaylight.controller.model.api.type.RangeConstraint;
+import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.controller.yang.model.api.SchemaPath;
+import org.opendaylight.controller.yang.model.api.Status;
+import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
+
+/**
+ * The Abstract Integer class defines implementation of IntegerTypeDefinition
+ * interface which represents SIGNED Integer values defined in Yang language. <br>
+ * The integer built-in types in Yang are int8, int16, int32, int64. They
+ * represent signed integers of different sizes:
+ * 
+ * <ul>
+ * <li>int8 - represents integer values between -128 and 127, inclusively.</li>
+ * <li>int16 - represents integer values between -32768 and 32767, inclusively.</li>
+ * <li>int32 - represents integer values between -2147483648 and 2147483647,
+ * inclusively.</li>
+ * <li>int64 - represents integer values between -9223372036854775808 and
+ * 9223372036854775807, inclusively.</li>
+ * </ul>
+ * 
+ */
+public abstract class AbstractSignedInteger implements IntegerTypeDefinition {
+
+    private final QName name;
+    private final SchemaPath path;
+    private final String description;
+    private final String reference = "https://tools.ietf.org/html/rfc6020#section-9.2";
+
+    private final String units;
+    private final List<RangeConstraint> rangeStatements;
+
+    /**
+     * @param name
+     * @param description
+     * @param minRange
+     * @param maxRange
+     * @param units
+     */
+    public AbstractSignedInteger(final QName name, final String description,
+            final Number minRange, final Number maxRange, final String units) {
+        this.name = name;
+        this.description = description;
+        this.path = BaseTypes.schemaPath(name);
+        this.units = units;
+        this.rangeStatements = new ArrayList<RangeConstraint>();
+        final String rangeDescription = "Integer values between " + minRange
+                + " and " + maxRange + ", inclusively.";
+        this.rangeStatements.add(BaseConstraints.rangeConstraint(minRange,
+                maxRange, rangeDescription, "https://tools.ietf.org/html/rfc6020#section-9.2.4"));
+    }
+
+    /**
+     * @param name
+     * @param description
+     * @param rangeStatements
+     * @param units
+     */
+    public AbstractSignedInteger(final QName name, final String description,
+            final List<RangeConstraint> rangeStatements, final String units) {
+        this.name = name;
+        this.description = description;
+        this.path = BaseTypes.schemaPath(name);
+        this.units = units;
+        this.rangeStatements = rangeStatements;
+    }
+
+    @Override
+    public String getUnits() {
+        return units;
+    }
+
+    @Override
+    public QName getQName() {
+        return name;
+    }
+
+    @Override
+    public SchemaPath getPath() {
+        return path;
+    }
+
+    @Override
+    public String getDescription() {
+        return description;
+    }
+
+    @Override
+    public String getReference() {
+        return reference;
+    }
+
+    @Override
+    public Status getStatus() {
+        return Status.CURRENT;
+    }
+
+    @Override
+    public List<RangeConstraint> getRangeStatements() {
+        return rangeStatements;
+    }
+
+    @Override
+    public List<UnknownSchemaNode> getUnknownSchemaNodes() {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result
+                + ((description == null) ? 0 : description.hashCode());
+        result = prime * result + ((name == null) ? 0 : name.hashCode());
+        result = prime * result + ((path == null) ? 0 : path.hashCode());
+        result = prime * result
+                + ((rangeStatements == null) ? 0 : rangeStatements.hashCode());
+        result = prime * result
+                + ((reference == null) ? 0 : reference.hashCode());
+        result = prime * result + ((units == null) ? 0 : units.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        AbstractSignedInteger other = (AbstractSignedInteger) obj;
+        if (description == null) {
+            if (other.description != null) {
+                return false;
+            }
+        } else if (!description.equals(other.description)) {
+            return false;
+        }
+        if (name == null) {
+            if (other.name != null) {
+                return false;
+            }
+        } else if (!name.equals(other.name)) {
+            return false;
+        }
+        if (path == null) {
+            if (other.path != null) {
+                return false;
+            }
+        } else if (!path.equals(other.path)) {
+            return false;
+        }
+        if (rangeStatements == null) {
+            if (other.rangeStatements != null) {
+                return false;
+            }
+        } else if (!rangeStatements.equals(other.rangeStatements)) {
+            return false;
+        }
+        if (reference == null) {
+            if (other.reference != null) {
+                return false;
+            }
+        } else if (!reference.equals(other.reference)) {
+            return false;
+        }
+        if (units == null) {
+            if (other.units != null) {
+                return false;
+            }
+        } else if (!units.equals(other.units)) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("AbstractInteger [name=");
+        builder.append(name);
+        builder.append(", path=");
+        builder.append(path);
+        builder.append(", description=");
+        builder.append(description);
+        builder.append(", reference=");
+        builder.append(reference);
+        builder.append(", units=");
+        builder.append(units);
+        builder.append(", rangeStatements=");
+        builder.append(rangeStatements);
+        builder.append("]");
+        return builder.toString();
+    }
+}
diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/AbstractUnsignedInteger.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/model/util/AbstractUnsignedInteger.java
new file mode 100644 (file)
index 0000000..86c543e
--- /dev/null
@@ -0,0 +1,209 @@
+/**
+ * 
+ */
+package org.opendaylight.controller.model.util;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.opendaylight.controller.model.api.type.RangeConstraint;
+import org.opendaylight.controller.model.api.type.UnsignedIntegerTypeDefinition;
+import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.controller.yang.model.api.SchemaPath;
+import org.opendaylight.controller.yang.model.api.Status;
+import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
+
+/**
+ * The Abstract Integer class defines implementation of IntegerTypeDefinition
+ * interface which represents UNSIGNED Integer values defined in Yang language. <br>
+ * The integer built-in types in Yang are uint8,  uint16, uint32, and uint64. They
+ * represent unsigned integers of different sizes:
+ * 
+ * <ul>
+ * <li>uint8 - represents integer values between 0 and 255, inclusively.</li>
+ * <li>uint16 - represents integer values between 0 and 65535, inclusively.</li>
+ * <li>uint32 - represents integer values between 0 and 4294967295,
+      inclusively.</li>
+ * <li>uint64 - represents integer values between 0 and 18446744073709551615,
+      inclusively.</li>
+ * </ul>
+ *
+ */
+public abstract class AbstractUnsignedInteger implements
+        UnsignedIntegerTypeDefinition {
+    private final QName name;
+    private final SchemaPath path;
+    private final String description;
+    private final String reference = "https://tools.ietf.org/html/rfc6020#section-9.2";
+
+    private final String units;
+    private final List<RangeConstraint> rangeStatements;
+    
+    /**
+     * @param name
+     * @param description
+     * @param minRange
+     * @param maxRange
+     * @param units
+     */
+    public AbstractUnsignedInteger(final QName name, final String description,
+            final Number minRange, final Number maxRange, final String units) {
+        this.name = name;
+        this.description = description;
+        this.path = BaseTypes.schemaPath(name);
+        this.units = units;
+        this.rangeStatements = new ArrayList<RangeConstraint>();
+        final String rangeDescription = "Integer values between " + minRange
+                + " and " + maxRange + ", inclusively.";
+        this.rangeStatements.add(BaseConstraints.rangeConstraint(minRange,
+                maxRange, rangeDescription, "https://tools.ietf.org/html/rfc6020#section-9.2.4"));
+    }
+
+    /**
+     * @param name
+     * @param description
+     * @param rangeStatements
+     * @param units
+     */
+    public AbstractUnsignedInteger(final QName name, final String description,
+            final List<RangeConstraint> rangeStatements, final String units) {
+        this.name = name;
+        this.description = description;
+        this.path = BaseTypes.schemaPath(name);
+        this.units = units;
+        this.rangeStatements = rangeStatements;
+    }
+    
+    @Override
+    public String getUnits() {
+        return units;
+    }
+
+    @Override
+    public QName getQName() {
+        return name;
+    }
+
+    @Override
+    public SchemaPath getPath() {
+        return path;
+    }
+
+    @Override
+    public String getDescription() {
+        return description;
+    }
+
+    @Override
+    public String getReference() {
+        return reference;
+    }
+
+    @Override
+    public Status getStatus() {
+        return Status.CURRENT;
+    }
+
+    @Override
+    public List<RangeConstraint> getRangeStatements() {
+        return rangeStatements;
+    }
+
+    @Override
+    public List<UnknownSchemaNode> getUnknownSchemaNodes() {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result
+                + ((description == null) ? 0 : description.hashCode());
+        result = prime * result + ((name == null) ? 0 : name.hashCode());
+        result = prime * result + ((path == null) ? 0 : path.hashCode());
+        result = prime * result
+                + ((rangeStatements == null) ? 0 : rangeStatements.hashCode());
+        result = prime * result
+                + ((reference == null) ? 0 : reference.hashCode());
+        result = prime * result + ((units == null) ? 0 : units.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        AbstractUnsignedInteger other = (AbstractUnsignedInteger) obj;
+        if (description == null) {
+            if (other.description != null) {
+                return false;
+            }
+        } else if (!description.equals(other.description)) {
+            return false;
+        }
+        if (name == null) {
+            if (other.name != null) {
+                return false;
+            }
+        } else if (!name.equals(other.name)) {
+            return false;
+        }
+        if (path == null) {
+            if (other.path != null) {
+                return false;
+            }
+        } else if (!path.equals(other.path)) {
+            return false;
+        }
+        if (rangeStatements == null) {
+            if (other.rangeStatements != null) {
+                return false;
+            }
+        } else if (!rangeStatements.equals(other.rangeStatements)) {
+            return false;
+        }
+        if (reference == null) {
+            if (other.reference != null) {
+                return false;
+            }
+        } else if (!reference.equals(other.reference)) {
+            return false;
+        }
+        if (units == null) {
+            if (other.units != null) {
+                return false;
+            }
+        } else if (!units.equals(other.units)) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("AbstractInteger [name=");
+        builder.append(name);
+        builder.append(", path=");
+        builder.append(path);
+        builder.append(", description=");
+        builder.append(description);
+        builder.append(", reference=");
+        builder.append(reference);
+        builder.append(", units=");
+        builder.append(units);
+        builder.append(", rangeStatements=");
+        builder.append(rangeStatements);
+        builder.append("]");
+        return builder.toString();
+    }
+}
index 881a3e8640f06fc7887ee14832942250a834147a..f78f8589a1e8d520b8f072d5730b98eddca3ed80 100644 (file)
@@ -21,8 +21,8 @@ public final class BaseConstraints {
         return new LengthConstraintImpl(min, max, description, reference);\r
     }\r
 \r
-    public static RangeConstraint rangeConstraint(final long min,\r
-            final long max, final String description, final String reference) {\r
+    public static RangeConstraint rangeConstraint(final Number min,\r
+            final Number max, final String description, final String reference) {\r
         return new RangeConstraintImpl(min, max, description, reference);\r
     }\r
 \r
@@ -172,8 +172,8 @@ public final class BaseConstraints {
     }\r
 \r
     private final static class RangeConstraintImpl implements RangeConstraint {\r
-        private final Long min;\r
-        private final Long max;\r
+        private final Number min;\r
+        private final Number max;\r
 \r
         private final String description;\r
         private final String reference;\r
@@ -181,7 +181,7 @@ public final class BaseConstraints {
         private final String errorAppTag;\r
         private final String errorMessage;\r
 \r
-        public RangeConstraintImpl(Long min, Long max, String description,\r
+        public RangeConstraintImpl(Number min, Number max, String description,\r
                 String reference) {\r
             super();\r
             this.min = min;\r
@@ -215,12 +215,12 @@ public final class BaseConstraints {
         }\r
 \r
         @Override\r
-        public Long getMin() {\r
+        public Number getMin() {\r
             return min;\r
         }\r
 \r
         @Override\r
-        public Long getMax() {\r
+        public Number getMax() {\r
             return max;\r
         }\r
 \r
index e02173c5dea2921da65ce10bb77add6784011720..6a25bc815cfb51792b3833de205dced006ee2cef 100644 (file)
@@ -16,16 +16,28 @@ import org.opendaylight.controller.yang.model.api.SchemaPath;
 \r
 public final class BaseTypes {\r
 \r
-    private BaseTypes() {\r
-    }\r
+    private BaseTypes() {}\r
 \r
     public static final URI BaseTypesNamespace = URI\r
             .create("urn:ietf:params:xml:ns:yang:1");\r
 \r
+    /**\r
+     * Construct QName for Built-in base Yang type. The namespace for\r
+     * built-in base yang types is defined as: urn:ietf:params:xml:ns:yang:1\r
+     * \r
+     * @param typeName yang type name\r
+     * @return built-in base yang type QName.\r
+     */\r
     public static final QName constructQName(final String typeName) {\r
         return new QName(BaseTypesNamespace, typeName);\r
     }\r
 \r
+    /**\r
+     * Creates Schema Path from Qname.\r
+     * \r
+     * @param typeName yang type QName\r
+     * @return Schema Path from Qname.\r
+     */\r
     public static final SchemaPath schemaPath(final QName typeName) {\r
         final List<QName> pathList = new ArrayList<QName>();\r
         pathList.add(typeName);\r
index 7429c015314317d1a5a2bcbb473d949e9955c729..2ee873b33a762b8d1401102ea49cce61c589a4c4 100644 (file)
@@ -7,6 +7,7 @@
   */\r
 package org.opendaylight.controller.model.util;\r
 \r
+import java.util.ArrayList;\r
 import java.util.Collections;\r
 import java.util.List;\r
 \r
@@ -17,30 +18,54 @@ import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;\r
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;\r
 \r
+/**\r
+ * The <code>default</code> implementation of Binary Type Definition interface.\r
+ * \r
+ * @see BinaryTypeDefinition\r
+ */\r
 public class BinaryType implements BinaryTypeDefinition {\r
 \r
     private final QName name = BaseTypes.constructQName("binary");\r
     private final SchemaPath path = BaseTypes.schemaPath(name);\r
-    private final String description = "";\r
-    private final String reference = "";\r
+    private final String description = "The binary built-in type represents any binary data, i.e., a sequence of octets.";\r
+    private final String reference = "https://tools.ietf.org/html/rfc6020#section-9.8";\r
 \r
     private List<Byte> bytes;\r
     private final List<LengthConstraint> lengthConstraints;\r
     private String units = "";\r
 \r
+    /**\r
+     * \r
+     */\r
     public BinaryType() {\r
         super();\r
-\r
-        lengthConstraints = Collections.emptyList();\r
+        \r
+        final List<LengthConstraint> constraints = new ArrayList<LengthConstraint>();\r
+        constraints.add(BaseConstraints.lengthConstraint(0, Long.MAX_VALUE, "", ""));\r
+        lengthConstraints = Collections.unmodifiableList(constraints);\r
         bytes = Collections.emptyList();\r
-        bytes = Collections.unmodifiableList(bytes);\r
     }\r
 \r
+    /**\r
+     * \r
+     * \r
+     * @param bytes\r
+     * @param lengthConstraints\r
+     * @param units\r
+     */\r
     public BinaryType(final List<Byte> bytes,\r
             final List<LengthConstraint> lengthConstraints, final String units) {\r
         super();\r
-        this.bytes = bytes;\r
-        this.lengthConstraints = lengthConstraints;\r
+        \r
+        if ((lengthConstraints == null) || (lengthConstraints.isEmpty())) {\r
+            final List<LengthConstraint> constraints = new ArrayList<LengthConstraint>();\r
+            constraints.add(BaseConstraints.lengthConstraint(0, Long.MAX_VALUE, "", ""));\r
+            this.lengthConstraints = Collections.unmodifiableList(constraints);\r
+        } else {\r
+            this.lengthConstraints = Collections.unmodifiableList(lengthConstraints);\r
+        }\r
+        \r
+        this.bytes = Collections.unmodifiableList(bytes);\r
         this.units = units;\r
     }\r
 \r
index b783bc773090e76d56c197797d30f33d5fdd1c9b..ac7bcaab9653e6367f06ab41178e0b45f543ac1d 100644 (file)
@@ -16,12 +16,21 @@ import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;\r
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;\r
 \r
+\r
+/**\r
+ * The <code>default</code> implementation of Bits Type Definition interface.\r
+ * \r
+ * @see BitsTypeDefinition\r
+ */\r
 public class BitsType implements BitsTypeDefinition {\r
 \r
     private final QName name = BaseTypes.constructQName("bits");\r
     private final SchemaPath path = BaseTypes.schemaPath(name);\r
-    private final String description = "";\r
-    private final String reference = "";\r
+    private final String description = "The bits built-in type represents a bit set.  " +\r
+               "That is, a bits value is a set of flags identified by small integer position " +\r
+               "numbers starting at 0.  Each bit number has an assigned name.";\r
+    \r
+    private final String reference = "https://tools.ietf.org/html/rfc6020#section-9.7";\r
 \r
     private final List<Bit> bits;\r
     private String units = "";\r
@@ -29,7 +38,6 @@ public class BitsType implements BitsTypeDefinition {
     /**\r
      * Default constructor. <br>\r
      * Instantiates Bits type as empty bits list.\r
-     * \r
      */\r
     public BitsType() {\r
         super();\r
@@ -37,7 +45,7 @@ public class BitsType implements BitsTypeDefinition {
     }\r
 \r
     /**\r
-     * Overloaded constructor with explicit definition of bits assigned to\r
+     * Constructor with explicit definition of bits assigned to\r
      * BitsType.\r
      * \r
      * @param bits\r
@@ -49,10 +57,18 @@ public class BitsType implements BitsTypeDefinition {
         this.units = "";\r
     }\r
 \r
+    /**\r
+     * Constructor with explicit definition of bits assigned to\r
+     * BitsType and Units.\r
+     * <br>\r
+     * The default value of Bits Type is List of bits.\r
+     * \r
+     * @param bits The bits assigned for Bits Type\r
+     * @param units units for bits type\r
+     */\r
     public BitsType(List<Bit> bits, String units) {\r
         super();\r
         this.bits = Collections.unmodifiableList(bits);\r
-        ;\r
         this.units = units;\r
     }\r
 \r
index c9d319d2c6559eb8467d1c36627eecb4cff31aaa..171612b1cdeee0d7e3f4afab121e46bc1507668b 100644 (file)
@@ -16,12 +16,17 @@ import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;\r
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;\r
 \r
+/**\r
+ * The <code>default</code> implementation of Boolean Type Definition interface.\r
+ * \r
+ * @see BooleanTypeDefinition\r
+ */\r
 public class BooleanType implements BooleanTypeDefinition {\r
 \r
     private final QName name = BaseTypes.constructQName("boolean");\r
     private final SchemaPath path = BaseTypes.schemaPath(name);\r
-    private final String description = "";\r
-    private final String reference = "";\r
+    private final String description = "The boolean built-in type represents a boolean value.";\r
+    private final String reference = "https://tools.ietf.org/html/rfc6020#section-9.5";\r
 \r
     private final Boolean defaultValue;\r
     private String units = "";\r
@@ -35,9 +40,9 @@ public class BooleanType implements BooleanTypeDefinition {
     }\r
 \r
     /**\r
+     * Boolean Type constructor.\r
      * \r
-     * \r
-     * @param defaultValue\r
+     * @param defaultValue Default Value\r
      */\r
     public BooleanType(final Boolean defaultValue) {\r
         super();\r
@@ -45,10 +50,10 @@ public class BooleanType implements BooleanTypeDefinition {
     }\r
 \r
     /**\r
+     * Boolean Type constructor.\r
      * \r
-     * \r
-     * @param defaultValue\r
-     * @param units\r
+     * @param defaultValue Default Value\r
+     * @param units Units\r
      */\r
     public BooleanType(final Boolean defaultValue, final String units) {\r
         super();\r
index 233e4607ce703eeb1cadd7f6499154e1c293a41a..31c8c0d32da5764b4ad0b07878cccf6410825ac3 100644 (file)
@@ -1,10 +1,10 @@
 /*\r
 * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
 *\r
 * This program and the accompanying materials are made available under the\r
 * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
 * and is available at http://www.eclipse.org/legal/epl-v10.html\r
 */\r
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
 package org.opendaylight.controller.model.util;\r
 \r
 import java.math.BigDecimal;\r
@@ -19,6 +19,12 @@ import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;\r
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;\r
 \r
+/**\r
+ * The <code>default</code> implementation of Decimal Type Definition interface.\r
+ * \r
+ * \r
+ * @see DecimalTypeDefinition\r
+ */\r
 public class Decimal64 implements DecimalTypeDefinition {\r
 \r
     private final QName name = BaseTypes.constructQName("decimal64");\r
@@ -27,7 +33,7 @@ public class Decimal64 implements DecimalTypeDefinition {
     private BigDecimal defaultValue = null;\r
 \r
     private final String description = "The decimal64 type represents a subset of the real numbers, which can "\r
-            + "be represented by decimal numerals.  The value space of decimal64 is the set of numbers that can "\r
+            + "be represented by decimal numerals. The value space of decimal64 is the set of numbers that can "\r
             + "be obtained by multiplying a 64-bit signed integer by a negative power of ten, i.e., expressible as "\r
             + "'i x 10^-n' where i is an integer64 and n is an integer between 1 and 18, inclusively.";\r
 \r
@@ -36,32 +42,132 @@ public class Decimal64 implements DecimalTypeDefinition {
     private final List<RangeConstraint> rangeStatements;\r
     private final Integer fractionDigits;\r
 \r
+    /**\r
+     * Default Decimal64 Type Constructor. <br>\r
+     * <br>\r
+     * The initial range statements are set to Decimal64\r
+     * <code>min=-922337203685477580.8</code> and\r
+     * <code>max=922337203685477580.7</code> <br>\r
+     * The fractions digits MUST be defined as integer between 1 and 18\r
+     * inclusively as defined interface {@link DecimalTypeDefinition} <br>\r
+     * If the fraction digits are not defined inner the definition boundaries\r
+     * the constructor will throw {@link IllegalArgumentException}\r
+     * \r
+     * @param fractionDigits\r
+     *            integer between 1 and 18 inclusively\r
+     * \r
+     * @see DecimalTypeDefinition\r
+     * @exception IllegalArgumentException\r
+     */\r
     public Decimal64(final Integer fractionDigits) {\r
         super();\r
+        if (!((fractionDigits.intValue() > 1) && (fractionDigits.intValue() <= 18))) {\r
+            throw new IllegalArgumentException(\r
+                    "The fraction digits outside of boundaries. Fraction digits MUST be integer between 1 and 18 inclusively");\r
+        }\r
         this.fractionDigits = fractionDigits;\r
-        rangeStatements = new ArrayList<RangeConstraint>();\r
+        rangeStatements = defaultRangeStatements();\r
         this.path = BaseTypes.schemaPath(name);\r
     }\r
 \r
+    /**\r
+     * Decimal64 Type Constructor. <br>\r
+     * \r
+     * If parameter <code>Range Statements</code> is <code>null</code> or\r
+     * defined as <code>empty List</code> the constructor automatically assigns\r
+     * the boundaries as min and max value defined for Decimal64 in <a\r
+     * href="https://tools.ietf.org/html/rfc6020#section-9.3">[RFC-6020] The\r
+     * decimal64 Built-In Type</a> <br>\r
+     * <br>\r
+     * The fractions digits MUST be defined as integer between 1 and 18\r
+     * inclusively as defined interface {@link DecimalTypeDefinition} <br>\r
+     * If the fraction digits are not defined inner the definition boundaries\r
+     * the constructor will throw {@link IllegalArgumentException}\r
+     * \r
+     * @param rangeStatements\r
+     *            Range Constraint Statements\r
+     * @param fractionDigits\r
+     *            integer between 1 and 18 inclusively\r
+     * @exception IllegalArgumentException\r
+     */\r
     public Decimal64(final List<RangeConstraint> rangeStatements,\r
             Integer fractionDigits) {\r
         super();\r
-        this.rangeStatements = rangeStatements;\r
+        if (!((fractionDigits.intValue() > 1) && (fractionDigits.intValue() <= 18))) {\r
+            throw new IllegalArgumentException(\r
+                    "The fraction digits outside of boundaries. Fraction digits MUST be integer between 1 and 18 inclusively");\r
+        }\r
+        if (rangeStatements == null || rangeStatements.isEmpty()) {\r
+            this.rangeStatements = defaultRangeStatements();\r
+        } else {\r
+            this.rangeStatements = Collections.unmodifiableList(rangeStatements);\r
+        }\r
         this.fractionDigits = fractionDigits;\r
         this.path = BaseTypes.schemaPath(name);\r
     }\r
 \r
+    /**\r
+     * Decimal64 Type Constructor. <br>\r
+     * If parameter <code>Range Statements</code> is <code>null</code> or\r
+     * defined as <code>empty List</code> the constructor automatically assigns\r
+     * the boundaries as min and max value defined for Decimal64 in <a\r
+     * href="https://tools.ietf.org/html/rfc6020#section-9.3">[RFC-6020] The\r
+     * decimal64 Built-In Type</a> <br>\r
+     * <br>\r
+     * The fractions digits MUST be defined as integer between 1 and 18\r
+     * inclusively as defined interface {@link DecimalTypeDefinition} <br>\r
+     * If the fraction digits are not defined inner the definition boundaries\r
+     * the constructor will throw {@link IllegalArgumentException}\r
+     * \r
+     * @param units\r
+     *            units associated with the type\r
+     * @param defaultValue\r
+     *            Default Value for type\r
+     * @param rangeStatements\r
+     *            Range Constraint Statements\r
+     * @param fractionDigits\r
+     *            integer between 1 and 18 inclusively\r
+     * \r
+     * @exception IllegalArgumentException\r
+     */\r
     public Decimal64(final String units, final BigDecimal defaultValue,\r
             final List<RangeConstraint> rangeStatements,\r
             final Integer fractionDigits) {\r
         super();\r
+        if (!((fractionDigits.intValue() > 1) && (fractionDigits.intValue() <= 18))) {\r
+            throw new IllegalArgumentException(\r
+                    "The fraction digits outside of boundaries. Fraction digits MUST be integer between 1 and 18 inclusively");\r
+        }\r
+\r
+        if (rangeStatements == null || rangeStatements.isEmpty()) {\r
+            this.rangeStatements = defaultRangeStatements();\r
+            \r
+        } else {\r
+            this.rangeStatements = Collections.unmodifiableList(rangeStatements);\r
+        }\r
         this.units = units;\r
         this.defaultValue = defaultValue;\r
-        this.rangeStatements = rangeStatements;\r
         this.fractionDigits = fractionDigits;\r
         this.path = BaseTypes.schemaPath(name);\r
     }\r
 \r
+    /**\r
+     * Returns unmodifiable List with default definition of Range Statements.\r
+     * \r
+     * @return unmodifiable List with default definition of Range Statements.\r
+     */\r
+    private List<RangeConstraint> defaultRangeStatements() {\r
+        final List<RangeConstraint> rangeStatements = new ArrayList<RangeConstraint>();\r
+        final BigDecimal min = new BigDecimal("-922337203685477580.8");\r
+        final BigDecimal max = new BigDecimal("922337203685477580.7");\r
+        final String rangeDescription = "Integer values between " + min\r
+                + " and " + max + ", inclusively.";\r
+        rangeStatements.add(BaseConstraints.rangeConstraint(min, max,\r
+                rangeDescription,\r
+                "https://tools.ietf.org/html/rfc6020#section-9.2.4"));\r
+        return Collections.unmodifiableList(rangeStatements);\r
+    }\r
+\r
     @Override\r
     public DecimalTypeDefinition getBaseType() {\r
         return this;\r
@@ -117,6 +223,44 @@ public class Decimal64 implements DecimalTypeDefinition {
         return fractionDigits;\r
     }\r
 \r
+    @Override\r
+    public int hashCode() {\r
+        final int prime = 31;\r
+        int result = 1;\r
+        result = prime * result + ((name == null) ? 0 : name.hashCode());\r
+        result = prime * result + ((path == null) ? 0 : path.hashCode());\r
+        return result;\r
+    }\r
+\r
+    @Override\r
+    public boolean equals(Object obj) {\r
+        if (this == obj) {\r
+            return true;\r
+        }\r
+        if (obj == null) {\r
+            return false;\r
+        }\r
+        if (getClass() != obj.getClass()) {\r
+            return false;\r
+        }\r
+        Decimal64 other = (Decimal64) obj;\r
+        if (name == null) {\r
+            if (other.name != null) {\r
+                return false;\r
+            }\r
+        } else if (!name.equals(other.name)) {\r
+            return false;\r
+        }\r
+        if (path == null) {\r
+            if (other.path != null) {\r
+                return false;\r
+            }\r
+        } else if (!path.equals(other.path)) {\r
+            return false;\r
+        }\r
+        return true;\r
+    }\r
+\r
     @Override\r
     public String toString() {\r
         return Decimal64.class.getSimpleName() + "[qname=" + name\r
index 34ac5374f7415f6e965b40571b59ecd57c86d33d..66a7d30c31f13248c3fa1a42f0e3983ae1c1126d 100644 (file)
@@ -16,6 +16,11 @@ import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;\r
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;\r
 \r
+/**\r
+ * The <code>default</code> implementation of Enumertaion Type Definition interface.\r
+ * \r
+ * @see EnumTypeDefinition\r
+ */\r
 public class EnumerationType implements EnumTypeDefinition {\r
 \r
     private final QName name = BaseTypes.constructQName("enumeration");\r
@@ -29,16 +34,15 @@ public class EnumerationType implements EnumTypeDefinition {
 \r
     public EnumerationType(final List<EnumPair> enums) {\r
         super();\r
-        this.enums = enums;\r
-\r
+        this.enums = Collections.unmodifiableList(enums);\r
         defaultEnum = Collections.emptyList();\r
     }\r
 \r
     public EnumerationType(final List<EnumPair> defaultEnum,\r
             final List<EnumPair> enums, final String units) {\r
         super();\r
-        this.defaultEnum = defaultEnum;\r
-        this.enums = enums;\r
+        this.defaultEnum = Collections.unmodifiableList(defaultEnum);\r
+        this.enums = Collections.unmodifiableList(enums);\r
         this.units = units;\r
     }\r
 \r
index 775d368eaf27ae543dbaedccfa3cb000c5d9ccb3..750b11217c0f2aa55dadea3a0592677c6fa00722 100644 (file)
@@ -16,12 +16,18 @@ import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;\r
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;\r
 \r
+/**\r
+ * The <code>default</code> implementation of Identity Type Definition interface.\r
+ * \r
+ * @see IdentityTypeDefinition\r
+ */\r
 public class IdentityType implements IdentityTypeDefinition {\r
 \r
     private final QName name = BaseTypes.constructQName("identity");\r
     private final SchemaPath path = BaseTypes.schemaPath(name);\r
-    private final String description = "";\r
-    private final String reference = "";\r
+    private final String description = "The 'identity' statement is used to define a new " +\r
+               "globally unique, abstract, and untyped identity.";\r
+    private final String reference = "https://tools.ietf.org/html/rfc6020#section-7.16";\r
 \r
     private String units = "";\r
     private final QName identityName;\r
index 24ab0af1ad0806c82497f32d13e6a7661d860131..24c3163cc0664654b305527cd5a0824949aacb0a 100644 (file)
@@ -18,12 +18,17 @@ import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;\r
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;\r
 \r
+/**\r
+ * The <code>default</code> implementation of Identityref Type Definition interface.\r
+ *\r
+ * @see IdentityrefTypeDefinition\r
+ */\r
 public class Identityref implements IdentityrefTypeDefinition {\r
 \r
     private final QName name = BaseTypes.constructQName("identityref");\r
     private final SchemaPath path = BaseTypes.schemaPath(name);\r
-    private final String description = "";\r
-    private final String reference = "";\r
+    private final String description = "The identityref type is used to reference an existing identity.";\r
+    private final String reference = "https://tools.ietf.org/html/rfc6020#section-9.10";\r
 \r
     private final IdentityTypeDefinition identity;\r
     private final RevisionAwareXPath xpath;\r
index 9a238aea1f031935a6c69c1155852f12bf5d003b..4dd3e2164d6a584d87e1b7ef4ae802a6f193c239 100644 (file)
@@ -17,12 +17,18 @@ import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;\r
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;\r
 \r
+/**\r
+ * The <code>default</code> implementation of Instance Identifier Type Definition interface.\r
+ *\r
+ * @see InstanceIdentifierTypeDefinition\r
+ */\r
 public class InstanceIdentifier implements InstanceIdentifierTypeDefinition {\r
 \r
     private static final QName name = BaseTypes\r
             .constructQName("instance-identifier");\r
-    private static final String description = "";\r
-    private static final String reference = "";\r
+    private static final String description = "The instance-identifier built-in type is used to " +\r
+               "uniquely identify a particular instance node in the data tree.";\r
+    private static final String reference = "https://tools.ietf.org/html/rfc6020#section-9.13";\r
 \r
     private final transient SchemaPath path = BaseTypes.schemaPath(name);\r
     private final RevisionAwareXPath xpath;\r
index 49ac4d1649bbaebbb756bd3350c2baeeda151435..9d2376972042a8dc739a663620a0912db9762029 100644 (file)
@@ -1,10 +1,10 @@
 /*\r
 * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
 *\r
 * This program and the accompanying materials are made available under the\r
 * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
 * and is available at http://www.eclipse.org/legal/epl-v10.html\r
 */\r
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
 package org.opendaylight.controller.model.util;\r
 \r
 import java.util.List;\r
@@ -13,36 +13,27 @@ import org.opendaylight.controller.model.api.type.IntegerTypeDefinition;
 import org.opendaylight.controller.model.api.type.RangeConstraint;\r
 import org.opendaylight.controller.yang.common.QName;\r
 \r
-public class Int16 extends AbstractInteger {\r
+/**\r
+ * Implementation of Yang int16 built-in type. <br>\r
+ * int16 represents integer values between -32768 and 32767, inclusively. The\r
+ * Java counterpart of Yang int16 built-in type is {@link Short}.\r
+ * \r
+ * @see AbstractSignedInteger\r
+ */\r
+public class Int16 extends AbstractSignedInteger {\r
 \r
     private static final QName name = BaseTypes.constructQName("int16");\r
     private Short defaultValue = null;\r
-    private static final String description = "";\r
-    private static final String reference = "";\r
+    private static final String description = \r
+            "int16  represents integer values between -32768 and 32767, inclusively.";\r
 \r
     public Int16() {\r
-        super(name, description, reference);\r
-    }\r
-\r
-    public Int16(final Short defaultValue) {\r
-        super(name, description, reference);\r
-        this.defaultValue = defaultValue;\r
-    }\r
-\r
-    public Int16(final List<RangeConstraint> rangeStatements,\r
-            final Short defaultValue) {\r
-        super(name, description, reference, rangeStatements);\r
-        this.defaultValue = defaultValue;\r
-    }\r
-\r
-    public Int16(final String units, final Short defaultValue) {\r
-        super(name, description, reference, units);\r
-        this.defaultValue = defaultValue;\r
+        super(name, description, Short.MIN_VALUE, Short.MAX_VALUE, "");\r
     }\r
 \r
     public Int16(final List<RangeConstraint> rangeStatements,\r
             final String units, final Short defaultValue) {\r
-        super(name, description, reference, units, rangeStatements);\r
+        super(name, description, rangeStatements, units);\r
         this.defaultValue = defaultValue;\r
     }\r
 \r
index 18908750c4d38031d3580b6698b9afedbeaf1df6..ee8b929942c6aba9a4286bf2a4ae937083549f0b 100644 (file)
@@ -1,10 +1,10 @@
 /*\r
 * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
 *\r
 * This program and the accompanying materials are made available under the\r
 * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
 * and is available at http://www.eclipse.org/legal/epl-v10.html\r
 */\r
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
 package org.opendaylight.controller.model.util;\r
 \r
 import java.util.List;\r
@@ -13,43 +13,42 @@ import org.opendaylight.controller.model.api.type.IntegerTypeDefinition;
 import org.opendaylight.controller.model.api.type.RangeConstraint;\r
 import org.opendaylight.controller.yang.common.QName;\r
 \r
-public class Int32 extends AbstractInteger {\r
+/**\r
+ * Implementation of Yang int32 built-in type. <br>\r
+ * int32 represents integer values between -2147483648 and 2147483647,\r
+ * inclusively. The Java counterpart of Yang int32 built-in type is\r
+ * {@link Integer}.\r
+ * \r
+ * @see AbstractSignedInteger\r
+ * \r
+ */\r
+public class Int32 extends AbstractSignedInteger {\r
 \r
     private static final QName name = BaseTypes.constructQName("int32");\r
     private Integer defaultValue = null;\r
-    private static final String description = "";\r
-    private static final String reference = "";\r
+    private static final String description = \r
+            "int32  represents integer values between -2147483648 and 2147483647, inclusively.";\r
 \r
     public Int32() {\r
-        super(name, description, reference);\r
+        super(name, description, Integer.MIN_VALUE, Integer.MAX_VALUE, "");\r
     }\r
 \r
     public Int32(final Integer defaultValue) {\r
-        super(name, description, reference);\r
-        this.defaultValue = defaultValue;\r
-    }\r
-\r
-    public Int32(final List<RangeConstraint> rangeStatements,\r
-            final Integer defaultValue) {\r
-        super(name, description, reference, rangeStatements);\r
-        this.defaultValue = defaultValue;\r
-    }\r
-\r
-    public Int32(final String units, final Integer defaultValue) {\r
-        super(name, description, reference, units);\r
+        super(name, description, Integer.MIN_VALUE, Integer.MAX_VALUE, "");\r
         this.defaultValue = defaultValue;\r
     }\r
 \r
     public Int32(final List<RangeConstraint> rangeStatements,\r
             final String units, final Integer defaultValue) {\r
-        super(name, description, reference, units, rangeStatements);\r
+        super(name, description, rangeStatements, units);\r
         this.defaultValue = defaultValue;\r
     }\r
 \r
     /*\r
      * (non-Javadoc)\r
      * \r
-     * @see org.opendaylight.controller.yang.model.api.TypeDefinition#getBaseType()\r
+     * @see\r
+     * org.opendaylight.controller.yang.model.api.TypeDefinition#getBaseType()\r
      */\r
     @Override\r
     public IntegerTypeDefinition getBaseType() {\r
@@ -59,7 +58,9 @@ public class Int32 extends AbstractInteger {
     /*\r
      * (non-Javadoc)\r
      * \r
-     * @see org.opendaylight.controller.yang.model.api.TypeDefinition#getDefaultValue()\r
+     * @see\r
+     * org.opendaylight.controller.yang.model.api.TypeDefinition#getDefaultValue\r
+     * ()\r
      */\r
     @Override\r
     public Object getDefaultValue() {\r
index c03c6b7bf6f61b1b251f39aa5a593aaa5222b94b..25d2b6d056ede70f2b3105e6a823dd9fed104bba 100644 (file)
@@ -13,36 +13,32 @@ import org.opendaylight.controller.model.api.type.IntegerTypeDefinition;
 import org.opendaylight.controller.model.api.type.RangeConstraint;\r
 import org.opendaylight.controller.yang.common.QName;\r
 \r
-public class Int64 extends AbstractInteger {\r
+/**\r
+ * Implementation of Yang int64 built-in type. <br>\r
+ * int64  represents integer values between -9223372036854775808 and 9223372036854775807, inclusively. \r
+ * The Java counterpart of Yang int64 built-in type is\r
+ * {@link Long}.\r
+ *\r
+ */\r
+public class Int64 extends AbstractSignedInteger {\r
 \r
     private static final QName name = BaseTypes.constructQName("int64");\r
     private Long defaultValue = null;\r
-    private static final String description = "";\r
-    private static final String reference = "";\r
+    private static final String description = \r
+            "int64  represents integer values between -9223372036854775808 and 9223372036854775807, inclusively.";\r
 \r
     public Int64() {\r
-        super(name, description, reference);\r
+        super(name, description, Integer.MIN_VALUE, Integer.MAX_VALUE, "");\r
     }\r
 \r
     public Int64(final Long defaultValue) {\r
-        super(name, description, reference);\r
-        this.defaultValue = defaultValue;\r
-    }\r
-\r
-    public Int64(final List<RangeConstraint> rangeStatements,\r
-            final Long defaultValue) {\r
-        super(name, description, reference, rangeStatements);\r
-        this.defaultValue = defaultValue;\r
-    }\r
-\r
-    public Int64(final String units, final Long defaultValue) {\r
-        super(name, description, reference, units);\r
+        super(name, description, Integer.MIN_VALUE, Integer.MAX_VALUE, "");\r
         this.defaultValue = defaultValue;\r
     }\r
 \r
     public Int64(final List<RangeConstraint> rangeStatements,\r
             final String units, final Long defaultValue) {\r
-        super(name, description, reference, units, rangeStatements);\r
+        super(name, description, rangeStatements, units);\r
         this.defaultValue = defaultValue;\r
     }\r
 \r
index ebb5fa7c6a984f75bb36cb8381cb60d4c27ed202..53b9c19573320d83323394337a2f6937812db43b 100644 (file)
@@ -13,36 +13,33 @@ import org.opendaylight.controller.model.api.type.IntegerTypeDefinition;
 import org.opendaylight.controller.model.api.type.RangeConstraint;\r
 import org.opendaylight.controller.yang.common.QName;\r
 \r
-public class Int8 extends AbstractInteger {\r
+/**\r
+ * Implementation of Yang int8 built-in type.\r
+ * <br>\r
+ * int8 represents integer values between -128 and 127, inclusively. The Java counterpart of \r
+ * Yang int8 built-in type is {@link Byte}.\r
+ * \r
+ * @see AbstractSignedInteger\r
+ */\r
+public class Int8 extends AbstractSignedInteger {\r
 \r
     private static final QName name = BaseTypes.constructQName("int8");\r
     private Byte defaultValue = null;\r
-    private static final String description = "";\r
-    private static final String reference = "";\r
-\r
+    private static final String description = \r
+            "represents integer values between -128 and 127, inclusively.";\r
+    \r
     public Int8() {\r
-        super(name, description, reference);\r
+        super(name, description, Byte.MIN_VALUE, Byte.MAX_VALUE, "");\r
     }\r
 \r
     public Int8(final Byte defaultValue) {\r
-        super(name, description, reference);\r
-        this.defaultValue = defaultValue;\r
-    }\r
-\r
-    public Int8(final List<RangeConstraint> rangeStatements,\r
-            final Byte defaultValue) {\r
-        super(name, description, reference, rangeStatements);\r
-        this.defaultValue = defaultValue;\r
-    }\r
-\r
-    public Int8(final String units, final Byte defaultValue) {\r
-        super(name, description, reference, units);\r
+        super(name, description, Byte.MIN_VALUE, Byte.MAX_VALUE, "");\r
         this.defaultValue = defaultValue;\r
     }\r
 \r
     public Int8(final List<RangeConstraint> rangeStatements,\r
             final String units, final Byte defaultValue) {\r
-        super(name, description, reference, units, rangeStatements);\r
+        super(name, description, rangeStatements, units);\r
         this.defaultValue = defaultValue;\r
     }\r
 \r
index 9c99d4218a77c0f06a0a9246e66d4cf2fd7b5d26..a185d55ea6be6b0ead0554d30268f92e3c97a5e6 100644 (file)
@@ -17,10 +17,16 @@ import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;\r
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;\r
 \r
+/**\r
+ * The <code>default</code> implementation of Instance Leafref Type Definition interface.\r
+ *\r
+ * @see LeafrefTypeDefinition\r
+ */\r
 public class Leafref implements LeafrefTypeDefinition {\r
     private static final QName name = BaseTypes.constructQName("leafref");\r
-    private static final String description = "";\r
-    private static final String reference = "";\r
+    private static final String description = "The leafref type is used to reference a " +\r
+               "particular leaf instance in the data tree.";\r
+    private static final String reference = "https://tools.ietf.org/html/rfc6020#section-9.9";\r
     private final SchemaPath path = BaseTypes.schemaPath(name);\r
     private final RevisionAwareXPath xpath;\r
     private final String units = "";\r
index d3328f38046757c683609a3170b61e043bcc0c47..ef4ea8463db4c8c30967e4c2b1350093a1a920cc 100644 (file)
@@ -9,6 +9,11 @@ package org.opendaylight.controller.model.util;
 
 import org.opendaylight.controller.yang.model.api.RevisionAwareXPath;
 
+/**
+ * The <code>default</code> implementation of Instance Rewision Aware XPath interface.
+ * 
+ * @see RevisionAwareXPath
+ */
 public class RevisionAwareXPathImpl implements RevisionAwareXPath {
 
     private final String xpath;
@@ -24,11 +29,6 @@ public class RevisionAwareXPathImpl implements RevisionAwareXPath {
         return absolute;
     }
 
-    @Override
-    public String toString() {
-        return xpath;
-    }
-
     @Override
     public int hashCode() {
         final int prime = 31;
@@ -62,5 +62,9 @@ public class RevisionAwareXPathImpl implements RevisionAwareXPath {
         }
         return false;
     }
-
+    
+    @Override
+    public String toString() {
+        return xpath;
+    }
 }
index 99b6d26684af44bad5949e60acca58a1cd0aa190..e0acee2dd4d18d0e83e2c0696384407c52ff95b0 100644 (file)
@@ -7,6 +7,7 @@
   */\r
 package org.opendaylight.controller.model.util;\r
 \r
+import java.util.ArrayList;\r
 import java.util.Collections;\r
 import java.util.List;\r
 \r
@@ -18,6 +19,11 @@ import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;\r
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;\r
 \r
+/**\r
+ * The <code>default</code> implementation of String Type Definition interface.\r
+ *\r
+ * @see StringTypeDefinition\r
+ */\r
 public class StringType implements StringTypeDefinition {\r
 \r
     private final QName name = BaseTypes.constructQName("string");;\r
@@ -29,21 +35,41 @@ public class StringType implements StringTypeDefinition {
     private final List<PatternConstraint> patterns;\r
     private String units = "";\r
 \r
+    /**\r
+     * Default Constructor.\r
+     */\r
     public StringType() {\r
         super();\r
         path = BaseTypes.schemaPath(name);\r
-        this.lengthStatements = Collections.emptyList();\r
+        final List<LengthConstraint> constraints = new ArrayList<LengthConstraint>();\r
+        constraints.add(BaseConstraints.lengthConstraint(0, Long.MAX_VALUE, "", ""));\r
+        lengthStatements = Collections.unmodifiableList(constraints);\r
+        \r
         this.patterns = Collections.emptyList();\r
     }\r
 \r
-    public StringType(List<LengthConstraint> lengthStatements,\r
-            List<PatternConstraint> patterns) {\r
+    /**\r
+     * \r
+     * \r
+     * @param lengthStatements\r
+     * @param patterns\r
+     */\r
+    public StringType(final List<LengthConstraint> lengthStatements,\r
+            final List<PatternConstraint> patterns) {\r
         super();\r
         path = BaseTypes.schemaPath(name);\r
         this.lengthStatements = Collections.unmodifiableList(lengthStatements);\r
         this.patterns = Collections.unmodifiableList(patterns);\r
     }\r
 \r
+    /**\r
+     * \r
+     * \r
+     * @param defaultValue\r
+     * @param lengthStatements\r
+     * @param patterns\r
+     * @param units\r
+     */\r
     public StringType(final String defaultValue,\r
             final List<LengthConstraint> lengthStatements,\r
             final List<PatternConstraint> patterns, final String units) {\r
index 5094d77bd518340961fd81e254650cfa17ac1022..a5540bf0c77b8443b2dedb58e9bdba2d9785f0cb 100644 (file)
@@ -1,59 +1,62 @@
 /*\r
 * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
 *\r
 * This program and the accompanying materials are made available under the\r
 * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
 * and is available at http://www.eclipse.org/legal/epl-v10.html\r
 */\r
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
 package org.opendaylight.controller.model.util;\r
 \r
 import java.util.List;\r
 \r
-import org.opendaylight.controller.model.api.type.IntegerTypeDefinition;\r
 import org.opendaylight.controller.model.api.type.RangeConstraint;\r
+import org.opendaylight.controller.model.api.type.UnsignedIntegerTypeDefinition;\r
 import org.opendaylight.controller.yang.common.QName;\r
 \r
-public class Uint16 extends AbstractInteger {\r
+/**\r
+ * Implementation of Yang uint32 built-in type. <br>\r
+ * uint16 represents integer values between 0 and 65535, inclusively. The Java\r
+ * counterpart of Yang uint32 built-in type is {@link Integer}.\r
+ * \r
+ */\r
+public class Uint16 extends AbstractUnsignedInteger {\r
 \r
     private static final QName name = BaseTypes.constructQName("uint16");\r
     private Integer defaultValue = null;\r
-    private static final String description = "";\r
-    private static final String reference = "";\r
+    private static final String description = "uint16 represents integer values between 0 and 65535, inclusively.";\r
 \r
     public Uint16() {\r
-        super(name, description, reference);\r
+        super(name, description, Short.MIN_VALUE, Short.MAX_VALUE, "");\r
     }\r
 \r
     public Uint16(final Integer defaultValue) {\r
-        super(name, description, reference);\r
+        super(name, description, Short.MIN_VALUE, Short.MAX_VALUE, "");\r
         this.defaultValue = defaultValue;\r
     }\r
 \r
     public Uint16(final List<RangeConstraint> rangeStatements,\r
-            final Integer defaultValue) {\r
-        super(name, description, reference, rangeStatements);\r
-        this.defaultValue = defaultValue;\r
-    }\r
-\r
-    public Uint16(final String units, final Integer defaultValue) {\r
-        super(name, description, reference, units);\r
+            final String units, final Integer defaultValue) {\r
+        super(name, description, rangeStatements, units);\r
         this.defaultValue = defaultValue;\r
     }\r
 \r
     /*\r
      * (non-Javadoc)\r
      * \r
-     * @see org.opendaylight.controller.yang.model.api.TypeDefinition#getBaseType()\r
+     * @see\r
+     * org.opendaylight.controller.yang.model.api.TypeDefinition#getBaseType()\r
      */\r
     @Override\r
-    public IntegerTypeDefinition getBaseType() {\r
+    public UnsignedIntegerTypeDefinition getBaseType() {\r
         return this;\r
     }\r
 \r
     /*\r
      * (non-Javadoc)\r
      * \r
-     * @see org.opendaylight.controller.yang.model.api.TypeDefinition#getDefaultValue()\r
+     * @see\r
+     * org.opendaylight.controller.yang.model.api.TypeDefinition#getDefaultValue\r
+     * ()\r
      */\r
     @Override\r
     public Object getDefaultValue() {\r
index 48c6a47ecb92c6acfda9fde89dfa672e7c28f085..083cd7e32e8e5be077c9c8694b2c7e6d344b422a 100644 (file)
@@ -1,59 +1,62 @@
 /*\r
 * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
 *\r
 * This program and the accompanying materials are made available under the\r
 * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
 * and is available at http://www.eclipse.org/legal/epl-v10.html\r
 */\r
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
 package org.opendaylight.controller.model.util;\r
 \r
 import java.util.List;\r
 \r
-import org.opendaylight.controller.model.api.type.IntegerTypeDefinition;\r
 import org.opendaylight.controller.model.api.type.RangeConstraint;\r
+import org.opendaylight.controller.model.api.type.UnsignedIntegerTypeDefinition;\r
 import org.opendaylight.controller.yang.common.QName;\r
 \r
-public class Uint32 extends AbstractInteger {\r
+/**\r
+ * Implementation of Yang uint32 built-in type. <br>\r
+ * uint32 represents integer values between 0 and 4294967295, inclusively. The\r
+ * Java counterpart of Yang uint32 built-in type is {@link Long}.\r
+ * \r
+ */\r
+public class Uint32 extends AbstractUnsignedInteger {\r
 \r
     private static final QName name = BaseTypes.constructQName("uint32");\r
     private Long defaultValue = null;\r
-    private static final String description = "";\r
-    private static final String reference = "";\r
+    private static final String description = "uint32 represents integer values between 0 and 4294967295, inclusively.";\r
 \r
     public Uint32() {\r
-        super(name, description, reference);\r
+        super(name, description, Short.MIN_VALUE, Short.MAX_VALUE, "");\r
     }\r
 \r
     public Uint32(final Long defaultValue) {\r
-        super(name, description, reference);\r
+        super(name, description, Short.MIN_VALUE, Short.MAX_VALUE, "");\r
         this.defaultValue = defaultValue;\r
     }\r
 \r
     public Uint32(final List<RangeConstraint> rangeStatements,\r
-            final Long defaultValue) {\r
-        super(name, description, reference, rangeStatements);\r
-        this.defaultValue = defaultValue;\r
-    }\r
-\r
-    public Uint32(final String units, final Long defaultValue) {\r
-        super(name, description, reference, units);\r
+            final String units, final Long defaultValue) {\r
+        super(name, description, rangeStatements, units);\r
         this.defaultValue = defaultValue;\r
     }\r
 \r
     /*\r
      * (non-Javadoc)\r
      * \r
-     * @see org.opendaylight.controller.yang.model.api.TypeDefinition#getBaseType()\r
+     * @see\r
+     * org.opendaylight.controller.yang.model.api.TypeDefinition#getBaseType()\r
      */\r
     @Override\r
-    public IntegerTypeDefinition getBaseType() {\r
+    public UnsignedIntegerTypeDefinition getBaseType() {\r
         return this;\r
     }\r
 \r
     /*\r
      * (non-Javadoc)\r
      * \r
-     * @see org.opendaylight.controller.yang.model.api.TypeDefinition#getDefaultValue()\r
+     * @see\r
+     * org.opendaylight.controller.yang.model.api.TypeDefinition#getDefaultValue\r
+     * ()\r
      */\r
     @Override\r
     public Object getDefaultValue() {\r
index 8ac7c39affa781f6053f8eebd9eea0ff44dece7d..e17a4dc4df8783bdc4efe2fcc8a6252af0d427bc 100644 (file)
@@ -1,60 +1,65 @@
 /*\r
 * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
 *\r
 * This program and the accompanying materials are made available under the\r
 * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
 * and is available at http://www.eclipse.org/legal/epl-v10.html\r
 */\r
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
 package org.opendaylight.controller.model.util;\r
 \r
 import java.math.BigInteger;\r
 import java.util.List;\r
 \r
-import org.opendaylight.controller.model.api.type.IntegerTypeDefinition;\r
 import org.opendaylight.controller.model.api.type.RangeConstraint;\r
+import org.opendaylight.controller.model.api.type.UnsignedIntegerTypeDefinition;\r
 import org.opendaylight.controller.yang.common.QName;\r
 \r
-public class Uint64 extends AbstractInteger {\r
+/**\r
+ * Implementation of Yang uint64 built-in type. <br>\r
+ * uint64 represents integer values between 0 and 18446744073709551615,\r
+ * inclusively. The Java counterpart of Yang uint64 built-in type is\r
+ * {@link BigInteger}.\r
+ * \r
+ */\r
+public class Uint64 extends AbstractUnsignedInteger {\r
 \r
     private static final QName name = BaseTypes.constructQName("uint32");\r
     private BigInteger defaultValue = null;\r
-    private static final String description = "";\r
-    private static final String reference = "";\r
+    private static final String description = \r
+            "uint64 represents integer values between 0 and 18446744073709551615, inclusively.";\r
 \r
     public Uint64() {\r
-        super(name, description, reference);\r
+        super(name, description, Short.MIN_VALUE, Short.MAX_VALUE, "");\r
     }\r
 \r
     public Uint64(final BigInteger defaultValue) {\r
-        super(name, description, reference);\r
+        super(name, description, Short.MIN_VALUE, Short.MAX_VALUE, "");\r
         this.defaultValue = defaultValue;\r
     }\r
 \r
     public Uint64(final List<RangeConstraint> rangeStatements,\r
-            final BigInteger defaultValue) {\r
-        super(name, description, reference, rangeStatements);\r
-        this.defaultValue = defaultValue;\r
-    }\r
-\r
-    public Uint64(final String units, final BigInteger defaultValue) {\r
-        super(name, description, reference, units);\r
+            final String units, final BigInteger defaultValue) {\r
+        super(name, description, rangeStatements, units);\r
         this.defaultValue = defaultValue;\r
     }\r
 \r
     /*\r
      * (non-Javadoc)\r
      * \r
-     * @see org.opendaylight.controller.yang.model.api.TypeDefinition#getBaseType()\r
+     * @see\r
+     * org.opendaylight.controller.yang.model.api.TypeDefinition#getBaseType()\r
      */\r
     @Override\r
-    public IntegerTypeDefinition getBaseType() {\r
+    public UnsignedIntegerTypeDefinition getBaseType() {\r
         return this;\r
     }\r
 \r
     /*\r
      * (non-Javadoc)\r
      * \r
-     * @see org.opendaylight.controller.yang.model.api.TypeDefinition#getDefaultValue()\r
+     * @see\r
+     * org.opendaylight.controller.yang.model.api.TypeDefinition#getDefaultValue\r
+     * ()\r
      */\r
     @Override\r
     public Object getDefaultValue() {\r
index 39314fe7183a2aa0b79ef6d7452991660fafc09f..d4429dccb34e20fd1071ad857e2ca11f86785e3d 100644 (file)
@@ -9,40 +9,37 @@ package org.opendaylight.controller.model.util;
 \r
 import java.util.List;\r
 \r
-import org.opendaylight.controller.model.api.type.IntegerTypeDefinition;\r
 import org.opendaylight.controller.model.api.type.RangeConstraint;\r
+import org.opendaylight.controller.model.api.type.UnsignedIntegerTypeDefinition;\r
 import org.opendaylight.controller.yang.common.QName;\r
 \r
-public class Uint8 extends AbstractInteger {\r
+/**\r
+ * Implementation of Yang uint8 built-in type.\r
+ * <br>\r
+ * uint8 represents integer values between 0 and 255, inclusively. The Java counterpart of \r
+ * Yang uint8 built-in type is {@link Short}.\r
+ * \r
+ * @see AbstractUnsignedInteger\r
+ */\r
+public class Uint8 extends AbstractUnsignedInteger {\r
 \r
     private static final QName name = BaseTypes.constructQName("uint8");\r
     private Short defaultValue = null;\r
-    private static final String description = "";\r
-    private static final String reference = "";\r
+    private static final String description = \r
+            "uint8  represents integer values between 0 and 255, inclusively.";\r
 \r
     public Uint8() {\r
-        super(name, description, reference);\r
+        super(name, description, Short.MIN_VALUE, Short.MAX_VALUE, "");\r
     }\r
 \r
     public Uint8(final Short defaultValue) {\r
-        super(name, description, reference);\r
-        this.defaultValue = defaultValue;\r
-    }\r
-\r
-    public Uint8(final List<RangeConstraint> rangeStatements,\r
-            final Short defaultValue) {\r
-        super(name, description, reference, rangeStatements);\r
-        this.defaultValue = defaultValue;\r
-    }\r
-\r
-    public Uint8(final String units, final Short defaultValue) {\r
-        super(name, description, reference, units);\r
+        super(name, description, Short.MIN_VALUE, Short.MAX_VALUE, "");\r
         this.defaultValue = defaultValue;\r
     }\r
 \r
     public Uint8(final List<RangeConstraint> rangeStatements,\r
             final String units, final Short defaultValue) {\r
-        super(name, description, reference, units, rangeStatements);\r
+        super(name, description, rangeStatements, units);\r
         this.defaultValue = defaultValue;\r
     }\r
 \r
@@ -52,7 +49,7 @@ public class Uint8 extends AbstractInteger {
      * @see org.opendaylight.controller.yang.model.api.TypeDefinition#getBaseType()\r
      */\r
     @Override\r
-    public IntegerTypeDefinition getBaseType() {\r
+    public UnsignedIntegerTypeDefinition getBaseType() {\r
         return this;\r
     }\r
 \r
index f0b5ddd2865f2c34aec5eb70c3b7eedc23d7798a..7ad57a7646f2ee20991d8d396c99cfb53246d92d 100644 (file)
@@ -15,7 +15,6 @@ import org.opendaylight.controller.model.api.type.PatternConstraint;
 import org.opendaylight.controller.model.api.type.RangeConstraint;\r
 import org.opendaylight.controller.model.api.type.UnknownTypeDefinition;\r
 import org.opendaylight.controller.yang.common.QName;\r
-import org.opendaylight.controller.yang.model.api.ExtensionDefinition;\r
 import org.opendaylight.controller.yang.model.api.SchemaPath;\r
 import org.opendaylight.controller.yang.model.api.Status;\r
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;\r
@@ -32,6 +31,7 @@ public class UnknownType implements UnknownTypeDefinition {
     private final List<RangeConstraint> rangeStatements;\r
     private final List<UnknownSchemaNode> extensions;\r
     private final LengthConstraint lengthConstraint;\r
+    private final Integer fractionDigits;\r
 \r
     private final Status status;\r
     private final String units;\r
@@ -50,6 +50,7 @@ public class UnknownType implements UnknownTypeDefinition {
         private List<RangeConstraint> rangeStatements = Collections.emptyList();\r
         private List<UnknownSchemaNode> extensions = Collections.emptyList();\r
         private LengthConstraint lengthConstraint = null;\r
+        private Integer fractionDigits = null;\r
 \r
         private Status status = Status.CURRENT;\r
         private String units = "";\r
@@ -105,6 +106,11 @@ public class UnknownType implements UnknownTypeDefinition {
             return this;\r
         }\r
 \r
+        public Builder fractionDigits(final Integer fractionDigits) {\r
+            this.fractionDigits = fractionDigits;\r
+            return this;\r
+        }\r
+\r
         public Builder status(Status status) {\r
             this.status = status;\r
             return this;\r
@@ -138,11 +144,12 @@ public class UnknownType implements UnknownTypeDefinition {
         this.status = builder.status;\r
         this.units = builder.units;\r
         this.defaultValue = builder.defaultValue;\r
+        this.fractionDigits = builder.fractionDigits;\r
     }\r
 \r
     /*\r
      * (non-Javadoc)\r
-     * \r
+     *\r
      * @see\r
      * org.opendaylight.controller.yang.model.api.TypeDefinition#getBaseType()\r
      */\r
@@ -153,7 +160,7 @@ public class UnknownType implements UnknownTypeDefinition {
 \r
     /*\r
      * (non-Javadoc)\r
-     * \r
+     *\r
      * @see org.opendaylight.controller.yang.model.api.TypeDefinition#getUnits()\r
      */\r
     @Override\r
@@ -163,7 +170,7 @@ public class UnknownType implements UnknownTypeDefinition {
 \r
     /*\r
      * (non-Javadoc)\r
-     * \r
+     *\r
      * @see\r
      * org.opendaylight.controller.yang.model.api.TypeDefinition#getDefaultValue\r
      * ()\r
@@ -175,7 +182,7 @@ public class UnknownType implements UnknownTypeDefinition {
 \r
     /*\r
      * (non-Javadoc)\r
-     * \r
+     *\r
      * @see org.opendaylight.controller.yang.model.api.SchemaNode#getQName()\r
      */\r
     @Override\r
@@ -185,7 +192,7 @@ public class UnknownType implements UnknownTypeDefinition {
 \r
     /*\r
      * (non-Javadoc)\r
-     * \r
+     *\r
      * @see org.opendaylight.controller.yang.model.api.SchemaNode#getPath()\r
      */\r
     @Override\r
@@ -195,7 +202,7 @@ public class UnknownType implements UnknownTypeDefinition {
 \r
     /*\r
      * (non-Javadoc)\r
-     * \r
+     *\r
      * @see\r
      * org.opendaylight.controller.yang.model.api.SchemaNode#getDescription()\r
      */\r
@@ -206,7 +213,7 @@ public class UnknownType implements UnknownTypeDefinition {
 \r
     /*\r
      * (non-Javadoc)\r
-     * \r
+     *\r
      * @see org.opendaylight.controller.yang.model.api.SchemaNode#getReference()\r
      */\r
     @Override\r
@@ -216,7 +223,7 @@ public class UnknownType implements UnknownTypeDefinition {
 \r
     /*\r
      * (non-Javadoc)\r
-     * \r
+     *\r
      * @see org.opendaylight.controller.yang.model.api.SchemaNode#getStatus()\r
      */\r
     @Override\r
@@ -226,7 +233,7 @@ public class UnknownType implements UnknownTypeDefinition {
 \r
     /*\r
      * (non-Javadoc)\r
-     * \r
+     *\r
      * @see\r
      * org.opendaylight.controller.yang.model.api.SchemaNode#getExtensionSchemaNodes\r
      * ()\r
@@ -238,7 +245,7 @@ public class UnknownType implements UnknownTypeDefinition {
 \r
     /*\r
      * (non-Javadoc)\r
-     * \r
+     *\r
      * @see\r
      * org.opendaylight.controller.yang.model.api.type.UnknownTypeDefinition\r
      * #getRangeStatements()\r
@@ -250,7 +257,7 @@ public class UnknownType implements UnknownTypeDefinition {
 \r
     /*\r
      * (non-Javadoc)\r
-     * \r
+     *\r
      * @see\r
      * org.opendaylight.controller.yang.model.api.type.UnknownTypeDefinition\r
      * #getLengthStatements()\r
@@ -262,7 +269,7 @@ public class UnknownType implements UnknownTypeDefinition {
 \r
     /*\r
      * (non-Javadoc)\r
-     * \r
+     *\r
      * @see\r
      * org.opendaylight.controller.yang.model.api.type.UnknownTypeDefinition\r
      * #getPatterns()\r
@@ -274,7 +281,7 @@ public class UnknownType implements UnknownTypeDefinition {
 \r
     /*\r
      * (non-Javadoc)\r
-     * \r
+     *\r
      * @see\r
      * org.opendaylight.controller.yang.model.api.type.UnknownTypeDefinition\r
      * #getLengthConstraint()\r
@@ -284,6 +291,11 @@ public class UnknownType implements UnknownTypeDefinition {
         return lengthConstraint;\r
     }\r
 \r
+    @Override\r
+    public Integer getFractionDigits() {\r
+        return fractionDigits;\r
+    }\r
+\r
     @Override\r
     public int hashCode() {\r
         final int prime = 31;\r
@@ -438,4 +450,5 @@ public class UnknownType implements UnknownTypeDefinition {
         builder2.append("]");\r
         return builder2.toString();\r
     }\r
+\r
 }\r
index a09d27e340bbab323b4679ad0d212a9963cb83eb..1b96adf7cca0261b421b89142d9e20210744c63b 100644 (file)
@@ -20,6 +20,7 @@ import org.opendaylight.controller.model.api.type.DecimalTypeDefinition;
 import org.opendaylight.controller.model.api.type.IntegerTypeDefinition;\r
 import org.opendaylight.controller.model.api.type.RangeConstraint;\r
 import org.opendaylight.controller.model.api.type.StringTypeDefinition;\r
+import org.opendaylight.controller.model.api.type.UnsignedIntegerTypeDefinition;\r
 import org.opendaylight.controller.yang.common.QName;\r
 import org.opendaylight.controller.yang.model.api.TypeDefinition;\r
 \r
@@ -36,10 +37,10 @@ public class YangTypesConverter {
     private static final TypeDefinition<IntegerTypeDefinition> INT32_TYPE = new Int32();\r
     private static final TypeDefinition<IntegerTypeDefinition> INT64_TYPE = new Int64();\r
     private static final TypeDefinition<StringTypeDefinition> STRING_TYPE = new StringType();\r
-    private static final TypeDefinition<IntegerTypeDefinition> UINT8_TYPE = new Uint8();\r
-    private static final TypeDefinition<IntegerTypeDefinition> UINT16_TYPE = new Int16();\r
-    private static final TypeDefinition<IntegerTypeDefinition> UINT32_TYPE = new Int32();\r
-    private static final TypeDefinition<IntegerTypeDefinition> UINT64_TYPE = new Int64();\r
+    private static final TypeDefinition<UnsignedIntegerTypeDefinition> UINT8_TYPE = new Uint8();\r
+    private static final TypeDefinition<UnsignedIntegerTypeDefinition> UINT16_TYPE = new Uint16();\r
+    private static final TypeDefinition<UnsignedIntegerTypeDefinition> UINT32_TYPE = new Uint32();\r
+    private static final TypeDefinition<UnsignedIntegerTypeDefinition> UINT64_TYPE = new Uint64();\r
 \r
     static {\r
         baseYangTypeMap.put("binary", BINARY);\r
@@ -90,24 +91,30 @@ public class YangTypesConverter {
         return type;\r
     }\r
 \r
-    public static TypeDefinition<IntegerTypeDefinition> javaTypeForBaseYangIntegerType(\r
+    public static TypeDefinition<IntegerTypeDefinition> javaTypeForBaseYangSignedIntegerType(\r
             String typeName, List<RangeConstraint> ranges) {\r
         if (typeName.equals("int8")) {\r
-            return new Int8(ranges, null);\r
+            return new Int8(ranges, null, null);\r
         } else if (typeName.equals("int16")) {\r
-            return new Int16(ranges, null);\r
+            return new Int16(ranges, null, null);\r
         } else if (typeName.equals("int32")) {\r
-            return new Int32(ranges, null);\r
+            return new Int32(ranges, null, null);\r
         } else if (typeName.equals("int64")) {\r
-            return new Int64(ranges, null);\r
-        } else if (typeName.equals("uint8")) {\r
-            return new Uint8(ranges, null);\r
+            return new Int64(ranges, null, null);\r
+        }\r
+        return null;\r
+    }\r
+\r
+    public static TypeDefinition<UnsignedIntegerTypeDefinition> javaTypeForBaseYangUnsignedIntegerType(\r
+            final String typeName, List<RangeConstraint> ranges) {\r
+        if (typeName.equals("uint8")) {\r
+            return new Uint8(ranges, null, null);\r
         } else if (typeName.equals("uint16")) {\r
-            return new Uint16(ranges, null);\r
+            return new Uint16(ranges, null, null);\r
         } else if (typeName.equals("uint32")) {\r
-            return new Uint32(ranges, null);\r
+            return new Uint32(ranges, null, null);\r
         } else if (typeName.equals("uint64")) {\r
-            return new Uint64(ranges, null);\r
+            return new Uint64(ranges, null, null);\r
         }\r
         return null;\r
     }\r