From: Martin Vitez Date: Fri, 17 May 2013 15:48:08 +0000 (+0200) Subject: Fixed tests. Added javadocs to yang-model-api. X-Git-Tag: releasepom-0.1.0~442^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=6f9523a8243defc7e0c9534274e2c41a4b89dc9e Fixed tests. Added javadocs to yang-model-api. Minor formatting changes performed in yang-model-parser-impl. Signed-off-by: Martin Vitez --- diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/Builder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/Builder.java index 51039b12ac..49be55737c 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/Builder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/Builder.java @@ -12,7 +12,8 @@ package org.opendaylight.controller.yang.parser.builder.api; */ public interface Builder { - Object build(); - int getLine(); + Object build(); + + int getLine(); } diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/TypeDefinitionBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/TypeDefinitionBuilder.java index 4288a7632a..db3ac36d69 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/TypeDefinitionBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/TypeDefinitionBuilder.java @@ -9,8 +9,6 @@ package org.opendaylight.controller.yang.parser.builder.api; import java.util.List; -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.TypeDefinition; import org.opendaylight.controller.yang.model.api.type.LengthConstraint; @@ -26,10 +24,6 @@ public interface TypeDefinitionBuilder extends TypeAwareBuilder, TypeDefinition build(); - QName getQName(); - - SchemaPath getPath(); - String getDescription(); String getReference(); diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/AnyXmlBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/AnyXmlBuilder.java index bd6e0afcdf..4b95ab9dcb 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/AnyXmlBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/AnyXmlBuilder.java @@ -135,7 +135,7 @@ public class AnyXmlBuilder implements DataSchemaNodeBuilder { instance.setConfiguration(configuration); } - private static class AnyXmlSchemaNodeImpl implements AnyXmlSchemaNode { + private class AnyXmlSchemaNodeImpl implements AnyXmlSchemaNode { private final QName qname; private SchemaPath path; private String description; diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/AugmentationSchemaBuilderImpl.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/AugmentationSchemaBuilderImpl.java index 0473726168..29c38dfa0e 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/AugmentationSchemaBuilderImpl.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/AugmentationSchemaBuilderImpl.java @@ -188,11 +188,6 @@ public class AugmentationSchemaBuilderImpl implements AugmentationSchemaBuilder int result = 1; result = prime * result + ((augmentTargetStr == null) ? 0 : augmentTargetStr.hashCode()); - result = prime * result - + ((childNodes == null) ? 0 : childNodes.hashCode()); - result = prime * result - + ((groupings == null) ? 0 : groupings.hashCode()); - result = prime * result + ((usesNodes == null) ? 0 : usesNodes.hashCode()); result = prime * result + ((whenCondition == null) ? 0 : whenCondition.hashCode()); return result; @@ -217,27 +212,6 @@ public class AugmentationSchemaBuilderImpl implements AugmentationSchemaBuilder } else if (!augmentTargetStr.equals(other.augmentTargetStr)) { 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 (usesNodes == null) { - if (other.usesNodes != null) { - return false; - } - } else if (!usesNodes.equals(other.usesNodes)) { - return false; - } if (whenCondition == null) { if (other.whenCondition != null) { return false; @@ -374,11 +348,6 @@ public class AugmentationSchemaBuilderImpl implements AugmentationSchemaBuilder int result = 1; result = prime * result + ((targetPath == null) ? 0 : targetPath.hashCode()); - result = prime * result - + ((childNodes == null) ? 0 : childNodes.hashCode()); - result = prime * result - + ((groupings == null) ? 0 : groupings.hashCode()); - result = prime * result + ((uses == null) ? 0 : uses.hashCode()); result = prime * result + ((whenCondition == null) ? 0 : whenCondition.hashCode()); return result; @@ -403,27 +372,6 @@ public class AugmentationSchemaBuilderImpl implements AugmentationSchemaBuilder } else if (!targetPath.equals(other.targetPath)) { 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 (uses == null) { - if (other.uses != null) { - return false; - } - } else if (!uses.equals(other.uses)) { - return false; - } if (whenCondition == null) { if (other.whenCondition != null) { return false; diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ConstraintsBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ConstraintsBuilder.java index a1936dea55..a6c37e3421 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ConstraintsBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ConstraintsBuilder.java @@ -12,7 +12,6 @@ import java.util.HashSet; import java.util.Set; import org.opendaylight.controller.yang.model.api.ConstraintDefinition; -import org.opendaylight.controller.yang.model.api.DataSchemaNode; import org.opendaylight.controller.yang.model.api.MustDefinition; import org.opendaylight.controller.yang.model.api.RevisionAwareXPath; import org.opendaylight.controller.yang.model.util.RevisionAwareXPathImpl; @@ -96,18 +95,12 @@ public class ConstraintsBuilder implements Builder { private static class ConstraintDefinitionImpl implements ConstraintDefinition { - private DataSchemaNode parent; private RevisionAwareXPath whenCondition; private Set mustConstraints; private boolean mandatory; private Integer minElements; private Integer maxElements; - @Override - public DataSchemaNode getParent() { - return parent; - } - @Override public RevisionAwareXPath getWhenCondition() { return whenCondition; @@ -163,8 +156,6 @@ public class ConstraintsBuilder implements Builder { public int hashCode() { final int prime = 31; int result = 1; - result = prime * result - + ((parent == null) ? 0 : parent.hashCode()); result = prime * result + ((whenCondition == null) ? 0 : whenCondition.hashCode()); result = prime @@ -191,13 +182,6 @@ public class ConstraintsBuilder implements Builder { return false; } ConstraintDefinitionImpl other = (ConstraintDefinitionImpl) obj; - if (parent == null) { - if (other.parent != null) { - return false; - } - } else if (!parent.equals(other.parent)) { - return false; - } if (whenCondition == null) { if (other.whenCondition != null) { return false; @@ -237,8 +221,7 @@ public class ConstraintsBuilder implements Builder { StringBuilder sb = new StringBuilder( ConstraintDefinitionImpl.class.getSimpleName()); sb.append("["); - sb.append("parent=" + parent); - sb.append(", whenCondition=" + whenCondition); + sb.append("whenCondition=" + whenCondition); sb.append(", mustConstraints=" + mustConstraints); sb.append(", mandatory=" + mandatory); sb.append(", minElements=" + minElements); diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/DeviationBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/DeviationBuilder.java index cfe6effb6c..e99f8280e0 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/DeviationBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/DeviationBuilder.java @@ -12,6 +12,7 @@ import org.opendaylight.controller.yang.model.api.Deviation.Deviate; import org.opendaylight.controller.yang.model.api.SchemaPath; import org.opendaylight.controller.yang.parser.builder.api.Builder; import org.opendaylight.controller.yang.parser.util.YangModelBuilderUtil; +import org.opendaylight.controller.yang.parser.util.YangParseException; public class DeviationBuilder implements Builder { private final DeviationImpl instance; @@ -44,7 +45,7 @@ public class DeviationBuilder implements Builder { } else if ("delete".equals(deviate)) { instance.setDeviate(Deviate.DELETE); } else { - throw new IllegalArgumentException( + throw new YangParseException(line, "Unsupported type of 'deviate' statement: " + deviate); } } @@ -53,7 +54,7 @@ public class DeviationBuilder implements Builder { instance.setReference(reference); } - private static class DeviationImpl implements Deviation { + private class DeviationImpl implements Deviation { private final SchemaPath targetPath; private Deviate deviate; private String reference; diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ExtensionBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ExtensionBuilder.java index 3e8fd8d0a4..2852a32aec 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ExtensionBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ExtensionBuilder.java @@ -98,7 +98,7 @@ public class ExtensionBuilder implements SchemaNodeBuilder { addedUnknownNodes.add(unknownNode); } - private static class ExtensionDefinitionImpl implements ExtensionDefinition { + private class ExtensionDefinitionImpl implements ExtensionDefinition { private final QName qname; private String argument; private SchemaPath schemaPath; @@ -193,11 +193,6 @@ public class ExtensionBuilder implements SchemaNodeBuilder { result = prime * result + ((qname == null) ? 0 : qname.hashCode()); result = prime * result + ((schemaPath == null) ? 0 : schemaPath.hashCode()); - result = prime - * result - + ((unknownNodes == null) ? 0 - : unknownNodes.hashCode()); - result = prime * result + (yin ? 1231 : 1237); return result; } @@ -227,16 +222,6 @@ public class ExtensionBuilder implements SchemaNodeBuilder { } else if (!schemaPath.equals(other.schemaPath)) { return false; } - if (unknownNodes == null) { - if (other.unknownNodes != null) { - return false; - } - } else if (!unknownNodes.equals(other.unknownNodes)) { - return false; - } - if (yin != other.yin) { - return false; - } return true; } diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/FeatureBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/FeatureBuilder.java index cdea33bb7f..0f2c7f1d09 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/FeatureBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/FeatureBuilder.java @@ -85,7 +85,7 @@ public class FeatureBuilder implements SchemaNodeBuilder { addedUnknownNodes.add(unknownNode); } - private static class FeatureDefinitionImpl implements FeatureDefinition { + private class FeatureDefinitionImpl implements FeatureDefinition { private final QName qname; private SchemaPath path; private String description; diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/IdentitySchemaNodeBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/IdentitySchemaNodeBuilder.java index b53d5b2dc2..68fffd26b9 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/IdentitySchemaNodeBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/IdentitySchemaNodeBuilder.java @@ -186,6 +186,7 @@ public final class IdentitySchemaNodeBuilder implements SchemaNodeBuilder { 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; } @@ -208,6 +209,13 @@ public final class IdentitySchemaNodeBuilder implements SchemaNodeBuilder { } 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; } diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/IdentityrefTypeBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/IdentityrefTypeBuilder.java index b7043ce744..408f6612ea 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/IdentityrefTypeBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/IdentityrefTypeBuilder.java @@ -19,8 +19,8 @@ import org.opendaylight.controller.yang.model.api.type.PatternConstraint; import org.opendaylight.controller.yang.model.api.type.RangeConstraint; import org.opendaylight.controller.yang.model.util.IdentityrefType; import org.opendaylight.controller.yang.parser.builder.api.AbstractTypeAwareBuilder; -import org.opendaylight.controller.yang.parser.builder.api.Builder; import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder; +import org.opendaylight.controller.yang.parser.util.YangParseException; /** * Builder for YANG union type. User can add type to this union as @@ -29,19 +29,26 @@ import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder * types. */ public class IdentityrefTypeBuilder extends AbstractTypeAwareBuilder implements - TypeDefinitionBuilder, Builder { + TypeDefinitionBuilder { + private static final String NAME = "identityref"; + private final int line; private final String baseString; private final SchemaPath schemaPath; private QName baseQName; - - public IdentityrefTypeBuilder(final String baseString, final SchemaPath schemaPath, final int line) { + IdentityrefTypeBuilder(final String baseString, + final SchemaPath schemaPath, final int line) { this.line = line; this.baseString = baseString; this.schemaPath = schemaPath; } + @Override + public IdentityrefType build() { + return new IdentityrefType(baseQName, schemaPath); + } + public String getBaseString() { return baseString; } @@ -67,49 +74,38 @@ public class IdentityrefTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setType(final TypeDefinition type) { - throw new IllegalStateException("Can not set type to " - + IdentityrefTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set type to " + NAME); } @Override public void setType(final TypeDefinitionBuilder tdb) { - throw new IllegalStateException("Can not set type to " - + IdentityrefTypeBuilder.class.getSimpleName()); - } - - @Override - public IdentityrefType build() { - return new IdentityrefType(baseQName, schemaPath); + throw new YangParseException(line, "Can not set type to " + NAME); } @Override public void setPath(final SchemaPath schemaPath) { - throw new IllegalStateException("Can not set path to " - + IdentityrefTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set path to " + NAME); } @Override public void setDescription(final String description) { - throw new IllegalStateException("Can not set description to " - + IdentityrefTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set description to " + NAME); } @Override public void setReference(final String reference) { - throw new IllegalStateException("Can not set reference to " - + IdentityrefTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set reference to " + NAME); } @Override public void setStatus(final Status status) { - throw new IllegalStateException("Can not set status to " - + IdentityrefTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set status to " + NAME); } @Override public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) { - throw new IllegalStateException("Can not add unknown node to " - + IdentityrefTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not add unknown node to " + + NAME); } @Override @@ -144,8 +140,7 @@ public class IdentityrefTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setRanges(List ranges) { - throw new IllegalStateException("Can not set ranges to " - + IdentityrefTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set ranges to " + NAME); } @Override @@ -155,8 +150,7 @@ public class IdentityrefTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setLengths(List lengths) { - throw new IllegalStateException("Can not set lengths to " - + IdentityrefTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set lengths to " + NAME); } @Override @@ -166,8 +160,7 @@ public class IdentityrefTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setPatterns(List patterns) { - throw new IllegalStateException("Can not set patterns to " - + IdentityrefTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set patterns to " + NAME); } @Override @@ -177,8 +170,8 @@ public class IdentityrefTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setFractionDigits(Integer fractionDigits) { - throw new IllegalStateException("Can not set fraction digits to " - + IdentityrefTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set fraction digits to " + + NAME); } @Override @@ -193,8 +186,8 @@ public class IdentityrefTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setDefaultValue(Object defaultValue) { - throw new IllegalStateException("Can not set default value to " - + IdentityrefTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set default value to " + + NAME); } @Override @@ -204,8 +197,7 @@ public class IdentityrefTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setUnits(String units) { - throw new IllegalStateException("Can not set units to " - + IdentityrefTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set units to " + NAME); } @Override diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ListSchemaNodeBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ListSchemaNodeBuilder.java index 5270e48c28..b97399b00b 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ListSchemaNodeBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ListSchemaNodeBuilder.java @@ -31,13 +31,12 @@ import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBui import org.opendaylight.controller.yang.parser.builder.api.AugmentationTargetBuilder; import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder; import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder; -import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder; import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionAwareBuilder; import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder; import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder; public class ListSchemaNodeBuilder extends AbstractChildNodeBuilder implements - DataSchemaNodeBuilder, SchemaNodeBuilder, AugmentationTargetBuilder, + DataSchemaNodeBuilder, AugmentationTargetBuilder, TypeDefinitionAwareBuilder { private final ListSchemaNodeImpl instance; private final int line; @@ -57,7 +56,7 @@ public class ListSchemaNodeBuilder extends AbstractChildNodeBuilder implements // AugmentationTarget args private final Set addedAugmentations = new HashSet(); // ListSchemaNode args - private List keyDefinition; + private List keyDefinition = Collections.emptyList(); private boolean userOrdered; public ListSchemaNodeBuilder(final QName qname, final int line) { @@ -201,7 +200,9 @@ public class ListSchemaNodeBuilder extends AbstractChildNodeBuilder implements } public void setKeyDefinition(final List keyDefinition) { - this.keyDefinition = keyDefinition; + if (keyDefinition != null) { + this.keyDefinition = keyDefinition; + } } public boolean isAugmenting() { diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ModuleBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ModuleBuilder.java index 1f281898a3..f88e8d1495 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ModuleBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ModuleBuilder.java @@ -993,26 +993,12 @@ public class ModuleBuilder implements Builder { public String toString() { StringBuilder sb = new StringBuilder( ModuleImpl.class.getSimpleName()); - sb.append("[\n"); - sb.append("name=" + name + ",\n"); - sb.append("namespace=" + namespace + ",\n"); - sb.append("revision=" + revision + ",\n"); - sb.append("prefix=" + prefix + ",\n"); - sb.append("yangVersion=" + yangVersion + ",\n"); - sb.append("description=" + description + ",\n"); - sb.append("reference=" + reference + ",\n"); - sb.append("organization=" + organization + ",\n"); - sb.append("contact=" + contact + ",\n"); - sb.append("childNodes=" + childNodes.values() + ",\n"); - sb.append("groupings=" + groupings + ",\n"); - sb.append("imports=" + imports + ",\n"); - sb.append("features=" + features + ",\n"); - sb.append("typeDefinitions=" + typeDefinitions + ",\n"); - sb.append("notifications=" + notifications + ",\n"); - sb.append("augmentations=" + augmentations + ",\n"); - sb.append("rpcs=" + rpcs + ",\n"); - sb.append("deviations=" + deviations + "\n"); - sb.append("uses=" + uses + "\n"); + sb.append("["); + sb.append("name=" + name); + sb.append(", namespace=" + namespace); + sb.append(", revision=" + revision); + sb.append(", prefix=" + prefix); + sb.append(", yangVersion=" + yangVersion); sb.append("]"); return sb.toString(); } diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/RpcDefinitionBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/RpcDefinitionBuilder.java index 39dde73680..ac25f9bbff 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/RpcDefinitionBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/RpcDefinitionBuilder.java @@ -154,8 +154,7 @@ public class RpcDefinitionBuilder implements SchemaNodeBuilder, return true; } - private static class RpcDefinitionImpl implements RpcDefinition { - + private class RpcDefinitionImpl implements RpcDefinition { private final QName qname; private SchemaPath path; private String description; @@ -264,6 +263,7 @@ public class RpcDefinitionBuilder implements SchemaNodeBuilder, 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; } @@ -286,6 +286,13 @@ public class RpcDefinitionBuilder implements SchemaNodeBuilder, } 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; } diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UnionTypeBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UnionTypeBuilder.java index a184e23e1b..811b775668 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UnionTypeBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UnionTypeBuilder.java @@ -22,8 +22,8 @@ import org.opendaylight.controller.yang.model.api.type.PatternConstraint; import org.opendaylight.controller.yang.model.api.type.RangeConstraint; import org.opendaylight.controller.yang.model.util.UnionType; import org.opendaylight.controller.yang.parser.builder.api.AbstractTypeAwareBuilder; -import org.opendaylight.controller.yang.parser.builder.api.Builder; import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder; +import org.opendaylight.controller.yang.parser.util.YangParseException; /** * Builder for YANG union type. User can add type to this union as @@ -32,9 +32,8 @@ import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder * types. */ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements - TypeDefinitionBuilder, Builder { - private final static String CLASS_NAME = UnionTypeBuilder.class - .getSimpleName(); + TypeDefinitionBuilder { + private final static String NAME = "union"; private final int line; private final List> types; @@ -106,30 +105,28 @@ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setPath(final SchemaPath schemaPath) { - throw new IllegalStateException("Can not set path to " + CLASS_NAME); + throw new YangParseException(line, "Can not set path to " + NAME); } @Override public void setDescription(final String description) { - throw new IllegalStateException("Can not set description to " - + CLASS_NAME); + throw new YangParseException(line, "Can not set description to " + NAME); } @Override public void setReference(final String reference) { - throw new IllegalStateException("Can not set reference to " - + CLASS_NAME); + throw new YangParseException(line, "Can not set reference to " + NAME); } @Override public void setStatus(final Status status) { - throw new IllegalStateException("Can not set status to " + CLASS_NAME); + throw new YangParseException(line, "Can not set status to " + NAME); } @Override public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) { - throw new IllegalStateException("Can not add unknown node to " - + CLASS_NAME); + throw new YangParseException(line, "Can not add unknown node to " + + NAME); } @Override @@ -164,8 +161,7 @@ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setRanges(List ranges) { - throw new IllegalStateException("Can not set ranges to " - + UnionTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set ranges to " + NAME); } @Override @@ -175,8 +171,7 @@ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setLengths(List lengths) { - throw new IllegalStateException("Can not set lengths to " - + UnionTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set lengths to " + NAME); } @Override @@ -186,8 +181,7 @@ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setPatterns(List patterns) { - throw new IllegalStateException("Can not set patterns to " - + UnionTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set patterns to " + NAME); } @Override @@ -197,8 +191,8 @@ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setFractionDigits(Integer fractionDigits) { - throw new IllegalStateException("Can not set fraction digits to " - + UnionTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set fraction digits to " + + NAME); } @Override @@ -213,8 +207,8 @@ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setDefaultValue(Object defaultValue) { - throw new IllegalStateException("Can not set default value to " - + UnionTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set default value to " + + NAME); } @Override @@ -224,8 +218,7 @@ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setUnits(String units) { - throw new IllegalStateException("Can not set units to " - + UnionTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set units to " + NAME); } public List getActualPath() { diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UsesNodeBuilderImpl.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UsesNodeBuilderImpl.java index 3e7beda756..c54a0dc036 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UsesNodeBuilderImpl.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UsesNodeBuilderImpl.java @@ -21,12 +21,11 @@ import org.opendaylight.controller.yang.model.api.SchemaNode; import org.opendaylight.controller.yang.model.api.SchemaPath; import org.opendaylight.controller.yang.model.api.UsesNode; import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder; -import org.opendaylight.controller.yang.parser.builder.api.Builder; import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder; import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder; import org.opendaylight.controller.yang.parser.util.RefineHolder; -final class UsesNodeBuilderImpl implements UsesNodeBuilder, Builder { +final class UsesNodeBuilderImpl implements UsesNodeBuilder { private final UsesNodeImpl instance; private final int line; private final SchemaPath groupingPath; diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/impl/YangValidationException.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/impl/YangValidationException.java deleted file mode 100644 index 854b072419..0000000000 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/impl/YangValidationException.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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.parser.impl; - -/** - * Unchecked exception thrown if yang definition is not valid according to - * {@link YangModelValidationListener} - */ -public class YangValidationException extends RuntimeException { - - private static final long serialVersionUID = 7414330400390825381L; - - public YangValidationException(String message, Throwable cause) { - super(message, cause); - } - - public YangValidationException(String message) { - super(message); - } - -} \ No newline at end of file diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/YangModelBuilderUtil.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/YangModelBuilderUtil.java index 72e364cca5..0df5d2cbdf 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/YangModelBuilderUtil.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/YangModelBuilderUtil.java @@ -678,6 +678,13 @@ public final class YangModelBuilderUtil { return result; } + /** + * Parse type body and return pattern constraints. + * + * @param ctx + * type body + * @return list of pattern constraints + */ private static List getPatternConstraint( final Type_body_stmtsContext ctx) { List patterns = new ArrayList(); @@ -748,7 +755,7 @@ public final class YangModelBuilderUtil { } /** - * Get fraction digits value from context. + * Get fraction digits value from type body. * * @param ctx * type body context to parse @@ -766,6 +773,13 @@ public final class YangModelBuilderUtil { return result; } + /** + * Parse decimal64 fraction-digits value. + * + * @param ctx + * decimal64 context + * @return fraction-digits value as Integer + */ private static Integer parseFractionDigits( Decimal64_specificationContext ctx) { Integer result = null; @@ -946,7 +960,6 @@ public final class YangModelBuilderUtil { public static TypeDefinition parseUnknownTypeBody(QName typedefQName, Type_body_stmtsContext ctx) { UnknownType.Builder unknownType = new UnknownType.Builder(typedefQName); - if (ctx != null) { List rangeStatements = getRangeConstraints(ctx); List lengthStatements = getLengthConstraints(ctx); @@ -958,7 +971,6 @@ public final class YangModelBuilderUtil { unknownType.patterns(patternStatements); unknownType.fractionDigits(fractionDigits); } - return unknownType.build(); } @@ -996,30 +1008,30 @@ public final class YangModelBuilderUtil { type = new Decimal64(actualPath, namespace, revision, fractionDigits); } else if (typeName.startsWith("int")) { - if (typeName.equals("int8")) { + if ("int8".equals(typeName)) { type = new Int8(actualPath, namespace, revision, rangeStatements, null, null); - } else if (typeName.equals("int16")) { + } else if ("int16".equals(typeName)) { type = new Int16(actualPath, namespace, revision, rangeStatements, null, null); - } else if (typeName.equals("int32")) { + } else if ("int32".equals(typeName)) { type = new Int32(actualPath, namespace, revision, rangeStatements, null, null); - } else if (typeName.equals("int64")) { + } else if ("int64".equals(typeName)) { type = new Int64(actualPath, namespace, revision, rangeStatements, null, null); } } else if (typeName.startsWith("uint")) { - if (typeName.equals("uint8")) { + if ("uint8".equals(typeName)) { type = new Uint8(actualPath, namespace, revision, rangeStatements, null, null); - } else if (typeName.equals("uint16")) { + } else if ("uint16".equals(typeName)) { type = new Uint16(actualPath, namespace, revision, rangeStatements, null, null); - } else if (typeName.equals("uint32")) { + } else if ("uint32".equals(typeName)) { type = new Uint32(actualPath, namespace, revision, rangeStatements, null, null); - } else if (typeName.equals("uint64")) { + } else if ("uint64".equals(typeName)) { type = new Uint64(actualPath, namespace, revision, rangeStatements, null, null); } @@ -1050,6 +1062,13 @@ public final class YangModelBuilderUtil { return type; } + /** + * Parse given context and find identityref base value. + * + * @param ctx + * type body + * @return identityref base value as String + */ public static String getIdentityrefBase(Type_body_stmtsContext ctx) { String result = null; outer: for (int i = 0; i < ctx.getChildCount(); i++) { @@ -1067,6 +1086,13 @@ public final class YangModelBuilderUtil { return result; } + /** + * Parse given context and find require-instance value. + * + * @param ctx + * type body + * @return require-instance value + */ private static boolean isRequireInstance(Type_body_stmtsContext ctx) { for (int i = 0; i < ctx.getChildCount(); i++) { ParseTree child = ctx.getChild(i); @@ -1082,6 +1108,13 @@ public final class YangModelBuilderUtil { return false; } + /** + * Parse given context and find leafref path. + * + * @param ctx + * type body + * @return leafref path as String + */ private static String parseLeafrefPath(Type_body_stmtsContext ctx) { for (int i = 0; i < ctx.getChildCount(); i++) { ParseTree child = ctx.getChild(i); @@ -1234,21 +1267,26 @@ public final class YangModelBuilderUtil { } else if ("leafref".equals(typeName)) { throw new YangParseException(moduleName, line, "The 'path' statement MUST be present if the type is 'leafref'."); - } else if("bits".equals(typeName)) { + } else if ("bits".equals(typeName)) { throw new YangParseException(moduleName, line, "The 'bit' statement MUST be present if the type is 'bits'."); - } else if("enumeration".equals(typeName)) { + } else if ("enumeration".equals(typeName)) { throw new YangParseException(moduleName, line, "The 'enum' statement MUST be present if the type is 'enumeration'."); } } - public static RefineHolder parseRefine(Refine_stmtContext child) { - final String refineTarget = stringFromNode(child); - final RefineHolder refine = new RefineHolder(refineTarget, child + /** + * Parse refine statement. + * @param refineCtx refine statement + * @return + */ + public static RefineHolder parseRefine(Refine_stmtContext refineCtx) { + final String refineTarget = stringFromNode(refineCtx); + final RefineHolder refine = new RefineHolder(refineTarget, refineCtx .getStart().getLine()); - for (int j = 0; j < child.getChildCount(); j++) { - ParseTree refinePom = child.getChild(j); + for (int j = 0; j < refineCtx.getChildCount(); j++) { + ParseTree refinePom = refineCtx.getChild(j); if (refinePom instanceof Refine_pomContext) { for (int k = 0; k < refinePom.getChildCount(); k++) { ParseTree refineStmt = refinePom.getChild(k); diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/TypesResolutionTest.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/TypesResolutionTest.java index 71d14a5734..8435ff683a 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/TypesResolutionTest.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/TypesResolutionTest.java @@ -19,6 +19,7 @@ import org.opendaylight.controller.yang.common.QName; import org.opendaylight.controller.yang.model.api.IdentitySchemaNode; import org.opendaylight.controller.yang.model.api.LeafSchemaNode; import org.opendaylight.controller.yang.model.api.Module; +import org.opendaylight.controller.yang.model.api.Status; import org.opendaylight.controller.yang.model.api.TypeDefinition; import org.opendaylight.controller.yang.model.api.type.BitsTypeDefinition.Bit; import org.opendaylight.controller.yang.model.api.type.EnumTypeDefinition.EnumPair; @@ -78,7 +79,8 @@ public class TypesResolutionTest { @Test public void testEnumeration() { - Module tested = TestUtils.findModule(testedModules, "custom-types-test"); + Module tested = TestUtils + .findModule(testedModules, "custom-types-test"); Set> typedefs = tested.getTypeDefinitions(); TypeDefinition type = TestUtils.findTypedef(typedefs, "ip-version"); @@ -108,8 +110,7 @@ public class TypesResolutionTest { EnumPair value3 = values.get(3); assertEquals("default", value3.getName()); assertEquals(20, (int) value3.getValue()); - assertEquals("default ip", - value3.getDescription()); + assertEquals("default ip", value3.getDescription()); } @Test @@ -254,20 +255,18 @@ public class TypesResolutionTest { assertEquals(502L, (long) bit4.getPosition()); } - @Test public void testIanaTimezones() { Module tested = TestUtils.findModule(testedModules, "iana-timezones"); Set> typedefs = tested.getTypeDefinitions(); TypeDefinition testedType = TestUtils.findTypedef(typedefs, "iana-timezone"); - /* - // FIXME: Refactor sources not to be timezone specific. - String expectedDesc = "A timezone location as defined by the IANA timezone\n database (http://www.iana.org/time-zones)"; - assertEquals(expectedDesc, testedType.getDescription()); + + String expectedDesc = "A timezone location as defined by the IANA timezone"; + assertTrue(testedType.getDescription().contains(expectedDesc)); assertNull(testedType.getReference()); assertEquals(Status.CURRENT, testedType.getStatus()); - */ + QName testedTypeQName = testedType.getQName(); assertEquals(URI.create("urn:ietf:params:xml:ns:yang:iana-timezones"), testedTypeQName.getNamespace()); @@ -335,9 +334,10 @@ public class TypesResolutionTest { Set> typedefs = tested.getTypeDefinitions(); TypeDefinition testedType = TestUtils.findTypedef(typedefs, "service-type-ref"); - IdentityrefType baseType = (IdentityrefType)testedType.getBaseType(); + IdentityrefType baseType = (IdentityrefType) testedType.getBaseType(); QName identity = baseType.getIdentity(); - assertEquals(URI.create("urn:simple.container.demo"), identity.getNamespace()); + assertEquals(URI.create("urn:simple.container.demo"), + identity.getNamespace()); assertEquals(TestUtils.createDate("2012-04-16"), identity.getRevision()); assertEquals("iit", identity.getPrefix()); assertEquals("service-type", identity.getLocalName()); diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/YangParserTest.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/YangParserTest.java index b2a93ea07e..f6240c9a3f 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/YangParserTest.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/YangParserTest.java @@ -212,9 +212,15 @@ public class YangParserTest { .getDataChildByName("ifEntry"); ContainerSchemaNode augmentedContainer = (ContainerSchemaNode) ifEntry .getDataChildByName("augment-holder"); - // Set augmentedContainerAugments = - // augmentedContainer - // .getAvailableAugmentations(); + + // augmentation defined in testfile1 and augmentation returned from + // augmented container have to be same + Set augmentedContainerAugments = augmentedContainer + .getAvailableAugmentations(); + AugmentationSchema augmentDefinition = augmentedContainerAugments + .iterator().next(); + assertEquals(augment1, augmentDefinition); + LeafSchemaNode augmentedLeaf = (LeafSchemaNode) augmentedContainer .getDataChildByName("ds0ChannelNumber"); assertTrue(augmentedLeaf.isAugmenting()); @@ -230,18 +236,22 @@ public class YangParserTest { Set module3Augmentations = module3 .getAugmentations(); assertEquals(2, module3Augmentations.size()); - // AugmentationSchema augment3 = module3Augmentations.iterator().next(); - // ContainerSchemaNode augmentedContainerDefinition = - // (ContainerSchemaNode) augment3 - // .getDataChildByName("augment-holder"); - // assertTrue(augmentedContainerDefinition.isAugmenting()); - // - // // check - // assertEquals(augmentedContainer, augmentedContainerDefinition); - // assertEquals(augmentedContainerAugments.iterator().next(), augment1); - // - // assertEquals(augmentedLeaf, augmentedLeafDefinition); - // assertEquals(ifEntryAugments.iterator().next(), augment3); + AugmentationSchema augment3 = null; + for (AugmentationSchema as : module3Augmentations) { + if ("if:ifType='ds0'".equals(as.getWhenCondition().toString())) { + augment3 = as; + } + } + ContainerSchemaNode augmentedContainerDefinition = (ContainerSchemaNode) augment3 + .getDataChildByName("augment-holder"); + assertTrue(augmentedContainerDefinition.isAugmenting()); + + // check + assertEquals(augmentedContainer, augmentedContainerDefinition); + assertEquals(augmentedContainerAugments.iterator().next(), augment1); + + assertEquals(augmentedLeaf, augmentedLeafDefinition); + assertEquals(ifEntryAugments.iterator().next(), augment3); } @Test @@ -256,17 +266,21 @@ public class YangParserTest { .getAvailableAugmentations(); assertEquals(2, augmentations.size()); - // AugmentationSchema augment = augmentations.iterator().next(); - - // ContainerSchemaNode augmentHolder = (ContainerSchemaNode) augment - // .getDataChildByName("augment-holder"); - // assertNotNull(augmentHolder); - // assertTrue(augmentHolder.isAugmenting()); - // QName augmentHolderQName = augmentHolder.getQName(); - // assertEquals("augment-holder", augmentHolderQName.getLocalName()); - // assertEquals("t3", augmentHolderQName.getPrefix()); - // assertEquals("Description for augment holder", - // augmentHolder.getDescription()); + AugmentationSchema augment = null; + for (AugmentationSchema as : augmentations) { + if ("if:ifType='ds0'".equals(as.getWhenCondition().toString())) { + augment = as; + } + } + ContainerSchemaNode augmentHolder = (ContainerSchemaNode) augment + .getDataChildByName("augment-holder"); + assertNotNull(augmentHolder); + assertTrue(augmentHolder.isAugmenting()); + QName augmentHolderQName = augmentHolder.getQName(); + assertEquals("augment-holder", augmentHolderQName.getLocalName()); + assertEquals("t3", augmentHolderQName.getPrefix()); + assertEquals("Description for augment holder", + augmentHolder.getDescription()); } @Test @@ -285,7 +299,7 @@ public class YangParserTest { List ranges = leafType.getRanges(); assertEquals(1, ranges.size()); RangeConstraint range = ranges.get(0); - assertEquals(11L, range.getMin()); + assertEquals(3L, range.getMin()); assertEquals(20L, range.getMax()); } diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/resources/model/testfile2.yang b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/resources/model/testfile2.yang index 1a7b45ecb1..783c89b617 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/resources/model/testfile2.yang +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/resources/model/testfile2.yang @@ -20,7 +20,7 @@ module types2 { typedef my-type1 { type my-base-int32-type { - range "11..max"; + range "3..9|11..max"; } units "mile"; default "11"; diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/AugmentationSchema.java b/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/AugmentationSchema.java index 16e8b9e846..31e0ad682d 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/AugmentationSchema.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/AugmentationSchema.java @@ -7,20 +7,42 @@ */ package org.opendaylight.controller.yang.model.api; -import java.util.Set; - +/** + * AugmentationSchema represents augment definition. The "augment" statement + * allows a module or submodule to add to the schema tree defined in an external + * module, or the current module and its submodules, and to add to the nodes + * from a grouping in a "uses" statement. + */ public interface AugmentationSchema extends DataNodeContainer { + /** + * @return when statement + */ RevisionAwareXPath getWhenCondition(); + /** + * @return textual description of this augment. + */ String getDescription(); + /** + * @return textual cross-reference to an external document that provides + * additional information relevant to this node. + */ String getReference(); + /** + * @return actual status of this node. + */ Status getStatus(); + /** + * @return SchemaPath that identifies a node in the schema tree. This node + * is called the augment's target node. The target node MUST be + * either a container, list, choice, case, input, output, or + * notification node. It is augmented with the nodes defined as + * child nodes of this AugmentationSchema. + */ SchemaPath getTargetPath(); - Set getUses(); - } diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/AugmentationTarget.java b/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/AugmentationTarget.java index 77ab5a3674..7e29c6210d 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/AugmentationTarget.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/AugmentationTarget.java @@ -9,11 +9,16 @@ package org.opendaylight.controller.yang.model.api; import java.util.Set; +/** + * Interface for all nodes which are possible targets of augmentation. The + * target node of augmentation MUST be either a container, list, choice, case, + * input, output, or notification node. + */ public interface AugmentationTarget { + /** - * Returns a set of augmentations targeting this element. - * - * @return + * @return set of augmentations targeting this element. */ Set getAvailableAugmentations(); + } diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/ChoiceCaseNode.java b/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/ChoiceCaseNode.java index 0fcbda9adc..2421e12208 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/ChoiceCaseNode.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/ChoiceCaseNode.java @@ -7,6 +7,9 @@ */ package org.opendaylight.controller.yang.model.api; +/** + * The ChoiceCaseNode interface is used to define branches of the ChoiceNode. + */ public interface ChoiceCaseNode extends DataSchemaNode, DataNodeContainer, AugmentationTarget { diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/ChoiceNode.java b/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/ChoiceNode.java index fd3c640b5e..b67da660cc 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/ChoiceNode.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/ChoiceNode.java @@ -9,7 +9,15 @@ package org.opendaylight.controller.yang.model.api; import java.util.Set; +/** + * The ChoiceNode defines a set of alternatives. It consists of a number of + * branches defined as ChoiceCaseNode objects. + */ public interface ChoiceNode extends DataSchemaNode, AugmentationTarget { + /** + * @return ChoiceCaseNode objects defined in this node + */ Set getCases(); + } diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/ConstraintDefinition.java b/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/ConstraintDefinition.java index 2143324825..a48e6afdef 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/ConstraintDefinition.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/ConstraintDefinition.java @@ -10,7 +10,6 @@ package org.opendaylight.controller.yang.model.api; import java.util.Set; public interface ConstraintDefinition { - DataSchemaNode getParent(); RevisionAwareXPath getWhenCondition(); diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/ContainerSchemaNode.java b/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/ContainerSchemaNode.java index 62df36e28d..f60fc160d8 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/ContainerSchemaNode.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/ContainerSchemaNode.java @@ -7,9 +7,19 @@ */ package org.opendaylight.controller.yang.model.api; +/** + * The ContainerSchemaNode is used to define an interior data node in the schema + * tree. There are two styles of containers, those that exist only for + * organizing the hierarchy of data nodes, and those whose presence in the + * configuration has an explicit meaning. + */ public interface ContainerSchemaNode extends DataNodeContainer, AugmentationTarget, DataSchemaNode { + /** + * @return true, if presence of this container has an explicit meaning, + * false otherwise + */ boolean isPresenceContainer(); } diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/DataNodeContainer.java b/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/DataNodeContainer.java index 8888208cc2..e8c814e208 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/DataNodeContainer.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/DataNodeContainer.java @@ -11,18 +11,45 @@ import java.util.Set; import org.opendaylight.controller.yang.common.QName; +/** + * Node which can contains other nodes. + */ public interface DataNodeContainer { + /** + * @return Set of all newly defined types within this DataNodeContainer + */ Set> getTypeDefinitions(); + /** + * Set of all child nodes defined within this DataNodeContainer + */ Set getChildNodes(); + /** + * Set of all groupings defined within this DataNodeContainer + */ Set getGroupings(); + /** + * @param name + * QName of seeked child + * @return child node of this DataNodeContainer if child with given name is + * present, null otherwise + */ DataSchemaNode getDataChildByName(QName name); + /** + * @param name + * name of seeked child as String + * @return child node of this DataNodeContainer if child with given name is + * present, null otherwise + */ DataSchemaNode getDataChildByName(String name); + /** + * @return Set of all uses nodes defined within this DataNodeContainer + */ Set getUses(); } diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/SchemaNode.java b/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/SchemaNode.java index 4d3c48654d..94ccd5dde6 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/SchemaNode.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-api/src/main/java/org/opendaylight/controller/yang/model/api/SchemaNode.java @@ -11,17 +11,34 @@ import java.util.List; import org.opendaylight.controller.yang.common.QName; +/** + * SchemaNode represents a node in schema tree. + */ public interface SchemaNode { public QName getQName(); public SchemaPath getPath(); + /** + * @return textual description of this node. + */ public String getDescription(); + /** + * @return textual cross-reference to an external document that provides + * additional information relevant to this node. + */ public String getReference(); + /** + * @return actual status of this node. + */ public Status getStatus(); + /** + * @return collection of all unknown nodes defined under this schema node. + */ public List getUnknownSchemaNodes(); + }