-/*
- * 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
-/*
- * 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
*/
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;
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);
}
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);
instance.setPresenceContainer(presence);
}
+ @Override
+ public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
+ addedUnknownNodes.add(unknownSchemaNodeBuilder);
+ }
+
private class ContainerSchemaNodeImpl implements ContainerSchemaNode {
private final QName qname;
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) {
@Override
public List<UnknownSchemaNode> getUnknownSchemaNodes() {
- return Collections.emptyList();
+ return unknownSchemaNodes;
+ }
+
+ private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownSchemaNodes) {
+ if(unknownSchemaNodes != null) {
+ this.unknownSchemaNodes = unknownSchemaNodes;
+ }
}
@Override
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;
}
} 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;
}
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
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;
*/
package org.opendaylight.controller.yang.model.parser.builder.impl;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
private final FeatureDefinitionImpl instance;
private final QName qname;
+ private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
FeatureBuilder(QName qname) {
this.qname = qname;
@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;
}
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;
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;
}
} 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;
}
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();
}
}
*/
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;
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);
}
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;
}
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;
@Override
public List<UnknownSchemaNode> getUnknownSchemaNodes() {
- return Collections.emptyList();
+ return unknownSchemaNodes;
+ }
+
+ private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownSchemaNodes) {
+ if(unknownSchemaNodes != null) {
+ this.unknownSchemaNodes = unknownSchemaNodes;
+ }
}
@Override
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;
}
} 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;
}
*/
package org.opendaylight.controller.yang.model.parser.builder.impl;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
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
instance.setUserOrdered(userOrdered);
}
+ @Override
+ public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
+ addedUnknownNodes.add(unknownSchemaNodeBuilder);
+ }
+
private class LeafListSchemaNodeImpl implements LeafListSchemaNode {
private final QName qname;
private SchemaPath path;
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;
}
} 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;
}
*/
package org.opendaylight.controller.yang.model.parser.builder.impl;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
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;
}
instance.setType(type);
}
+ @Override
+ public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
+ addedUnknownNodes.add(unknownSchemaNodeBuilder);
+ }
+
private class LeafSchemaNodeImpl implements LeafSchemaNode {
private final QName qname;
private SchemaPath path;
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;
}
} 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;
}
*/
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;
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);
}
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);
instance.setUserOrdered(userOrdered);
}
+ @Override
+ public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
+ addedUnknownNodes.add(unknownSchemaNodeBuilder);
+ }
+
private class ListSchemaNodeImpl implements ListSchemaNode {
private final QName qname;
private SchemaPath path;
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;
}
} 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;
}
*/
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;
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);
}
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;
}
instance.setStatus(status);
}
+ @Override
+ public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
+ addedUnknownNodes.add(unknownSchemaNodeBuilder);
+ }
+
private class NotificationDefinitionImpl implements NotificationDefinition {
private final QName qname;
return unknownSchemaNodes;
}
+ private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownSchemaNodes) {
+ if(unknownSchemaNodes != null) {
+ this.unknownSchemaNodes = unknownSchemaNodes;
+ }
+ }
+
@Override
public DataSchemaNode getDataChildByName(QName name) {
return childNodes.get(name);
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;
}
} 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;
}
public String toString() {
StringBuilder sb = new StringBuilder(
NotificationDefinitionImpl.class.getSimpleName());
- sb.append("[qname=" + qname + "]");
+ sb.append("[qname=" + qname + ", path="+ path +"]");
return sb.toString();
}
}
*/
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;
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;
}
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;
}
"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();
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;
}
} 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;
}
private String reference;
private Status status;
private String units;
+ private Object defaultValue;
TypedefBuilder(QName qname) {
this.qname = qname;
instance.setPath(schemaPath);
instance.setBaseType(baseType);
instance.setUnits(units);
+ instance.setDefaultValue(defaultValue);
return instance;
} else {
// type
this.units = units;
}
+ @Override
+ public void setDefaultValue(Object defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
@Override
public TypeDefinition<?> getType() {
return baseType;
return baseType;
}
+ @Override
+ public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
+ // TODO
+ }
+
private static class TypeDefinitionImpl<T extends TypeDefinition<T>>
implements TypeDefinition<T> {
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();
@Override
public Object getDefaultValue() {
- // TODO Auto-generated method stub
- return null;
+ return defaultValue;
+ }
+
+ private void setDefaultValue(Object defaultValue) {
+ this.defaultValue = defaultValue;
}
@Override
*/
package org.opendaylight.controller.yang.model.parser.builder.impl;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
private final QName qname;
private final UnknownSchemaNodeImpl instance;
+ private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
UnknownSchemaNodeBuilder(final QName qname) {
this.qname = qname;
@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;
}
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;
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;
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;
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());
}
}
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();
}
}
- 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) {
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);
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()) {
}
}
- 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() {
}
}
+ 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;
+ }
+ }
+ }
+
}
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();
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);
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);
}
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 {
private YangModelParser tested;
@Before
- public void init() throws IOException {
+ public void init() {
tested = new YangModelParserImpl();
}
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());
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());
}
}
-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
-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
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();
+ }
+}
--- /dev/null
+/**
+ *
+ */
+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();
+ }
+}
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
}\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
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
}\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
\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
*/\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
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
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
/**\r
* Default constructor. <br>\r
* Instantiates Bits type as empty bits list.\r
- * \r
*/\r
public BitsType() {\r
super();\r
}\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
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
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
}\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
}\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
/*\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
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
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
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
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
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
\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
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
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
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
/*\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
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
/*\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
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
/*\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
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
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
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
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;
return absolute;
}
- @Override
- public String toString() {
- return xpath;
- }
-
@Override
public int hashCode() {
final int prime = 31;
}
return false;
}
-
+
+ @Override
+ public String toString() {
+ return xpath;
+ }
}
*/\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
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
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
/*\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
/*\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
/*\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
\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
* @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
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
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
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
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
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
\r
/*\r
* (non-Javadoc)\r
- * \r
+ *\r
* @see org.opendaylight.controller.yang.model.api.TypeDefinition#getUnits()\r
*/\r
@Override\r
\r
/*\r
* (non-Javadoc)\r
- * \r
+ *\r
* @see\r
* org.opendaylight.controller.yang.model.api.TypeDefinition#getDefaultValue\r
* ()\r
\r
/*\r
* (non-Javadoc)\r
- * \r
+ *\r
* @see org.opendaylight.controller.yang.model.api.SchemaNode#getQName()\r
*/\r
@Override\r
\r
/*\r
* (non-Javadoc)\r
- * \r
+ *\r
* @see org.opendaylight.controller.yang.model.api.SchemaNode#getPath()\r
*/\r
@Override\r
\r
/*\r
* (non-Javadoc)\r
- * \r
+ *\r
* @see\r
* org.opendaylight.controller.yang.model.api.SchemaNode#getDescription()\r
*/\r
\r
/*\r
* (non-Javadoc)\r
- * \r
+ *\r
* @see org.opendaylight.controller.yang.model.api.SchemaNode#getReference()\r
*/\r
@Override\r
\r
/*\r
* (non-Javadoc)\r
- * \r
+ *\r
* @see org.opendaylight.controller.yang.model.api.SchemaNode#getStatus()\r
*/\r
@Override\r
\r
/*\r
* (non-Javadoc)\r
- * \r
+ *\r
* @see\r
* org.opendaylight.controller.yang.model.api.SchemaNode#getExtensionSchemaNodes\r
* ()\r
\r
/*\r
* (non-Javadoc)\r
- * \r
+ *\r
* @see\r
* org.opendaylight.controller.yang.model.api.type.UnknownTypeDefinition\r
* #getRangeStatements()\r
\r
/*\r
* (non-Javadoc)\r
- * \r
+ *\r
* @see\r
* org.opendaylight.controller.yang.model.api.type.UnknownTypeDefinition\r
* #getLengthStatements()\r
\r
/*\r
* (non-Javadoc)\r
- * \r
+ *\r
* @see\r
* org.opendaylight.controller.yang.model.api.type.UnknownTypeDefinition\r
* #getPatterns()\r
\r
/*\r
* (non-Javadoc)\r
- * \r
+ *\r
* @see\r
* org.opendaylight.controller.yang.model.api.type.UnknownTypeDefinition\r
* #getLengthConstraint()\r
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
builder2.append("]");\r
return builder2.toString();\r
}\r
+\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.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
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
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