From: Tony Tkacik Date: Wed, 4 Jun 2014 13:54:22 +0000 (+0200) Subject: BUG 1131: untangling package cyclic dependencies in yang-parser-impl X-Git-Tag: release/helium~448 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=ae36823e05e6afe15fe6b43d65ae453599c59b41;p=yangtools.git BUG 1131: untangling package cyclic dependencies in yang-parser-impl This untanglement of package cyclic dependencies introduced better code organization, when more-obvious components logical blocks are available, most of moved classes were private to parser and was never meant for public consumption. - yang.model.util - Utility and simple implementations of yang-model-api - yang.parser.builder.* - Builders for yang-model-api with semantic functionality - yang.parser.impl - Actual implementation of YANG Parser - yang.parser.impl.util - Utility functions on top of YANG Parser - yang.parser.util - Utility classes, potential candidates for movements. Change-Id: Ia5718f4712d91df7cea0f55d4cc1a502d376faea Signed-off-by: Tony Tkacik Signed-off-by: Robert Varga --- diff --git a/code-generator/binding-generator-impl/src/test/java/org/opendaylight/yangtools/sal/binding/generator/impl/RefineTest.java b/code-generator/binding-generator-impl/src/test/java/org/opendaylight/yangtools/sal/binding/generator/impl/RefineTest.java index daf7f97f0e..b6178bcd4a 100644 --- a/code-generator/binding-generator-impl/src/test/java/org/opendaylight/yangtools/sal/binding/generator/impl/RefineTest.java +++ b/code-generator/binding-generator-impl/src/test/java/org/opendaylight/yangtools/sal/binding/generator/impl/RefineTest.java @@ -33,17 +33,17 @@ import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.MustDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.parser.builder.api.ConstraintsBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.RefineBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.AnyXmlBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.ChoiceBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ConstraintsBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.LeafListSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.impl.RefineUtils; import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl; -import org.opendaylight.yangtools.yang.parser.util.RefineHolder; -import org.opendaylight.yangtools.yang.parser.util.RefineUtils; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -91,23 +91,23 @@ public class RefineTest { assertEquals("Incorrect number of test files.", 1, testModels.size()); Set usesNodeBuilders = getModuleBuilder().getUsesNodeBuilders(); - List refineHolders = null; + List RefineBuilders = null; Set dataSchemaNodeBuilders = null; for (UsesNodeBuilder usesNodeBuilder : usesNodeBuilders) { if (usesNodeBuilder.getGroupingPathAsString().equals("grp")) { - refineHolders = usesNodeBuilder.getRefines(); + RefineBuilders = usesNodeBuilder.getRefines(); dataSchemaNodeBuilders = usesNodeBuilder.getParent().getChildNodeBuilders(); break; } } - assertNotNull("List of refine holders wasn't initialized.", refineHolders); - assertEquals("Incorrect number of refine holders", 4, refineHolders.size()); + assertNotNull("List of refine holders wasn't initialized.", RefineBuilders); + assertEquals("Incorrect number of refine holders", 4, RefineBuilders.size()); - checkLflstRefineHolderAndSchemaNodeBuilder("lflst", refineHolders, dataSchemaNodeBuilders); - checkChcRefineHolderAndSchemaNodeBuilder("chc", refineHolders, dataSchemaNodeBuilders); - checkChc2RefineHolderAndSchemaNodeBuilder("chc2", refineHolders, dataSchemaNodeBuilders); - checkAnyXmlRefineHolderAndSchemaNodeBuilder("data", refineHolders, dataSchemaNodeBuilders); + checkLflstRefineBuilderAndSchemaNodeBuilder("lflst", RefineBuilders, dataSchemaNodeBuilders); + checkChcRefineBuilderAndSchemaNodeBuilder("chc", RefineBuilders, dataSchemaNodeBuilders); + checkChc2RefineBuilderAndSchemaNodeBuilder("chc2", RefineBuilders, dataSchemaNodeBuilders); + checkAnyXmlRefineBuilderAndSchemaNodeBuilder("data", RefineBuilders, dataSchemaNodeBuilders); } private ModuleBuilder getModuleBuilder() { @@ -152,9 +152,9 @@ public class RefineTest { return moduleBuilder; } - private void checkAnyXmlRefineHolderAndSchemaNodeBuilder(final String string, final List refineHolders, + private void checkAnyXmlRefineBuilderAndSchemaNodeBuilder(final String string, final List RefineBuilders, final Set dataSchemaNodeBuilders) { - RefineHolder refHolderData = getRefineHolder("data", refineHolders); + RefineBuilder refHolderData = getRefineBuilder("data", RefineBuilders); QName qname = createQname(); DataSchemaNodeBuilder builderData = new AnyXmlBuilder("module", 4, qname, createSchemaPath(qname)); @@ -173,9 +173,9 @@ public class RefineTest { } - private void checkChc2RefineHolderAndSchemaNodeBuilder(final String nodeName, final List refineHolders, + private void checkChc2RefineBuilderAndSchemaNodeBuilder(final String nodeName, final List RefineBuilders, final Set dataSchemaNodeBuilders) { - RefineHolder refHolderChc2 = getRefineHolder("chc2", refineHolders); + RefineBuilder refHolderChc2 = getRefineBuilder("chc2", RefineBuilders); QName qname = createQname(); List path = Lists.newArrayList(qname); @@ -189,9 +189,9 @@ public class RefineTest { assertFalse("'chc2' has incorrect value for 'mandatory'", conDefChc2.isMandatory()); } - private void checkChcRefineHolderAndSchemaNodeBuilder(final String nodeName, final List refineHolders, + private void checkChcRefineBuilderAndSchemaNodeBuilder(final String nodeName, final List RefineBuilders, final Set dataSchemaNodeBuilders) { - RefineHolder refHolderChc = getRefineHolder("chc", refineHolders); + RefineBuilder refHolderChc = getRefineBuilder("chc", RefineBuilders); QName qname = createQname(); List path = Lists.newArrayList(qname); @@ -212,9 +212,9 @@ public class RefineTest { findUnknownNode(choiceBuilder, unknownNodeChcValue, unknownNodeChcName); } - private void checkLflstRefineHolderAndSchemaNodeBuilder(final String nodeName, final List refineHolders, + private void checkLflstRefineBuilderAndSchemaNodeBuilder(final String nodeName, final List RefineBuilders, final Set dataSchemaNodeBuilders) { - RefineHolder refHolderLflst = getRefineHolder(nodeName, refineHolders); + RefineBuilder refHolderLflst = getRefineBuilder(nodeName, RefineBuilders); QName qname = createQname(); DataSchemaNodeBuilder builderLflst = new LeafListSchemaNodeBuilder("module", 4, qname, createSchemaPath(qname)); @@ -245,10 +245,10 @@ public class RefineTest { } - private RefineHolder getRefineHolder(final String refHolderName, final List refineHolders) { - for (RefineHolder refineHolder : refineHolders) { - if (refineHolder.getName().equals(refHolderName)) { - return refineHolder; + private RefineBuilder getRefineBuilder(final String refHolderName, final List RefineBuilders) { + for (RefineBuilder RefineBuilder : RefineBuilders) { + if (RefineBuilder.getTargetPathString().equals(refHolderName)) { + return RefineBuilder; } } return null; diff --git a/code-generator/binding-type-provider/src/main/java/org/opendaylight/yangtools/sal/binding/yang/types/TypeProviderImpl.java b/code-generator/binding-type-provider/src/main/java/org/opendaylight/yangtools/sal/binding/yang/types/TypeProviderImpl.java index 9b2c2cc90c..1dec469b95 100644 --- a/code-generator/binding-type-provider/src/main/java/org/opendaylight/yangtools/sal/binding/yang/types/TypeProviderImpl.java +++ b/code-generator/binding-type-provider/src/main/java/org/opendaylight/yangtools/sal/binding/yang/types/TypeProviderImpl.java @@ -14,9 +14,6 @@ import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findD import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findDataSchemaNodeForRelativeXPath; import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findParentModule; -import com.google.common.base.Preconditions; -import com.google.common.collect.Sets; -import com.google.common.io.BaseEncoding; import java.math.BigDecimal; import java.math.BigInteger; import java.net.URI; @@ -33,6 +30,7 @@ import java.util.Set; import java.util.TreeMap; import java.util.regex.Matcher; import java.util.regex.Pattern; + import org.apache.commons.lang3.StringEscapeUtils; import org.opendaylight.yangtools.binding.generator.util.BindingGeneratorUtil; import org.opendaylight.yangtools.binding.generator.util.TypeConstants; @@ -89,7 +87,11 @@ import org.opendaylight.yangtools.yang.model.util.Uint32; import org.opendaylight.yangtools.yang.model.util.Uint64; import org.opendaylight.yangtools.yang.model.util.Uint8; import org.opendaylight.yangtools.yang.model.util.UnionType; -import org.opendaylight.yangtools.yang.parser.util.ModuleDependencySort; + +import com.google.common.base.Preconditions; +import com.google.common.collect.Sets; +import com.google.common.io.BaseEncoding; + public final class TypeProviderImpl implements TypeProvider { private static final Pattern NUMBERS_PATTERN = Pattern.compile("[0-9]+\\z"); @@ -606,7 +608,7 @@ public final class TypeProviderImpl implements TypeProvider { for (Module modul : modules) { modulesArray[i++] = modul; } - final List modulesSortedByDependency = ModuleDependencySort.sort(modulesArray); + final List modulesSortedByDependency = org.opendaylight.yangtools.yang.parser.util.ModuleDependencySort.sort(modulesArray); for (final Module module : modulesSortedByDependency) { Map> dateTypeMap = genTypeDefsContextMap.get(module.getName()); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/BitImpl.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/BitImpl.java similarity index 80% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/BitImpl.java rename to yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/BitImpl.java index 635e57e067..92f94f27ff 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/BitImpl.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/BitImpl.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.util; +package org.opendaylight.yangtools.yang.model.util; import java.util.Collections; import java.util.List; @@ -18,7 +18,9 @@ import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition.Bit; -final class BitImpl implements BitsTypeDefinition.Bit, Immutable { +import com.google.common.base.Preconditions; + +public final class BitImpl implements BitsTypeDefinition.Bit, Immutable { private final Long position; private final QName qname; private final SchemaPath schemaPath; @@ -27,11 +29,11 @@ final class BitImpl implements BitsTypeDefinition.Bit, Immutable { private final Status status; private List unknownNodes = Collections.emptyList(); - BitImpl(final Long position, final QName qname, final SchemaPath schemaPath, final String description, + public BitImpl(final Long position, final QName qname, final SchemaPath schemaPath, final String description, final String reference, final Status status, final List unknownNodes) { - this.position = position; - this.qname = qname; - this.schemaPath = schemaPath; + this.position = Preconditions.checkNotNull(position, "Position should not be null"); + this.qname = Preconditions.checkNotNull(qname, "QName should not be null"); + this.schemaPath = Preconditions.checkNotNull(schemaPath, "Schema Path should not be null"); this.description = description; this.reference = reference; this.status = status; @@ -84,15 +86,15 @@ final class BitImpl implements BitsTypeDefinition.Bit, Immutable { public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + ((qname == null) ? 0 : qname.hashCode()); - result = prime * result + ((schemaPath == null) ? 0 : schemaPath.hashCode()); - result = prime * result + ((position == null) ? 0 : position.hashCode()); + result = prime * result + qname.hashCode(); + result = prime * result + schemaPath.hashCode(); + result = prime * result + position.hashCode(); result = prime * result + ((unknownNodes == null) ? 0 : unknownNodes.hashCode()); return result; } @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) { return true; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ModuleImportImpl.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/ModuleImportImpl.java similarity index 97% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ModuleImportImpl.java rename to yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/ModuleImportImpl.java index 63f07f80b8..b3e956825a 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ModuleImportImpl.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/ModuleImportImpl.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.util; +package org.opendaylight.yangtools.yang.model.util; import java.util.Date; diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/MustDefinitionImpl.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/MustDefinitionImpl.java similarity index 58% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/MustDefinitionImpl.java rename to yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/MustDefinitionImpl.java index d0b232c550..38ebb1b05b 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/MustDefinitionImpl.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/MustDefinitionImpl.java @@ -5,26 +5,60 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.util; +package org.opendaylight.yangtools.yang.model.util; import org.opendaylight.yangtools.yang.model.api.MustDefinition; import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; -final class MustDefinitionImpl implements MustDefinition { +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; + +/** + * + * Immutable implementation of {@link MustDefinition} + * + */ +public final class MustDefinitionImpl implements MustDefinition { private final String mustStr; private final String description; private final String reference; private final String errorAppTag; private final String errorMessage; - MustDefinitionImpl(String mustStr, String description, String reference, String errorAppTag, String errorMessage) { - this.mustStr = mustStr; + /** + * + * Creates new Must Definition + * + * @param mustStr must string statement, Must not be null. + * @param description Description of condition + * @param reference Reference for condition + * @param errorAppTag error application tag which should be used for error reporting when condition fails + * @param errorMessage message which should be used for error reporting when condition fails + * @deprecated Use {@link #create(String, Optional, Optional, Optional, Optional)} instead. + */ + @Deprecated + public MustDefinitionImpl(final String mustStr, final String description, final String reference, final String errorAppTag, final String errorMessage) { + this.mustStr = Preconditions.checkNotNull(mustStr); this.description = description; this.reference = reference; this.errorAppTag = errorAppTag; this.errorMessage = errorMessage; } + /** + * + * Creates new Must Definition + * + * @param mustStr must string statement, Must not be null. + * @param description Description of condition + * @param reference Reference for condition + * @param errorAppTag error application tag which should be used for error reporting when condition fails + * @param errorMessage message which should be used for error reporting when condition fails + */ + public static MustDefinitionImpl create(final String mustStr, final Optional description, final Optional reference, final Optional errorAppTag, final Optional errorMessage) { + return new MustDefinitionImpl(mustStr, description.orNull(), reference.orNull(), errorAppTag.orNull(), errorMessage.orNull()); + } + @Override public String getDescription() { return description; @@ -61,7 +95,7 @@ final class MustDefinitionImpl implements MustDefinition { } @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) { return true; } diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/util/BitImplTest.java b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/BitImplTest.java similarity index 78% rename from yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/util/BitImplTest.java rename to yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/BitImplTest.java index 4a0d552962..04d086c4b6 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/util/BitImplTest.java +++ b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/BitImplTest.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.util; +package org.opendaylight.yangtools.yang.model.util; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -14,15 +14,14 @@ import static org.junit.Assert.assertTrue; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.List; + import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; -import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.UnknownSchemaNodeBuilder; public class BitImplTest { @@ -76,12 +75,6 @@ public class BitImplTest { assertFalse("biA shouldn't equal to null", biA.equals(null)); assertFalse("biA shouldn't equal to object of other type", biA.equals(new String("str"))); - // test of equals method - // // test qname - biA = new BitImpl(55L, null, schemaPathA, "description", "reference", Status.CURRENT, null); - biB = new BitImpl(55L, qnameB, schemaPathA, "description", "reference", Status.CURRENT, null); - assertFalse("biA shouldn't equal to biB", biA.equals(biB)); - biA = new BitImpl(55L, qnameB, schemaPathA, "description", "reference", Status.CURRENT, null); biB = new BitImpl(55L, qnameB, schemaPathA, "description", "reference", Status.CURRENT, null); assertEquals("biA should equal to biB", biA, biB); @@ -91,7 +84,7 @@ public class BitImplTest { assertFalse("biA shouldn't equal to biB", biA.equals(biB)); // // test schemaPath - biA = new BitImpl(55L, qnameA, null, "description", "reference", Status.CURRENT, null); + biA = new BitImpl(55L, qnameA, schemaPathA, "description", "reference", Status.CURRENT, null); biB = new BitImpl(55L, qnameA, schemaPathB, "description", "reference", Status.CURRENT, null); assertFalse("biA shouldn't equal to biB", biA.equals(biB)); @@ -107,19 +100,7 @@ public class BitImplTest { biB = new BitImpl(55L, qnameA, schemaPathA, "description", "reference", Status.CURRENT, null); assertEquals("biA should equal to biB", biA, biB); - // test of hashCode method - biA = new BitImpl(null, null, null, "description", "reference", Status.CURRENT, null); - assertEquals("Incorrect hash code for biA.", 923522, biA.hashCode()); - - List unknownNodes = new ArrayList<>(); - SchemaPath path = org.mockito.Mockito.mock(SchemaPath.class); - UnknownSchemaNodeBuilder usnb = new UnknownSchemaNodeBuilder("module", 3, qnameB, path); - ModuleBuilder parent = org.mockito.Mockito.mock(ModuleBuilder.class); - usnb.setParent(parent); - - unknownNodes.add(usnb.build()); - - biA = new BitImpl(55L, qnameA, schemaPathA, "description", "reference", Status.CURRENT, unknownNodes); + biA = new BitImpl(55L, qnameA, schemaPathA, "description", "reference", Status.CURRENT,null); // test of getter methods assertEquals("Incorrect value for qname.", qnameA, biA.getQName()); @@ -127,7 +108,7 @@ public class BitImplTest { assertEquals("Incorrect value for description.", "description", biA.getDescription()); assertEquals("Incorrect value for reference.", "reference", biA.getReference()); assertEquals("Incorrect value for status.", Status.CURRENT, biA.getStatus()); - assertEquals("Incorrect value for unknown nodes.", unknownNodes, biA.getUnknownSchemaNodes()); + assertEquals("Incorrect value for unknown nodes.", Collections.emptyList(), biA.getUnknownSchemaNodes()); // test of toString method assertEquals("toString method doesn't return correct value", "Bit[name=some name, position=55]", biA.toString()); diff --git a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/MustDefinitionImplTest.java b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/MustDefinitionImplTest.java new file mode 100644 index 0000000000..838d795cd7 --- /dev/null +++ b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/MustDefinitionImplTest.java @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.util; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + +import org.junit.Test; + +import com.google.common.base.Optional; + +public class MustDefinitionImplTest { + + @Test + public void test() { + MustDefinitionImpl mdiA; + MustDefinitionImpl mdiB; + mdiA = MustDefinitionImpl.create("mustStrA", Optional.of("descriptionA"), Optional.of("referenceA"), Optional.of("errorAppTagA"), Optional.of("errorMessageA")); + + assertEquals("mdiA should equals to itsefl", mdiA, mdiA); + assertFalse("mdiA shouldn't equal to null", mdiA.equals(null)); + assertFalse("mdiA shouldn't equal to object of other type", mdiA.equals(new String("str"))); + + // test of equals method + + Optional description = Optional.of("description"); + Optional reference = Optional.of("reference"); + Optional errorAppTag = Optional.of("errorAppTag"); + Optional errorMessage = Optional.of("errorMesage"); + // //confirmation of equality + mdiA = MustDefinitionImpl.create("mustStr", description, reference, errorAppTag, errorMessage); + mdiB = MustDefinitionImpl.create("mustStr", description, reference, errorAppTag, errorMessage); + assertEquals("mdiA should equal to mdiB", mdiA, mdiB); + + // // mustStr + mdiA = MustDefinitionImpl.create("mstr", description, reference, errorAppTag, errorMessage); + mdiB = MustDefinitionImpl.create("mustStr", description, reference, errorAppTag, errorMessage); + assertFalse("mdiA shouldn't equal to mdiB", mdiA.equals(mdiB)); + + mdiA = MustDefinitionImpl.create("mustStrA", description, reference, errorAppTag, errorMessage); + mdiB = MustDefinitionImpl.create("mustStrB", description, reference, errorAppTag, errorMessage); + assertFalse("mdiA shouldn't equal to mdiB", mdiA.equals(mdiB)); + + // //description + mdiA = MustDefinitionImpl.create("mustStr", Optional.absent(), reference, errorAppTag, errorMessage); + mdiB = MustDefinitionImpl.create("mustStr", description, reference, errorAppTag, errorMessage); + assertFalse("mdiA shouldn't equal to mdiB", mdiA.equals(mdiB)); + + mdiA = MustDefinitionImpl.create("mustStr", Optional.of("descriptionA"), reference, errorAppTag, errorMessage); + mdiB = MustDefinitionImpl.create("mustStr", Optional.of("descriptionB"), reference, errorAppTag, errorMessage); + assertFalse("mdiA shouldn't equal to mdiB", mdiA.equals(mdiB)); + + // //reference + mdiA = MustDefinitionImpl.create("mustStr", description, Optional.absent(), errorAppTag, errorMessage); + mdiB = MustDefinitionImpl.create("mustStr", description, reference, errorAppTag, errorMessage); + assertFalse("mdiA shouldn't equal to mdiB", mdiA.equals(mdiB)); + + mdiA = MustDefinitionImpl.create("mustStr", description, Optional.of("referenceA"), errorAppTag, errorMessage); + mdiB = MustDefinitionImpl.create("mustStr", description, Optional.of("referenceB"), errorAppTag, errorMessage); + assertFalse("mdiA shouldn't equal to mdiB", mdiA.equals(mdiB)); + + } + +} diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/Builder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/Builder.java index 963bcc922a..0bc48108f7 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/Builder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/Builder.java @@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.parser.builder.api; import java.util.List; import org.opendaylight.yangtools.concepts.Mutable; -import org.opendaylight.yangtools.yang.parser.builder.impl.UnknownSchemaNodeBuilder; /** * Parent interface for all builder interfaces. diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/ConstraintsBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/ConstraintsBuilder.java new file mode 100644 index 0000000000..2d3649681b --- /dev/null +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/ConstraintsBuilder.java @@ -0,0 +1,127 @@ +/* + * 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.yangtools.yang.parser.builder.api; + +import java.util.Set; + +import org.opendaylight.yangtools.concepts.Builder; +import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition; +import org.opendaylight.yangtools.yang.model.api.MustDefinition; + +public interface ConstraintsBuilder extends Builder { + + /** + * Returns module name in which constraint is defined. + * + * @return module name + */ + String getModuleName(); + + /** + * + * Return line on which constraints were defined. + * + * @return line + */ + int getLine(); + + /** + * + * Returns number of minimum required elements. + * + * This constraint has meaning only if associated node is list or leaf-list. + * + * @return number of minimum required elements. + */ + Integer getMinElements(); + + /** + * + * Sets number of minimum required elements. + * + * This constraint has meaning only if associated node is list or leaf-list. + * + * @param minElements + * number of minimum required elements. + */ + void setMinElements(Integer minElements); + + /** + * + * Returns number of maximum required elements. + * + * This constraint has meaning only if associated node is list or leaf-list. + * + * @return number of maximum required elements. + */ + Integer getMaxElements(); + + /** + * + * Sets number of maximum required elements. + * + * This constraint has meaning only if associated node is list or leaf-list. + * + * @param minElements + * number of maximum required elements. + */ + void setMaxElements(Integer maxElements); + + /** + * Returns must definition associated with this builder. + * + * @return must definition associated with this builder. + */ + Set getMustDefinitions(); + + /** + * Adds must definition to product of this builder. + * + * @param must + * must definition which should be associated with + * parent node. + */ + void addMustDefinition(MustDefinition must); + + /** + * Returns when condition associated with this constraints. + * + * @return when condition associated with this constraints. + */ + String getWhenCondition(); + + /** + * Sets when condition associated with this constraints. + * + * @param whenCondition + * when condition. + */ + void addWhenCondition(String whenCondition); + + /** + * Returns true if associated node is mandatory. + * + * + * @return true if associated node is mandatory. + */ + boolean isMandatory(); + + /** + * Sets mandatory status of parent node + * + * @param mandatory + */ + void setMandatory(boolean mandatory); + + /** + * Build constraint definition + * + * @return + */ + ConstraintDefinition toInstance(); + +} \ No newline at end of file diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/DataSchemaNodeBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/DataSchemaNodeBuilder.java index 8fd0009a69..c4d24d3602 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/DataSchemaNodeBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/DataSchemaNodeBuilder.java @@ -8,7 +8,6 @@ package org.opendaylight.yangtools.yang.parser.builder.api; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; -import org.opendaylight.yangtools.yang.parser.builder.impl.ConstraintsBuilder; /** * Interface for all yang data-schema nodes [anyxml, case, container, grouping, diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/ExtensionBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/ExtensionBuilder.java new file mode 100644 index 0000000000..6516eefd83 --- /dev/null +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/ExtensionBuilder.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.parser.builder.api; + +import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition; + +/** + * Builder for extension statement. + * + */ +public interface ExtensionBuilder extends SchemaNodeBuilder { + + /** + * Sets argument name as was defined in YANG source + * + * @param argument argument name + */ + void setArgument(String argument); + + /** + * Sets if extension should be represented in YIN format as element. + * + * + * @param yin true if extension should be represented in YIN as element. + */ + void setYinElement(boolean yin); + + /** + * + * Builds definition of extednsion + * + */ + @Override + ExtensionDefinition build(); + +} \ No newline at end of file diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/GroupingBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/GroupingBuilder.java index fb7b9c8d61..61e455cc1f 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/GroupingBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/GroupingBuilder.java @@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.parser.builder.api; import java.util.Set; import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; -import org.opendaylight.yangtools.yang.parser.builder.impl.UnknownSchemaNodeBuilder; /** * Interface for builders of 'grouping' statement. diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/RefineBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/RefineBuilder.java new file mode 100644 index 0000000000..83aa38348d --- /dev/null +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/RefineBuilder.java @@ -0,0 +1,155 @@ +/* + * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.parser.builder.api; + +import java.util.List; + +import org.opendaylight.yangtools.yang.model.api.MustDefinition; + +/** + * Mutable holder for information contained in refine + * + * Represents a local change to node introduced by uses statement + * e.g. change in documentation, configuration or properties. + * + * + */ +public interface RefineBuilder extends DocumentedNodeBuilder { + + /** + * Get value of config statement. + * + * @return value of config statement + */ + Boolean isConfiguration(); + + /** + * Set config statement to the product. + * + * + * @param config true if config true was set, false if config false was set. + */ + void setConfiguration(Boolean config); + + /** + * Returns mandatory state of node or NULL if state was not refined. + * + * + * @return mandatory state of node or NULL if state was not refined. + */ + Boolean isMandatory(); + + void setMandatory(Boolean mandatory); + + /** + * + * Returns presence state of refined container. + * + * @return Presence state of refined container. + */ + Boolean isPresence(); + + void setPresence(Boolean presence); + + /** + * Returns must definition associated with this builder. + * + * @return must definition associated with this builder. + */ + MustDefinition getMust(); + + /** + * Adds must definition to product of this builder. + * + * @param must must definition which should be associated with parent node. + */ + void setMust(MustDefinition must); + + + /** + * + * Returns number of minimum required elements or NULL if minimum elements was not overriden. + * + * This constraint has meaning only if associated node is list or leaf-list. + * + * @return number of minimum required elements. + */ + Integer getMinElements(); + + /** + * + * Sets number of minimum required elements. + * + * This constraint has meaning only if associated node is list or leaf-list. + * + * @param minElements + * number of minimum required elements. + */ + void setMinElements(Integer minElements); + + /** + * + * Returns number of maximum elements or NULL if maximum elements was not overriden. + * + * This constraint has meaning only if associated node is list or leaf-list. + * + * @return number of maximum required elements. + */ + Integer getMaxElements(); + + /** + * + * Sets number of maximum required elements. + * + * This constraint has meaning only if associated node is list or leaf-list. + * + * @param minElements number of maximum required elements. + */ + void setMaxElements(Integer maxElements); + + /** + * + * Returns string representation of path to refine target, which is relative to grouping root + * + * This string representation does not need to contain prefixes, since parent uses + * element introduces elements with namespace local to parent module. + * + * @return string representation of path to refine target, which is relative to grouping root + */ + String getTargetPathString(); + + /** + * + * Returns module (source) name in which refine statement was defined. + * + * @return module (source) name in which refine statement was defined. + */ + String getModuleName(); + + /** + * Line on which element was defined. + * + * @return Line on which element was defined. + */ + int getLine(); + + /** + * Returns list of unknown schema node builders, which are associated + * with refine statement. + * + * @return Set of unknown schema node builders. + */ + List getUnknownNodes(); + + /** + * Returns string representation of default value or null, if default value was not refined. + * + * @return string representation of default value or null, if default value was not refined. + */ + String getDefaultStr(); + +} \ No newline at end of file diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/UnknownSchemaNodeBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/UnknownSchemaNodeBuilder.java new file mode 100644 index 0000000000..3b0cb966cd --- /dev/null +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/UnknownSchemaNodeBuilder.java @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.parser.builder.api; + +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; + +public interface UnknownSchemaNodeBuilder extends SchemaNodeBuilder, DocumentedNodeBuilder { + + @Override + SchemaPath getPath(); + + /** + * Returns true if node was added via uses statement + * + * @return true if node was added via uses statement + */ + boolean isAddedByUses(); + + /** + * Sets flag if node was introduced by uses statement + * + * @param addedByUses true if node was introduced by uses, false otherwise + */ + void setAddedByUses(boolean addedByUses); + + /** + * + * Returns QName associated with this unknown node. + * + * @return QName associated with this unknown node. + */ + QName getNodeType(); + + /** + * Returns string representation of argument associated with this unknown node. + * + * @return string representation of argument associated with this unknown node. + */ + String getNodeParameter(); + + /** + * Sets string representation of argument associated with this unknown node. + * @param nodeParameter string representation of argument associated with this unknown node. + */ + void setNodeParameter(String nodeParameter); + + /** + * Returns extension definition, which declares this unknown node + * @return extension definition, which declares this unknown node + */ + ExtensionDefinition getExtensionDefinition(); + + /** + * Sets extension definition, which declares this unknown node + * @param extensionDefinition extension definition, which declares this unknown node + */ + void setExtensionDefinition(ExtensionDefinition extensionDefinition); + + /** + * Returns builder for extension, which declares this unknown node. + * + * @return builder for extension, which declares this unknown node. + */ + ExtensionBuilder getExtensionBuilder(); + + /** + * Sets extension builder, which declares this unknown node + * @param extensionBuilder extension definition, which declares this unknown node + */ + void setExtensionBuilder(ExtensionBuilder extension); + + @Override + UnknownSchemaNode build(); + + /** + * Sets node type associated with this unknown schema node + * + * @param qName node type associated with this unknown schema node + */ + void setNodeType(QName qName); + +} \ No newline at end of file diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/UsesNodeBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/UsesNodeBuilder.java index ddff749d5e..3576995cba 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/UsesNodeBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/UsesNodeBuilder.java @@ -13,7 +13,6 @@ import java.util.Set; import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.UsesNode; -import org.opendaylight.yangtools.yang.parser.util.RefineHolder; /** * Builder for 'uses' statement. @@ -107,7 +106,7 @@ public interface UsesNodeBuilder extends GroupingMember { * * @return list of RefineHolder objects */ - List getRefines(); + List getRefines(); /** * Get refined nodes. @@ -122,7 +121,7 @@ public interface UsesNodeBuilder extends GroupingMember { * @param refine * new RefineHolder object */ - void addRefine(RefineHolder refine); + void addRefine(RefineBuilder refine); /** * Add refine node. diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/AnyXmlBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/AnyXmlBuilder.java index 7fd48b6a9b..f69b4f8810 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/AnyXmlBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/AnyXmlBuilder.java @@ -15,8 +15,10 @@ import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.ConstraintsBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractSchemaNodeBuilder; import com.google.common.collect.ImmutableList; @@ -32,14 +34,14 @@ public final class AnyXmlBuilder extends AbstractSchemaNodeBuilder implements Da public AnyXmlBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path) { super(moduleName, line, qname); this.schemaPath = path; - constraints = new ConstraintsBuilder(moduleName, line); + constraints = new ConstraintsBuilderImpl(moduleName, line); } public AnyXmlBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path, final AnyXmlSchemaNode base) { super(moduleName, line, qname); this.schemaPath = path; - constraints = new ConstraintsBuilder(moduleName, line, base.getConstraints()); + constraints = new ConstraintsBuilderImpl(moduleName, line, base.getConstraints()); description = base.getDescription(); reference = base.getReference(); @@ -65,7 +67,7 @@ public final class AnyXmlBuilder extends AbstractSchemaNodeBuilder implements Da instance.addedByUses = addedByUses; instance.configuration = configuration; - instance.constraintsDef = constraints.build(); + instance.constraintsDef = constraints.toInstance(); // UNKNOWN NODES for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/AugmentationSchemaBuilderImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/AugmentationSchemaBuilderImpl.java index 3e4abd301d..2a73848c29 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/AugmentationSchemaBuilderImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/AugmentationSchemaBuilderImpl.java @@ -7,6 +7,11 @@ */ package org.opendaylight.yangtools.yang.parser.builder.impl; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; + import java.net.URI; import java.util.ArrayList; import java.util.Collections; @@ -28,21 +33,16 @@ import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.UsesNode; import org.opendaylight.yangtools.yang.model.util.RevisionAwareXPathImpl; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractDataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.Builder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; -import org.opendaylight.yangtools.yang.parser.util.ParserUtils; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractDataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.util.YangParseException; -import com.google.common.base.Optional; -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; - public final class AugmentationSchemaBuilderImpl extends AbstractDataNodeContainerBuilder implements AugmentationSchemaBuilder { private final int order; @@ -64,7 +64,7 @@ public final class AugmentationSchemaBuilderImpl extends AbstractDataNodeContain super(moduleName, line, null); this.order = order; this.augmentTargetStr = augmentTargetStr; - targetPath = ParserUtils.parseXPathString(augmentTargetStr); + targetPath = BuilderUtils.parseXPathString(augmentTargetStr); } @Override @@ -107,7 +107,7 @@ public final class AugmentationSchemaBuilderImpl extends AbstractDataNodeContain } if (parent instanceof UsesNodeBuilder) { - final ModuleBuilder mb = ParserUtils.getParentModule(this); + final ModuleBuilder mb = BuilderUtils.getParentModule(this); final QNameModule qm = QNameModule.create(mb.getNamespace(), mb.getRevision()); List newPath = new ArrayList<>(); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ParserUtils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/BuilderUtils.java similarity index 93% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ParserUtils.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/BuilderUtils.java index 9e123e343e..19daf45e88 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ParserUtils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/BuilderUtils.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.util; +package org.opendaylight.yangtools.yang.parser.builder.impl; import java.io.ByteArrayOutputStream; import java.io.File; @@ -53,20 +53,9 @@ import org.opendaylight.yangtools.yang.parser.builder.api.GroupingMember; import org.opendaylight.yangtools.yang.parser.builder.api.SchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.AnyXmlBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ChoiceBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ChoiceCaseBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ContainerSchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.GroupingBuilderImpl; -import org.opendaylight.yangtools.yang.parser.builder.impl.IdentitySchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.LeafListSchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.LeafSchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ListSchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.NotificationBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.RpcDefinitionBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.TypeDefinitionBuilderImpl; -import org.opendaylight.yangtools.yang.parser.builder.impl.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.util.NamedByteArrayInputStream; +import org.opendaylight.yangtools.yang.parser.util.NamedFileInputStream; +import org.opendaylight.yangtools.yang.parser.util.YangParseException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -77,15 +66,15 @@ import com.google.common.base.Splitter; import com.google.common.collect.Collections2; import com.google.common.io.ByteSource; -public final class ParserUtils { +public final class BuilderUtils { - private static final Logger LOG = LoggerFactory.getLogger(ParserUtils.class); + private static final Logger LOG = LoggerFactory.getLogger(BuilderUtils.class); private static final Splitter SLASH_SPLITTER = Splitter.on('/'); private static final Splitter COLON_SPLITTER = Splitter.on(':'); private static final String INPUT = "input"; private static final String OUTPUT = "output"; - private ParserUtils() { + private BuilderUtils() { } public static Collection streamsToByteSources(final Collection streams) throws IOException { @@ -255,7 +244,7 @@ public final class ParserUtils { } TreeMap modulesByRevision = new TreeMap<>(); - ModuleImport dependentModuleImport = ParserUtils.getModuleImport(currentModule, prefix); + ModuleImport dependentModuleImport = BuilderUtils.getModuleImport(currentModule, prefix); if (dependentModuleImport == null) { throw new YangParseException(currentModule.getName(), line, "No import found with prefix '" + prefix + "'."); } @@ -510,7 +499,7 @@ public final class ParserUtils { return currentNode; } - private static Optional findDataChild(SchemaNodeBuilder parent, QName child) { + private static Optional findDataChild(final SchemaNodeBuilder parent, final QName child) { if (parent instanceof DataNodeContainerBuilder) { return castOptional(SchemaNodeBuilder.class, findDataChildInDataNodeContainer((DataNodeContainerBuilder) parent, child)); @@ -534,7 +523,7 @@ public final class ParserUtils { * Original value * @return */ - private static Optional castOptional(Class cls, Optional optional) { + private static Optional castOptional(final Class cls, final Optional optional) { if (optional.isPresent()) { Object value = optional.get(); if (cls.isInstance(value)) { @@ -560,7 +549,7 @@ public final class ParserUtils { * @return Optional of input/output if defined and QName is input/output. * Otherwise {@link Optional#absent()}. */ - private static Optional findContainerInRpc(RpcDefinitionBuilder parent, QName child) { + private static Optional findContainerInRpc(final RpcDefinitionBuilder parent, final QName child) { if (INPUT.equals(child.getLocalName())) { return Optional.of(parent.getInput()); } else if (OUTPUT.equals(child.getLocalName())) { @@ -581,7 +570,7 @@ public final class ParserUtils { * @return Optional of child if found. */ - private static Optional findCaseInChoice(ChoiceBuilder parent, QName child) { + private static Optional findCaseInChoice(final ChoiceBuilder parent, final QName child) { for (ChoiceCaseBuilder caze : parent.getCases()) { if (caze.getQName().equals(child)) { return Optional.of(caze); @@ -601,8 +590,8 @@ public final class ParserUtils { * QName of child * @return Optional of child if found. */ - private static Optional findDataChildInDataNodeContainer(DataNodeContainerBuilder parent, - QName child) { + private static Optional findDataChildInDataNodeContainer(final DataNodeContainerBuilder parent, + final QName child) { for (DataSchemaNodeBuilder childNode : parent.getChildNodeBuilders()) { if (childNode.getQName().equals(child)) { return Optional.of(childNode); @@ -630,7 +619,7 @@ public final class ParserUtils { * ModuleBuilder to start lookup in * @return Node Builder if found, {@link Optional#absent()} otherwise. */ - private static Optional getDataNamespaceChild(ModuleBuilder module, QName child) { + private static Optional getDataNamespaceChild(final ModuleBuilder module, final QName child) { /* * First we do lookup in data tree, if node is found we return it. */ @@ -662,7 +651,7 @@ public final class ParserUtils { return Optional.absent(); } - private static Optional getDataChildByQName(DataNodeContainerBuilder builder, QName child) { + private static Optional getDataChildByQName(final DataNodeContainerBuilder builder, final QName child) { for (DataSchemaNodeBuilder childNode : builder.getChildNodeBuilders()) { if (childNode.getQName().equals(child)) { return Optional. of(childNode); @@ -819,16 +808,16 @@ public final class ParserUtils { return result; } - public static List wrapUnknownNodes(final String moduleName, final int line, + public static List wrapUnknownNodes(final String moduleName, final int line, final List nodes, final SchemaPath parentPath, final URI ns, final Date rev, final String pref) { - List result = new ArrayList<>(); + List result = new ArrayList<>(); for (UnknownSchemaNode node : nodes) { QName qname = new QName(ns, rev, pref, node.getQName().getLocalName()); List path = new ArrayList<>(parentPath.getPath()); path.add(qname); SchemaPath schemaPath = SchemaPath.create(path, parentPath.isAbsolute()); - result.add(new UnknownSchemaNodeBuilder(moduleName, line, qname, schemaPath, node)); + result.add(new UnknownSchemaNodeBuilderImpl(moduleName, line, qname, schemaPath, node)); } return result; } @@ -837,7 +826,7 @@ public final class ParserUtils { private final String toString; private final ByteArrayOutputStream output = new ByteArrayOutputStream(); - private ByteSourceImpl(InputStream input) throws IOException { + private ByteSourceImpl(final InputStream input) throws IOException { toString = input.toString(); IOUtils.copy(input, output); } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ChoiceBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ChoiceBuilder.java index 3bd7a7390e..6dac4e29a7 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ChoiceBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ChoiceBuilder.java @@ -24,12 +24,13 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationTargetBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.util.Comparators; -import org.opendaylight.yangtools.yang.parser.util.ParserUtils; +import org.opendaylight.yangtools.yang.parser.builder.api.ConstraintsBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.Comparators; import org.opendaylight.yangtools.yang.parser.util.YangParseException; import com.google.common.collect.ImmutableList; @@ -54,14 +55,14 @@ public final class ChoiceBuilder extends AbstractSchemaNodeBuilder implements Da public ChoiceBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path) { super(moduleName, line, qname); this.schemaPath = path; - constraints = new ConstraintsBuilder(moduleName, line); + constraints = new ConstraintsBuilderImpl(moduleName, line); } public ChoiceBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path, final ChoiceNode base) { super(moduleName, line, qname); this.schemaPath = path; - constraints = new ConstraintsBuilder(moduleName, line, base.getConstraints()); + constraints = new ConstraintsBuilderImpl(moduleName, line, base.getConstraints()); description = base.getDescription(); reference = base.getReference(); @@ -74,7 +75,7 @@ public final class ChoiceBuilder extends AbstractSchemaNodeBuilder implements Da URI ns = qname.getNamespace(); Date rev = qname.getRevision(); String pref = qname.getPrefix(); - Set wrapped = ParserUtils.wrapChildNodes(moduleName, line, new HashSet( + Set wrapped = BuilderUtils.wrapChildNodes(moduleName, line, new HashSet( base.getCases()), path, ns, rev, pref); for (DataSchemaNodeBuilder wrap : wrapped) { if (wrap instanceof ChoiceCaseBuilder) { @@ -82,7 +83,7 @@ public final class ChoiceBuilder extends AbstractSchemaNodeBuilder implements Da } } - addedUnknownNodes.addAll(ParserUtils.wrapUnknownNodes(moduleName, line, base.getUnknownSchemaNodes(), path, ns, + addedUnknownNodes.addAll(BuilderUtils.wrapUnknownNodes(moduleName, line, base.getUnknownSchemaNodes(), path, ns, rev, pref)); } @@ -101,7 +102,7 @@ public final class ChoiceBuilder extends AbstractSchemaNodeBuilder implements Da instance.addedByUses = addedByUses; instance.configuration = configuration; - instance.constraints = constraints.build(); + instance.constraints = constraints.toInstance(); instance.defaultCase = defaultCase; // CASES diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ChoiceCaseBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ChoiceCaseBuilder.java index bd94b0f6cc..643a22f6d4 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ChoiceCaseBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ChoiceCaseBuilder.java @@ -25,13 +25,14 @@ import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.UsesNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractDataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationTargetBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.ConstraintsBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; -import org.opendaylight.yangtools.yang.parser.util.ParserUtils; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractDataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.util.YangParseException; import com.google.common.base.Preconditions; @@ -56,15 +57,15 @@ public final class ChoiceCaseBuilder extends AbstractDataNodeContainerBuilder im public ChoiceCaseBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path) { super(moduleName, line, qname); - this.schemaPath = path; - constraints = new ConstraintsBuilder(moduleName, line); + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); + constraints = new ConstraintsBuilderImpl(moduleName, line); } public ChoiceCaseBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path, final ChoiceCaseNode base) { super(moduleName, line, qname); - this.schemaPath = path; - constraints = new ConstraintsBuilder(moduleName, line, base.getConstraints()); + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); + constraints = new ConstraintsBuilderImpl(moduleName, line, base.getConstraints()); description = base.getDescription(); reference = base.getReference(); @@ -75,9 +76,9 @@ public final class ChoiceCaseBuilder extends AbstractDataNodeContainerBuilder im URI ns = qname.getNamespace(); Date rev = qname.getRevision(); String pref = qname.getPrefix(); - addedChildNodes.addAll(ParserUtils.wrapChildNodes(moduleName, line, base.getChildNodes(), path, ns, rev, pref)); - addedGroupings.addAll(ParserUtils.wrapGroupings(moduleName, line, base.getGroupings(), path, ns, rev, pref)); - addedUnknownNodes.addAll(ParserUtils.wrapUnknownNodes(moduleName, line, base.getUnknownSchemaNodes(), path, ns, + addedChildNodes.addAll(BuilderUtils.wrapChildNodes(moduleName, line, base.getChildNodes(), path, ns, rev, pref)); + addedGroupings.addAll(BuilderUtils.wrapGroupings(moduleName, line, base.getGroupings(), path, ns, rev, pref)); + addedUnknownNodes.addAll(BuilderUtils.wrapUnknownNodes(moduleName, line, base.getUnknownSchemaNodes(), path, ns, rev, pref)); augmentations.addAll(base.getAvailableAugmentations()); @@ -98,7 +99,7 @@ public final class ChoiceCaseBuilder extends AbstractDataNodeContainerBuilder im instance.augmenting = augmenting; instance.addedByUses = addedByUses; - instance.constraints = constraints.build(); + instance.constraints = constraints.toInstance(); // CHILD NODES for (DataSchemaNodeBuilder node : addedChildNodes) { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ConstraintsBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ConstraintsBuilderImpl.java similarity index 77% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ConstraintsBuilder.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ConstraintsBuilderImpl.java index 24aff631ce..392c101529 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ConstraintsBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ConstraintsBuilderImpl.java @@ -15,10 +15,11 @@ import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition; import org.opendaylight.yangtools.yang.model.api.MustDefinition; import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; import org.opendaylight.yangtools.yang.model.util.RevisionAwareXPathImpl; +import org.opendaylight.yangtools.yang.parser.builder.api.ConstraintsBuilder; import com.google.common.collect.ImmutableSet; -public final class ConstraintsBuilder { +public final class ConstraintsBuilderImpl implements ConstraintsBuilder { private static final ConstraintDefinitionImpl EMPTY_CONSTRAINT = new ConstraintDefinitionImpl(); private static final ConstraintDefinitionImpl EMPTY_MANDATORY_CONSTRAINT; @@ -39,13 +40,13 @@ public final class ConstraintsBuilder { private Integer min; private Integer max; - public ConstraintsBuilder(final String moduleName, final int line) { + public ConstraintsBuilderImpl(final String moduleName, final int line) { this.moduleName = moduleName; this.line = line; mustDefinitions = new HashSet(); } - ConstraintsBuilder(final ConstraintsBuilder b) { + ConstraintsBuilderImpl(final ConstraintsBuilder b) { this.moduleName = b.getModuleName(); this.line = b.getLine(); mustDefinitions = new HashSet(b.getMustDefinitions()); @@ -55,7 +56,7 @@ public final class ConstraintsBuilder { max = b.getMaxElements(); } - ConstraintsBuilder(final String moduleName, final int line, final ConstraintDefinition base) { + ConstraintsBuilderImpl(final String moduleName, final int line, final ConstraintDefinition base) { this.moduleName = moduleName; this.line = line; whenStmt = base.getWhenCondition(); @@ -65,7 +66,11 @@ public final class ConstraintsBuilder { max = base.getMaxElements(); } - public ConstraintDefinition build() { + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IConstraintsBuilder#build() + */ + @Override + public ConstraintDefinition toInstance() { if (instance != null) { return instance; } @@ -97,50 +102,98 @@ public final class ConstraintsBuilder { return instance; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IConstraintsBuilder#getModuleName() + */ + @Override public String getModuleName() { return moduleName; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IConstraintsBuilder#getLine() + */ + @Override public int getLine() { return line; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IConstraintsBuilder#getMinElements() + */ + @Override public Integer getMinElements() { return min; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IConstraintsBuilder#setMinElements(java.lang.Integer) + */ + @Override public void setMinElements(final Integer minElements) { this.min = minElements; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IConstraintsBuilder#getMaxElements() + */ + @Override public Integer getMaxElements() { return max; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IConstraintsBuilder#setMaxElements(java.lang.Integer) + */ + @Override public void setMaxElements(final Integer maxElements) { this.max = maxElements; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IConstraintsBuilder#getMustDefinitions() + */ + @Override public Set getMustDefinitions() { return mustDefinitions; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IConstraintsBuilder#addMustDefinition(org.opendaylight.yangtools.yang.model.api.MustDefinition) + */ + @Override public void addMustDefinition(final MustDefinition must) { mustDefinitions.add(must); } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IConstraintsBuilder#getWhenCondition() + */ + @Override public String getWhenCondition() { return whenCondition; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IConstraintsBuilder#addWhenCondition(java.lang.String) + */ + @Override public void addWhenCondition(final String whenCondition) { this.whenCondition = whenCondition; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IConstraintsBuilder#isMandatory() + */ + @Override public boolean isMandatory() { return mandatory; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IConstraintsBuilder#setMandatory(boolean) + */ + @Override public void setMandatory(final boolean mandatory) { this.mandatory = mandatory; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ContainerSchemaNodeBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ContainerSchemaNodeBuilder.java index 5168371510..5de90e46b2 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ContainerSchemaNodeBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ContainerSchemaNodeBuilder.java @@ -24,14 +24,15 @@ import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.UsesNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractDataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationTargetBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.ConstraintsBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; -import org.opendaylight.yangtools.yang.parser.util.ParserUtils; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractDataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.util.YangParseException; import com.google.common.base.Preconditions; @@ -58,16 +59,16 @@ public final class ContainerSchemaNodeBuilder extends AbstractDataNodeContainerB public ContainerSchemaNodeBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path) { super(moduleName, line, qname); - this.path = path; - this.constraints = new ConstraintsBuilder(moduleName, line); + this.path = Preconditions.checkNotNull(path, "Schema Path must not be null"); + this.constraints = new ConstraintsBuilderImpl(moduleName, line); } // constructor for uses public ContainerSchemaNodeBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path, final ContainerSchemaNode base) { super(moduleName, line, qname); - this.path = path; - constraints = new ConstraintsBuilder(moduleName, line, base.getConstraints()); + this.path = Preconditions.checkNotNull(path, "Schema Path must not be null"); + constraints = new ConstraintsBuilderImpl(moduleName, line, base.getConstraints()); description = base.getDescription(); reference = base.getReference(); @@ -80,10 +81,10 @@ public final class ContainerSchemaNodeBuilder extends AbstractDataNodeContainerB URI ns = qname.getNamespace(); Date rev = qname.getRevision(); String pref = qname.getPrefix(); - addedChildNodes.addAll(ParserUtils.wrapChildNodes(moduleName, line, base.getChildNodes(), path, ns, rev, pref)); - addedGroupings.addAll(ParserUtils.wrapGroupings(moduleName, line, base.getGroupings(), path, ns, rev, pref)); - addedTypedefs.addAll(ParserUtils.wrapTypedefs(moduleName, line, base, path, ns, rev, pref)); - addedUnknownNodes.addAll(ParserUtils.wrapUnknownNodes(moduleName, line, base.getUnknownSchemaNodes(), path, ns, + addedChildNodes.addAll(BuilderUtils.wrapChildNodes(moduleName, line, base.getChildNodes(), path, ns, rev, pref)); + addedGroupings.addAll(BuilderUtils.wrapGroupings(moduleName, line, base.getGroupings(), path, ns, rev, pref)); + addedTypedefs.addAll(BuilderUtils.wrapTypedefs(moduleName, line, base, path, ns, rev, pref)); + addedUnknownNodes.addAll(BuilderUtils.wrapUnknownNodes(moduleName, line, base.getUnknownSchemaNodes(), path, ns, rev, pref)); augmentations.addAll(base.getAvailableAugmentations()); @@ -104,7 +105,7 @@ public final class ContainerSchemaNodeBuilder extends AbstractDataNodeContainerB instance.augmenting = augmenting; instance.addedByUses = addedByUses; instance.configuration = configuration; - instance.constraints = constraints.build(); + instance.constraints = constraints.toInstance(); instance.presence = presence; // CHILD NODES diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/CopyUtils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/CopyUtils.java similarity index 92% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/CopyUtils.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/CopyUtils.java index 2b3e29bb7f..ce88a3b7f0 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/CopyUtils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/CopyUtils.java @@ -5,11 +5,12 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.util; +package org.opendaylight.yangtools.yang.parser.builder.impl; import java.util.ArrayList; import java.util.Collections; import java.util.List; + import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; @@ -17,25 +18,12 @@ import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuil import org.opendaylight.yangtools.yang.parser.builder.api.Builder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.ConstraintsBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.SchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.AnyXmlBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.AugmentationSchemaBuilderImpl; -import org.opendaylight.yangtools.yang.parser.builder.impl.ChoiceBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ChoiceCaseBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ConstraintsBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ContainerSchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.GroupingBuilderImpl; -import org.opendaylight.yangtools.yang.parser.builder.impl.IdentityrefTypeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.LeafListSchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.LeafSchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ListSchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.TypeDefinitionBuilderImpl; -import org.opendaylight.yangtools.yang.parser.builder.impl.UnionTypeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.UnknownSchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.UsesNodeBuilderImpl; +import org.opendaylight.yangtools.yang.parser.util.YangParseException; public final class CopyUtils { @@ -424,12 +412,12 @@ public final class CopyUtils { return copy; } - public static UnknownSchemaNodeBuilder copy(final UnknownSchemaNodeBuilder old, final Builder newParent, final boolean updateQName) { + public static UnknownSchemaNodeBuilderImpl copy(final UnknownSchemaNodeBuilder old, final Builder newParent, final boolean updateQName) { DataBean data = getdata(old, newParent, updateQName); QName newQName = data.qname; SchemaPath newSchemaPath = data.schemaPath; - UnknownSchemaNodeBuilder c = new UnknownSchemaNodeBuilder(newParent.getModuleName(), newParent.getLine(), + UnknownSchemaNodeBuilderImpl c = new UnknownSchemaNodeBuilderImpl(newParent.getModuleName(), newParent.getLine(), newQName, newSchemaPath); c.setNodeType(old.getNodeType()); @@ -463,7 +451,7 @@ public final class CopyUtils { } } else if (newParent instanceof AugmentationSchemaBuilder) { AugmentationSchemaBuilder augment = (AugmentationSchemaBuilder) newParent; - ModuleBuilder parent = ParserUtils.getParentModule(newParent); + ModuleBuilder parent = BuilderUtils.getParentModule(newParent); if (updateQName) { newQName = new QName(parent.getNamespace(), parent.getRevision(), parent.getPrefix(), old.getQName() .getLocalName()); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/DeviationBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/DeviationBuilder.java index 7d98057613..2608d7bff2 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/DeviationBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/DeviationBuilder.java @@ -13,8 +13,8 @@ import org.opendaylight.yangtools.yang.model.api.Deviation; import org.opendaylight.yangtools.yang.model.api.Deviation.Deviate; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractBuilder; -import org.opendaylight.yangtools.yang.parser.util.ParserUtils; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractBuilder; import org.opendaylight.yangtools.yang.parser.util.YangParseException; import com.google.common.collect.ImmutableList; @@ -33,7 +33,7 @@ public final class DeviationBuilder extends AbstractBuilder { "Deviation argument string must be an absolute schema node identifier."); } this.targetPathStr = targetPathStr; - this.targetPath = ParserUtils.parseXPathString(targetPathStr); + this.targetPath = BuilderUtils.parseXPathString(targetPathStr); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ExtensionBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ExtensionBuilderImpl.java similarity index 83% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ExtensionBuilder.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ExtensionBuilderImpl.java index 9b48c9dc15..5d6eed0f79 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ExtensionBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ExtensionBuilderImpl.java @@ -14,18 +14,21 @@ import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.ExtensionBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractSchemaNodeBuilder; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; -public final class ExtensionBuilder extends AbstractSchemaNodeBuilder { +public final class ExtensionBuilderImpl extends AbstractSchemaNodeBuilder implements ExtensionBuilder { private ExtensionDefinitionImpl instance; private String argument; private boolean yin; - ExtensionBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path) { + ExtensionBuilderImpl(final String moduleName, final int line, final QName qname, final SchemaPath path) { super(moduleName, line, qname); - this.schemaPath = path; + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); } @Override @@ -47,11 +50,13 @@ public final class ExtensionBuilder extends AbstractSchemaNodeBuilder { return instance; } - public void setYinElement(boolean yin) { + @Override + public void setYinElement(final boolean yin) { this.yin = yin; } - public void setArgument(String argument) { + @Override + public void setArgument(final String argument) { this.argument = argument; } @@ -70,7 +75,7 @@ public final class ExtensionBuilder extends AbstractSchemaNodeBuilder { private ImmutableList unknownNodes; private boolean yin; - private ExtensionDefinitionImpl(QName qname, SchemaPath path) { + private ExtensionDefinitionImpl(final QName qname, final SchemaPath path) { this.qname = qname; this.schemaPath = path; } @@ -125,7 +130,7 @@ public final class ExtensionBuilder extends AbstractSchemaNodeBuilder { } @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) { return true; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/FeatureBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/FeatureBuilder.java index 0417dd4dba..9b9b1b9218 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/FeatureBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/FeatureBuilder.java @@ -14,8 +14,10 @@ import org.opendaylight.yangtools.yang.model.api.FeatureDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractSchemaNodeBuilder; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; public final class FeatureBuilder extends AbstractSchemaNodeBuilder { @@ -23,7 +25,7 @@ public final class FeatureBuilder extends AbstractSchemaNodeBuilder { FeatureBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path) { super(moduleName, line, qname); - this.schemaPath = path; + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); } @Override @@ -101,7 +103,7 @@ public final class FeatureBuilder extends AbstractSchemaNodeBuilder { } @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) { return true; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/GroupingBuilderImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/GroupingBuilderImpl.java index ced13261d0..51239575fd 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/GroupingBuilderImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/GroupingBuilderImpl.java @@ -21,14 +21,13 @@ import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.UsesNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractDataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.Builder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; -import org.opendaylight.yangtools.yang.parser.util.CopyUtils; -import org.opendaylight.yangtools.yang.parser.util.ParserUtils; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractDataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.util.YangParseException; import com.google.common.base.Preconditions; @@ -47,13 +46,12 @@ public final class GroupingBuilderImpl extends AbstractDataNodeContainerBuilder public GroupingBuilderImpl(final String moduleName, final int line, final QName qname, final SchemaPath path) { super(moduleName, line, qname); - schemaPath = path; + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); } public GroupingBuilderImpl(final String moduleName, final int line, final QName qname, final SchemaPath path, final GroupingDefinition base) { - super(moduleName, line, base.getQName()); - schemaPath = path; + this(moduleName, line, base.getQName(),path); description = base.getDescription(); reference = base.getReference(); @@ -63,10 +61,10 @@ public final class GroupingBuilderImpl extends AbstractDataNodeContainerBuilder URI ns = qname.getNamespace(); Date rev = qname.getRevision(); String pref = qname.getPrefix(); - addedChildNodes.addAll(ParserUtils.wrapChildNodes(moduleName, line, base.getChildNodes(), path, ns, rev, pref)); - addedGroupings.addAll(ParserUtils.wrapGroupings(moduleName, line, base.getGroupings(), path, ns, rev, pref)); - addedTypedefs.addAll(ParserUtils.wrapTypedefs(moduleName, line, base, path, ns, rev, pref)); - addedUnknownNodes.addAll(ParserUtils.wrapUnknownNodes(moduleName, line, base.getUnknownSchemaNodes(), path, ns, + addedChildNodes.addAll(BuilderUtils.wrapChildNodes(moduleName, line, base.getChildNodes(), path, ns, rev, pref)); + addedGroupings.addAll(BuilderUtils.wrapGroupings(moduleName, line, base.getGroupings(), path, ns, rev, pref)); + addedTypedefs.addAll(BuilderUtils.wrapTypedefs(moduleName, line, base, path, ns, rev, pref)); + addedUnknownNodes.addAll(BuilderUtils.wrapUnknownNodes(moduleName, line, base.getUnknownSchemaNodes(), path, ns, rev, pref)); usesNodes.addAll(base.getUses()); @@ -123,7 +121,7 @@ public final class GroupingBuilderImpl extends AbstractDataNodeContainerBuilder final Set nodes = new HashSet<>(); for (DataSchemaNodeBuilder node : addedChildNodes) { DataSchemaNodeBuilder copy = CopyUtils.copy(node, newParent, true); - ParserUtils.setNodeAddedByUses(copy); + BuilderUtils.setNodeAddedByUses(copy); nodes.add(copy); } return nodes; @@ -146,7 +144,7 @@ public final class GroupingBuilderImpl extends AbstractDataNodeContainerBuilder GroupingBuilder copy = CopyUtils.copy(node, newParent, true); copy.setAddedByUses(true); for (DataSchemaNodeBuilder childNode : copy.getChildNodeBuilders()) { - ParserUtils.setNodeAddedByUses(childNode); + BuilderUtils.setNodeAddedByUses(childNode); } nodes.add(copy); } @@ -157,7 +155,7 @@ public final class GroupingBuilderImpl extends AbstractDataNodeContainerBuilder public Set instantiateUnknownNodes(final Builder newParent) { final Set nodes = new HashSet<>(); for (UnknownSchemaNodeBuilder node : addedUnknownNodes) { - UnknownSchemaNodeBuilder copy = CopyUtils.copy(node, newParent, true); + UnknownSchemaNodeBuilderImpl copy = CopyUtils.copy(node, newParent, true); copy.setAddedByUses(true); nodes.add(copy); } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/GroupingUtils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/GroupingUtils.java similarity index 87% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/GroupingUtils.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/GroupingUtils.java index 2b37a2ce70..42957db085 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/GroupingUtils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/GroupingUtils.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.util; +package org.opendaylight.yangtools.yang.parser.builder.impl; import java.util.Comparator; import java.util.Date; @@ -20,10 +20,9 @@ import org.opendaylight.yangtools.yang.parser.builder.api.Builder; import org.opendaylight.yangtools.yang.parser.builder.api.DataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.RefineBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ChoiceBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.RpcDefinitionBuilder; +import org.opendaylight.yangtools.yang.parser.util.YangParseException; public final class GroupingUtils { @@ -68,7 +67,7 @@ public final class GroupingUtils { if (groupingPrefix.equals(module.getPrefix())) { dependentModule = module; } else { - dependentModule = ParserUtils.findModuleFromBuilders(modules, module, groupingPrefix, line); + dependentModule = BuilderUtils.findModuleFromBuilders(modules, module, groupingPrefix, line); } if (dependentModule == null) { @@ -135,7 +134,7 @@ public final class GroupingUtils { groupingName = groupingString; } - Module dependentModule = ParserUtils.findModuleFromContext(context, module, groupingPrefix, line); + Module dependentModule = BuilderUtils.findModuleFromContext(context, module, groupingPrefix, line); return findGroupingDefinition(dependentModule.getGroupings(), groupingName); } @@ -148,7 +147,7 @@ public final class GroupingUtils { * name of grouping * @return grouping with given name if present in collection, null otherwise */ - public static GroupingBuilder findGroupingBuilder(Set groupings, String name) { + public static GroupingBuilder findGroupingBuilder(final Set groupings, final String name) { for (GroupingBuilder grouping : groupings) { if (grouping.getQName().getLocalName().equals(name)) { return grouping; @@ -166,7 +165,7 @@ public final class GroupingUtils { * name of grouping * @return grouping with given name if present in collection, null otherwise */ - public static GroupingDefinition findGroupingDefinition(Set groupings, String name) { + public static GroupingDefinition findGroupingDefinition(final Set groupings, final String name) { for (GroupingDefinition grouping : groupings) { if (grouping.getQName().getLocalName().equals(name)) { return grouping; @@ -182,9 +181,9 @@ public final class GroupingUtils { * @param usesNode * uses node containing refine statements */ - public static void performRefine(UsesNodeBuilder usesNode) { - for (RefineHolder refine : usesNode.getRefines()) { - String refineTargetPath = refine.getName(); + public static void performRefine(final UsesNodeBuilder usesNode) { + for (RefineBuilder refine : usesNode.getRefines()) { + String refineTargetPath = refine.getTargetPathString(); String[] splitted = refineTargetPath.split("/"); Builder currentNode = usesNode.getParent(); @@ -199,7 +198,7 @@ public final class GroupingUtils { DataSchemaNodeBuilder nodeToRefine = (DataSchemaNodeBuilder) currentNode; if (nodeToRefine == null) { throw new YangParseException(refine.getModuleName(), refine.getLine(), "Refine target node '" - + refine.getName() + "' not found"); + + refine.getTargetPathString() + "' not found"); } RefineUtils.performRefine(nodeToRefine, refine); usesNode.addRefineNode(nodeToRefine); @@ -208,12 +207,12 @@ public final class GroupingUtils { public static class UsesComparator implements Comparator { @Override - public int compare(UsesNodeBuilder o1, UsesNodeBuilder o2) { + public int compare(final UsesNodeBuilder o1, final UsesNodeBuilder o2) { return getElementPosition(o2) - getElementPosition(o1); } } - private static int getElementPosition(UsesNodeBuilder usesNode) { + private static int getElementPosition(final UsesNodeBuilder usesNode) { int i = 0; Builder parent = usesNode.getParent(); while (!(parent instanceof ModuleBuilder)) { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/IdentitySchemaNodeBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/IdentitySchemaNodeBuilder.java index d084ed0b7f..0b58cf4c05 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/IdentitySchemaNodeBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/IdentitySchemaNodeBuilder.java @@ -7,17 +7,21 @@ */ package org.opendaylight.yangtools.yang.parser.builder.impl; -import com.google.common.collect.ImmutableList; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; + import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractSchemaNodeBuilder; + +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; public final class IdentitySchemaNodeBuilder extends AbstractSchemaNodeBuilder { private IdentitySchemaNodeImpl instance; @@ -28,10 +32,10 @@ public final class IdentitySchemaNodeBuilder extends AbstractSchemaNodeBuilder { IdentitySchemaNodeBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path) { super(moduleName, line, qname); - schemaPath = path; + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); } - IdentitySchemaNodeBuilder(final String moduleName, IdentitySchemaNode base) { + IdentitySchemaNodeBuilder(final String moduleName, final IdentitySchemaNode base) { super(moduleName, 0, base.getQName()); schemaPath = base.getPath(); derivedIdentities.addAll(base.getDerivedIdentities()); @@ -77,7 +81,7 @@ public final class IdentitySchemaNodeBuilder extends AbstractSchemaNodeBuilder { this.baseIdentityBuilder = baseType; } - public void addDerivedIdentity(IdentitySchemaNode derivedIdentity) { + public void addDerivedIdentity(final IdentitySchemaNode derivedIdentity) { if (derivedIdentity != null) { derivedIdentities.add(derivedIdentity); } @@ -155,7 +159,7 @@ public final class IdentitySchemaNodeBuilder extends AbstractSchemaNodeBuilder { } @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) { return true; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/IdentityrefTypeBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/IdentityrefTypeBuilder.java index b791ae8a8c..a76bc1774b 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/IdentityrefTypeBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/IdentityrefTypeBuilder.java @@ -19,10 +19,13 @@ import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; import org.opendaylight.yangtools.yang.model.util.BaseTypes; import org.opendaylight.yangtools.yang.model.util.IdentityrefType; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractTypeAwareBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractTypeAwareBuilder; import org.opendaylight.yangtools.yang.parser.util.YangParseException; +import com.google.common.base.Preconditions; + /** * Builder for YANG identityref type. */ @@ -37,7 +40,8 @@ public final class IdentityrefTypeBuilder extends AbstractTypeAwareBuilder imple final SchemaPath schemaPath) { super(moduleName, line, BaseTypes.constructQName(NAME)); this.baseString = baseString; - this.schemaPath = schemaPath; + this.schemaPath = Preconditions.checkNotNull(schemaPath, "Schema Path must not be null"); + } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/LeafListSchemaNodeBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/LeafListSchemaNodeBuilder.java index 8234ec6782..445f9221c3 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/LeafListSchemaNodeBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/LeafListSchemaNodeBuilder.java @@ -16,8 +16,10 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractTypeAwareBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.ConstraintsBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractTypeAwareBuilder; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -38,15 +40,15 @@ public final class LeafListSchemaNodeBuilder extends AbstractTypeAwareBuilder im public LeafListSchemaNodeBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path) { super(moduleName, line, qname); - this.schemaPath = path; - constraints = new ConstraintsBuilder(moduleName, line); + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); + constraints = new ConstraintsBuilderImpl(moduleName, line); } public LeafListSchemaNodeBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path, final LeafListSchemaNode base) { super(moduleName, line, qname); - schemaPath = path; - constraints = new ConstraintsBuilder(moduleName, line, base.getConstraints()); + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); + constraints = new ConstraintsBuilderImpl(moduleName, line, base.getConstraints()); description = base.getDescription(); reference = base.getReference(); @@ -73,7 +75,7 @@ public final class LeafListSchemaNodeBuilder extends AbstractTypeAwareBuilder im instance.augmenting = augmenting; instance.addedByUses = addedByUses; instance.configuration = configuration; - instance.constraintsDef = constraints.build(); + instance.constraintsDef = constraints.toInstance(); instance.userOrdered = userOrdered; if (type == null) { @@ -97,7 +99,7 @@ public final class LeafListSchemaNodeBuilder extends AbstractTypeAwareBuilder im } @Override - public void setPath(SchemaPath path) { + public void setPath(final SchemaPath path) { this.schemaPath = path; } @@ -127,7 +129,7 @@ public final class LeafListSchemaNodeBuilder extends AbstractTypeAwareBuilder im } @Override - public void setStatus(Status status) { + public void setStatus(final Status status) { this.status = Preconditions.checkNotNull(status, "status cannot be null"); } @@ -137,7 +139,7 @@ public final class LeafListSchemaNodeBuilder extends AbstractTypeAwareBuilder im } @Override - public void setAugmenting(boolean augmenting) { + public void setAugmenting(final boolean augmenting) { this.augmenting = augmenting; } @@ -157,7 +159,7 @@ public final class LeafListSchemaNodeBuilder extends AbstractTypeAwareBuilder im } @Override - public void setConfiguration(boolean configuration) { + public void setConfiguration(final boolean configuration) { this.configuration = configuration; } @@ -183,7 +185,7 @@ public final class LeafListSchemaNodeBuilder extends AbstractTypeAwareBuilder im } @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) { return true; } @@ -305,7 +307,7 @@ public final class LeafListSchemaNodeBuilder extends AbstractTypeAwareBuilder im } @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) { return true; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/LeafSchemaNodeBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/LeafSchemaNodeBuilder.java index 318f5465ab..8e1e905305 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/LeafSchemaNodeBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/LeafSchemaNodeBuilder.java @@ -16,8 +16,10 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractTypeAwareBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.ConstraintsBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractTypeAwareBuilder; import org.opendaylight.yangtools.yang.parser.util.YangParseException; import com.google.common.base.Preconditions; @@ -40,14 +42,14 @@ public final class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implem public LeafSchemaNodeBuilder(final String moduleName, final int line, final QName qname, final SchemaPath schemaPath) { super(moduleName, line, qname); - this.schemaPath = schemaPath; - constraints = new ConstraintsBuilder(moduleName, line); + this.schemaPath = Preconditions.checkNotNull(schemaPath, "Schema Path must not be null"); + constraints = new ConstraintsBuilderImpl(moduleName, line); } - public LeafSchemaNodeBuilder(String moduleName, int line, QName qname, SchemaPath path, LeafSchemaNode base) { + public LeafSchemaNodeBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path, final LeafSchemaNode base) { super(moduleName, line, qname); - this.schemaPath = path; - constraints = new ConstraintsBuilder(moduleName, line, base.getConstraints()); + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); + constraints = new ConstraintsBuilderImpl(moduleName, line, base.getConstraints()); description = base.getDescription(); reference = base.getReference(); @@ -76,7 +78,7 @@ public final class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implem instance.augmenting = augmenting; instance.addedByUses = addedByUses; instance.configuration = configuration; - instance.constraintsDef = constraints.build(); + instance.constraintsDef = constraints.toInstance(); instance.defaultStr = defaultStr; instance.unitsStr = unitsStr; @@ -106,7 +108,7 @@ public final class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implem } @Override - public void setPath(SchemaPath path) { + public void setPath(final SchemaPath path) { this.schemaPath = path; } @@ -141,7 +143,7 @@ public final class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implem } @Override - public void setStatus(Status status) { + public void setStatus(final Status status) { this.status = Preconditions.checkNotNull(status, "status cannot be null"); } @@ -179,7 +181,7 @@ public final class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implem return defaultStr; } - public void setDefaultStr(String defaultStr) { + public void setDefaultStr(final String defaultStr) { this.defaultStr = defaultStr; } @@ -187,7 +189,7 @@ public final class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implem return unitsStr; } - public void setUnits(String unitsStr) { + public void setUnits(final String unitsStr) { this.unitsStr = unitsStr; } @@ -200,7 +202,7 @@ public final class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implem } @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) { return true; } @@ -328,7 +330,7 @@ public final class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implem } @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) { return true; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ListSchemaNodeBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ListSchemaNodeBuilder.java index 4b533284f7..8cff8ec7de 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ListSchemaNodeBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ListSchemaNodeBuilder.java @@ -24,14 +24,15 @@ import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.UsesNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractDataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationTargetBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.ConstraintsBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; -import org.opendaylight.yangtools.yang.parser.util.ParserUtils; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractDataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.util.YangParseException; import com.google.common.base.Preconditions; @@ -60,15 +61,15 @@ public final class ListSchemaNodeBuilder extends AbstractDataNodeContainerBuilde public ListSchemaNodeBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path) { super(moduleName, line, qname); - this.schemaPath = path; - constraints = new ConstraintsBuilder(moduleName, line); + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); + constraints = new ConstraintsBuilderImpl(moduleName, line); } public ListSchemaNodeBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path, final ListSchemaNode base) { super(moduleName, line, qname); - schemaPath = path; - constraints = new ConstraintsBuilder(moduleName, line, base.getConstraints()); + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); + constraints = new ConstraintsBuilderImpl(moduleName, line, base.getConstraints()); keyDefinition = ImmutableList.copyOf(base.getKeyDefinition()); userOrdered = base.isUserOrdered(); @@ -83,10 +84,10 @@ public final class ListSchemaNodeBuilder extends AbstractDataNodeContainerBuilde URI ns = qname.getNamespace(); Date rev = qname.getRevision(); String pref = qname.getPrefix(); - addedChildNodes.addAll(ParserUtils.wrapChildNodes(moduleName, line, base.getChildNodes(), path, ns, rev, pref)); - addedGroupings.addAll(ParserUtils.wrapGroupings(moduleName, line, base.getGroupings(), path, ns, rev, pref)); - addedTypedefs.addAll(ParserUtils.wrapTypedefs(moduleName, line, base, path, ns, rev, pref)); - addedUnknownNodes.addAll(ParserUtils.wrapUnknownNodes(moduleName, line, base.getUnknownSchemaNodes(), path, ns, + addedChildNodes.addAll(BuilderUtils.wrapChildNodes(moduleName, line, base.getChildNodes(), path, ns, rev, pref)); + addedGroupings.addAll(BuilderUtils.wrapGroupings(moduleName, line, base.getGroupings(), path, ns, rev, pref)); + addedTypedefs.addAll(BuilderUtils.wrapTypedefs(moduleName, line, base, path, ns, rev, pref)); + addedUnknownNodes.addAll(BuilderUtils.wrapUnknownNodes(moduleName, line, base.getUnknownSchemaNodes(), path, ns, rev, pref)); augmentations.addAll(base.getAvailableAugmentations()); @@ -107,7 +108,7 @@ public final class ListSchemaNodeBuilder extends AbstractDataNodeContainerBuilde instance.augmenting = augmenting; instance.addedByUses = addedByUses; instance.configuration = configuration; - instance.constraints = constraints.build(); + instance.constraints = constraints.toInstance(); instance.userOrdered = userOrdered; // CHILD NODES diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ModuleBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ModuleBuilder.java index 9650deb85f..a4ab83eeed 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ModuleBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ModuleBuilder.java @@ -1,6 +1,5 @@ /* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * + * 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 @@ -36,19 +35,20 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.UsesNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractDataNodeContainerBuilder; +import org.opendaylight.yangtools.yang.model.util.ModuleImportImpl; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.Builder; import org.opendaylight.yangtools.yang.parser.builder.api.DataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.ExtensionBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.SchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeAwareBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; -import org.opendaylight.yangtools.yang.parser.util.Comparators; -import org.opendaylight.yangtools.yang.parser.util.ModuleImportImpl; -import org.opendaylight.yangtools.yang.parser.util.RefineHolder; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractDataNodeContainerBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.Comparators; import org.opendaylight.yangtools.yang.parser.util.YangParseException; /** @@ -71,7 +71,7 @@ public class ModuleBuilder extends AbstractDataNodeContainerBuilder { private ModuleBuilder parent; @Override - public ModuleBuilder getParent() { + public ModuleBuilder getParent() { return parent; } @@ -110,9 +110,9 @@ public class ModuleBuilder extends AbstractDataNodeContainerBuilder { private final List extensions = new ArrayList<>(); private final List addedExtensions = new ArrayList<>(); - private final List allUnknownNodes = new ArrayList(); + private final List allUnknownNodes = new ArrayList<>(); - private final List allLists = new ArrayList(); + private final List allLists = new ArrayList<>(); private String source; @@ -438,7 +438,7 @@ public class ModuleBuilder extends AbstractDataNodeContainerBuilder { raiseYangParserException("extension", "node", extName, line, addedExtension.getLine()); } } - final ExtensionBuilder builder = new ExtensionBuilder(name, line, qname, path); + final ExtensionBuilder builder = new ExtensionBuilderImpl(name, line, qname, path); builder.setParent(parent); addedExtensions.add(builder); return builder; @@ -586,7 +586,7 @@ public class ModuleBuilder extends AbstractDataNodeContainerBuilder { return usesBuilder; } - public void addRefine(final RefineHolder refine) { + public void addRefine(final RefineHolderImpl refine) { final Builder parent = getActualNode(); if (!(parent instanceof UsesNodeBuilder)) { throw new YangParseException(name, refine.getLine(), "refine can be defined only in uses statement"); @@ -872,9 +872,9 @@ public class ModuleBuilder extends AbstractDataNodeContainerBuilder { allUnknownNodes.add(builder); } - public UnknownSchemaNodeBuilder addUnknownSchemaNode(final int line, final QName qname, final SchemaPath path) { + public UnknownSchemaNodeBuilderImpl addUnknownSchemaNode(final int line, final QName qname, final SchemaPath path) { final Builder parent = getActualNode(); - final UnknownSchemaNodeBuilder builder = new UnknownSchemaNodeBuilder(name, line, qname, path); + final UnknownSchemaNodeBuilderImpl builder = new UnknownSchemaNodeBuilderImpl(name, line, qname, path); builder.setParent(parent); allUnknownNodes.add(builder); @@ -885,8 +885,8 @@ public class ModuleBuilder extends AbstractDataNodeContainerBuilder { ((SchemaNodeBuilder) parent).addUnknownNodeBuilder(builder); } else if (parent instanceof DataNodeContainerBuilder) { ((DataNodeContainerBuilder) parent).addUnknownNodeBuilder(builder); - } else if (parent instanceof RefineHolder) { - ((RefineHolder) parent).addUnknownNodeBuilder(builder); + } else if (parent instanceof RefineHolderImpl) { + ((RefineHolderImpl) parent).addUnknownNodeBuilder(builder); } else { throw new YangParseException(name, line, "Unresolved parent of unknown node '" + qname.getLocalName() + "'"); @@ -1188,7 +1188,7 @@ public class ModuleBuilder extends AbstractDataNodeContainerBuilder { return getChildNode(childNodes, name); } - void setSource(final String source){ + void setSource(final String source) { this.source = source; } @@ -1439,5 +1439,4 @@ public class ModuleBuilder extends AbstractDataNodeContainerBuilder { return true; } - } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/NotificationBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/NotificationBuilder.java index 8d7e4b669e..938bc594ad 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/NotificationBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/NotificationBuilder.java @@ -23,15 +23,15 @@ import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.UsesNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractDataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationTargetBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.SchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; -import org.opendaylight.yangtools.yang.parser.util.ParserUtils; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractDataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.util.YangParseException; import com.google.common.base.Preconditions; @@ -52,12 +52,12 @@ public final class NotificationBuilder extends AbstractDataNodeContainerBuilder NotificationBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path) { super(moduleName, line, qname); - this.schemaPath = path; + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); } NotificationBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path, final NotificationDefinition base) { super(moduleName, line, qname); - this.schemaPath = path; + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); description = base.getDescription(); reference = base.getReference(); @@ -66,10 +66,10 @@ public final class NotificationBuilder extends AbstractDataNodeContainerBuilder URI ns = qname.getNamespace(); Date rev = qname.getRevision(); String pref = qname.getPrefix(); - addedChildNodes.addAll(ParserUtils.wrapChildNodes(moduleName, line, base.getChildNodes(), path, ns, rev, pref)); - addedGroupings.addAll(ParserUtils.wrapGroupings(moduleName, line, base.getGroupings(), path, ns, rev, pref)); - addedTypedefs.addAll(ParserUtils.wrapTypedefs(moduleName, line, base, path, ns, rev, pref)); - addedUnknownNodes.addAll(ParserUtils.wrapUnknownNodes(moduleName, line, base.getUnknownSchemaNodes(), path, ns, + addedChildNodes.addAll(BuilderUtils.wrapChildNodes(moduleName, line, base.getChildNodes(), path, ns, rev, pref)); + addedGroupings.addAll(BuilderUtils.wrapGroupings(moduleName, line, base.getGroupings(), path, ns, rev, pref)); + addedTypedefs.addAll(BuilderUtils.wrapTypedefs(moduleName, line, base, path, ns, rev, pref)); + addedUnknownNodes.addAll(BuilderUtils.wrapUnknownNodes(moduleName, line, base.getUnknownSchemaNodes(), path, ns, rev, pref)); augmentations.addAll(base.getAvailableAugmentations()); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/RefineHolder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/RefineHolderImpl.java similarity index 58% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/RefineHolder.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/RefineHolderImpl.java index d8727bd6ae..1f67963ed2 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/RefineHolder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/RefineHolderImpl.java @@ -5,13 +5,15 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.util; +package org.opendaylight.yangtools.yang.parser.builder.impl; import org.opendaylight.yangtools.yang.model.api.MustDefinition; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractBuilder; +import org.opendaylight.yangtools.yang.model.api.Status; +import org.opendaylight.yangtools.yang.parser.builder.api.RefineBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractBuilder; -public final class RefineHolder extends AbstractBuilder { - private final String name; +public final class RefineHolderImpl extends AbstractBuilder implements RefineBuilder { + private final String targetPathString; private String defaultStr; private String description; private String reference; @@ -22,11 +24,12 @@ public final class RefineHolder extends AbstractBuilder { private Integer minElements; private Integer maxElements; - public RefineHolder(final String moduleName, final int line, final String name) { + public RefineHolderImpl(final String moduleName, final int line, final String name) { super(moduleName, line); - this.name = name; + this.targetPathString = name; } + @Override public String getDefaultStr() { return defaultStr; } @@ -35,79 +38,151 @@ public final class RefineHolder extends AbstractBuilder { this.defaultStr = defaultStr; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IRefineBuilder#getDescription() + */ + @Override public String getDescription() { return description; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IRefineBuilder#setDescription(java.lang.String) + */ + @Override public void setDescription(final String description) { this.description = description; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IRefineBuilder#getReference() + */ + @Override public String getReference() { return reference; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IRefineBuilder#setReference(java.lang.String) + */ + @Override public void setReference(final String reference) { this.reference = reference; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IRefineBuilder#isConfiguration() + */ + @Override public Boolean isConfiguration() { return config; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IRefineBuilder#setConfiguration(java.lang.Boolean) + */ + @Override public void setConfiguration(final Boolean config) { this.config = config; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IRefineBuilder#isMandatory() + */ + @Override public Boolean isMandatory() { return mandatory; } - public void setMandatory(Boolean mandatory) { + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IRefineBuilder#setMandatory(java.lang.Boolean) + */ + @Override + public void setMandatory(final Boolean mandatory) { this.mandatory = mandatory; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IRefineBuilder#isPresence() + */ + @Override public Boolean isPresence() { return presence; } - public void setPresence(Boolean presence) { + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IRefineBuilder#setPresence(java.lang.Boolean) + */ + @Override + public void setPresence(final Boolean presence) { this.presence = presence; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IRefineBuilder#getMust() + */ + @Override public MustDefinition getMust() { return must; } - public void setMust(MustDefinition must) { + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IRefineBuilder#setMust(org.opendaylight.yangtools.yang.model.api.MustDefinition) + */ + @Override + public void setMust(final MustDefinition must) { this.must = must; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IRefineBuilder#getMinElements() + */ + @Override public Integer getMinElements() { return minElements; } - public void setMinElements(Integer minElements) { + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IRefineBuilder#setMinElements(java.lang.Integer) + */ + @Override + public void setMinElements(final Integer minElements) { this.minElements = minElements; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IRefineBuilder#getMaxElements() + */ + @Override public Integer getMaxElements() { return maxElements; } - public void setMaxElements(Integer maxElements) { + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IRefineBuilder#setMaxElements(java.lang.Integer) + */ + @Override + public void setMaxElements(final Integer maxElements) { this.maxElements = maxElements; } - public String getName() { - return name; + @Override + public String toString() { + return "refine " + targetPathString; } @Override - public Object build() { + public Status getStatus() { + // TODO Auto-generated method stub return null; } + @Override + public void setStatus(final Status status) { + // TODO Auto-generated method stub + + } + @Override public int hashCode() { final int prime = 31; @@ -120,7 +195,7 @@ public final class RefineHolder extends AbstractBuilder { result = prime * result + ((maxElements == null) ? 0 : maxElements.hashCode()); result = prime * result + ((minElements == null) ? 0 : minElements.hashCode()); result = prime * result + ((must == null) ? 0 : must.hashCode()); - result = prime * result + ((name == null) ? 0 : name.hashCode()); + result = prime * result + ((targetPathString == null) ? 0 : targetPathString.hashCode()); result = prime * result + ((getParent() == null) ? 0 : getParent().hashCode()); result = prime * result + ((presence == null) ? 0 : presence.hashCode()); result = prime * result + ((reference == null) ? 0 : reference.hashCode()); @@ -128,7 +203,7 @@ public final class RefineHolder extends AbstractBuilder { } @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) { return true; } @@ -138,7 +213,7 @@ public final class RefineHolder extends AbstractBuilder { if (getClass() != obj.getClass()) { return false; } - RefineHolder other = (RefineHolder) obj; + RefineHolderImpl other = (RefineHolderImpl) obj; if (addedUnknownNodes == null) { if (other.addedUnknownNodes != null) { return false; @@ -195,11 +270,11 @@ public final class RefineHolder extends AbstractBuilder { } else if (!must.equals(other.must)) { return false; } - if (name == null) { - if (other.name != null) { + if (targetPathString == null) { + if (other.targetPathString != null) { return false; } - } else if (!name.equals(other.name)) { + } else if (!targetPathString.equals(other.targetPathString)) { return false; } if (getParent() == null) { @@ -226,9 +301,20 @@ public final class RefineHolder extends AbstractBuilder { return true; } + + @Override - public String toString() { - return "refine " + name; + public Object build() { + // FIXME: Currently RefineBuilder.build() is not used + // build should returned refined element, so + // whole refine process is encapsulated in this refinement + // statement. + return null; + } + + @Override + public String getTargetPathString() { + return targetPathString; } } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/RefineUtils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/RefineUtils.java similarity index 85% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/RefineUtils.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/RefineUtils.java index 00b95cb372..bfc4928bf3 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/RefineUtils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/RefineUtils.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.util; +package org.opendaylight.yangtools.yang.parser.builder.impl; import java.lang.reflect.Method; import java.util.List; @@ -13,16 +13,12 @@ import java.util.List; import org.opendaylight.yangtools.yang.model.api.MustDefinition; import org.opendaylight.yangtools.yang.parser.builder.api.Builder; import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.RefineBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.SchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.AnyXmlBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ChoiceBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ContainerSchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.LeafListSchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.LeafSchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ListSchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.util.YangParseException; /** * Utility class with helper methods to perform operations tied to refine @@ -33,7 +29,7 @@ public final class RefineUtils { private RefineUtils() { } - public static void refineLeaf(LeafSchemaNodeBuilder leaf, RefineHolder refine) { + public static void refineLeaf(final LeafSchemaNodeBuilder leaf, final RefineBuilder refine) { String defaultStr = refine.getDefaultStr(); Boolean mandatory = refine.isMandatory(); MustDefinition must = refine.getMust(); @@ -56,7 +52,7 @@ public final class RefineUtils { } } - public static void refineContainer(ContainerSchemaNodeBuilder container, RefineHolder refine) { + public static void refineContainer(final ContainerSchemaNodeBuilder container, final RefineBuilder refine) { Boolean presence = refine.isPresence(); MustDefinition must = refine.getMust(); List unknownNodes = refine.getUnknownNodes(); @@ -75,7 +71,7 @@ public final class RefineUtils { } } - public static void refineList(ListSchemaNodeBuilder list, RefineHolder refine) { + public static void refineList(final ListSchemaNodeBuilder list, final RefineBuilder refine) { MustDefinition must = refine.getMust(); Integer min = refine.getMinElements(); Integer max = refine.getMaxElements(); @@ -98,7 +94,7 @@ public final class RefineUtils { } } - public static void refineLeafList(LeafListSchemaNodeBuilder leafList, RefineHolder refine) { + public static void refineLeafList(final LeafListSchemaNodeBuilder leafList, final RefineBuilder refine) { MustDefinition must = refine.getMust(); Integer min = refine.getMinElements(); Integer max = refine.getMaxElements(); @@ -121,7 +117,7 @@ public final class RefineUtils { } } - public static void refineChoice(ChoiceBuilder choice, RefineHolder refine) { + public static void refineChoice(final ChoiceBuilder choice, final RefineBuilder refine) { String defaultStr = refine.getDefaultStr(); Boolean mandatory = refine.isMandatory(); List unknownNodes = refine.getUnknownNodes(); @@ -140,7 +136,7 @@ public final class RefineUtils { } } - public static void refineAnyxml(AnyXmlBuilder anyXml, RefineHolder refine) { + public static void refineAnyxml(final AnyXmlBuilder anyXml, final RefineBuilder refine) { Boolean mandatory = refine.isMandatory(); MustDefinition must = refine.getMust(); List unknownNodes = refine.getUnknownNodes(); @@ -167,7 +163,7 @@ public final class RefineUtils { * @param refine * refine object containing information about refine process */ - private static void checkRefine(SchemaNodeBuilder node, RefineHolder refine) { + private static void checkRefine(final SchemaNodeBuilder node, final RefineBuilder refine) { String moduleName = refine.getModuleName(); int line = refine.getLine(); String name = node.getQName().getLocalName(); @@ -209,35 +205,35 @@ public final class RefineUtils { } } - private static void checkRefineDefault(SchemaNodeBuilder node, String defaultStr, String moduleName, int line) { + private static void checkRefineDefault(final SchemaNodeBuilder node, final String defaultStr, final String moduleName, final int line) { if (defaultStr != null) { throw new YangParseException(moduleName, line, "Can not refine 'default' for '" + node.getQName().getLocalName() + "'."); } } - private static void checkRefineMandatory(SchemaNodeBuilder node, Boolean mandatory, String moduleName, int line) { + private static void checkRefineMandatory(final SchemaNodeBuilder node, final Boolean mandatory, final String moduleName, final int line) { if (mandatory != null) { throw new YangParseException(moduleName, line, "Can not refine 'mandatory' for '" + node.getQName().getLocalName() + "'."); } } - private static void checkRefinePresence(SchemaNodeBuilder node, Boolean presence, String moduleName, int line) { + private static void checkRefinePresence(final SchemaNodeBuilder node, final Boolean presence, final String moduleName, final int line) { if (presence != null) { throw new YangParseException(moduleName, line, "Can not refine 'presence' for '" + node.getQName().getLocalName() + "'."); } } - private static void checkRefineMust(SchemaNodeBuilder node, MustDefinition must, String moduleName, int line) { + private static void checkRefineMust(final SchemaNodeBuilder node, final MustDefinition must, final String moduleName, final int line) { if (must != null) { throw new YangParseException(moduleName, line, "Can not refine 'must' for '" + node.getQName().getLocalName() + "'."); } } - private static void checkRefineMinMax(String refineTargetName, Integer min, Integer max, String moduleName, int line) { + private static void checkRefineMinMax(final String refineTargetName, final Integer min, final Integer max, final String moduleName, final int line) { if (min != null || max != null) { throw new YangParseException(moduleName, line, "Can not refine 'min-elements' or 'max-elements' for '" + refineTargetName + "'."); @@ -259,7 +255,7 @@ public final class RefineUtils { * @param refine * refine object containing information about refine process */ - private static void refineDefault(final Builder node, final RefineHolder refine) { + private static void refineDefault(final Builder node, final RefineBuilder refine) { final String moduleName = refine.getModuleName(); final int line = refine.getLine(); Class cls = node.getClass(); @@ -303,7 +299,7 @@ public final class RefineUtils { * @param refine * refine object containing information about refine process */ - static void performRefine(SchemaNodeBuilder nodeToRefine, RefineHolder refine) { + static void performRefine(final SchemaNodeBuilder nodeToRefine, final RefineBuilder refine) { checkRefine(nodeToRefine, refine); refineDefault(nodeToRefine, refine); if (nodeToRefine instanceof LeafSchemaNodeBuilder) { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/RpcDefinitionBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/RpcDefinitionBuilder.java index 2be0209ac5..bbcb262358 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/RpcDefinitionBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/RpcDefinitionBuilder.java @@ -20,11 +20,13 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; -import org.opendaylight.yangtools.yang.parser.util.Comparators; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.Comparators; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; @@ -45,7 +47,7 @@ public final class RpcDefinitionBuilder extends AbstractSchemaNodeBuilder { RpcDefinitionBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path) { super(moduleName, line, qname); - this.schemaPath = path; + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/TypeDefinitionBuilderImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/TypeDefinitionBuilderImpl.java index 94987086ba..66bd8e0089 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/TypeDefinitionBuilderImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/TypeDefinitionBuilderImpl.java @@ -11,15 +11,22 @@ import java.util.Collections; import java.util.List; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.*; -import org.opendaylight.yangtools.yang.model.api.type.*; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.Status; +import org.opendaylight.yangtools.yang.model.api.TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint; +import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint; +import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; import org.opendaylight.yangtools.yang.model.util.ExtendedType; import org.opendaylight.yangtools.yang.model.util.UnknownType; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractTypeAwareBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; -import org.opendaylight.yangtools.yang.parser.util.Comparators; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractTypeAwareBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.Comparators; import org.opendaylight.yangtools.yang.parser.util.YangParseException; +import com.google.common.base.Preconditions; + public final class TypeDefinitionBuilderImpl extends AbstractTypeAwareBuilder implements TypeDefinitionBuilder { private SchemaPath schemaPath; private List ranges = Collections.emptyList(); @@ -36,12 +43,12 @@ public final class TypeDefinitionBuilderImpl extends AbstractTypeAwareBuilder im public TypeDefinitionBuilderImpl(final String moduleName, final int line, final QName qname, final SchemaPath path) { super(moduleName, line, qname); - this.schemaPath = path; + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); } public TypeDefinitionBuilderImpl(final String moduleName, final int line, final QName qname, final SchemaPath path, final ExtendedType base) { super(moduleName, line, base.getQName()); - this.schemaPath = path; + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); this.type = base.getBaseType(); this.description = base.getDescription(); @@ -91,7 +98,7 @@ public final class TypeDefinitionBuilderImpl extends AbstractTypeAwareBuilder im } @Override - public void setQName(QName qname) { + public void setQName(final QName qname) { this.qname = qname; } @@ -101,7 +108,7 @@ public final class TypeDefinitionBuilderImpl extends AbstractTypeAwareBuilder im } @Override - public void setPath(SchemaPath path) { + public void setPath(final SchemaPath path) { this.schemaPath = path; } @@ -233,7 +240,7 @@ public final class TypeDefinitionBuilderImpl extends AbstractTypeAwareBuilder im } @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) { return true; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/TypeUtils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/TypeUtils.java similarity index 97% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/TypeUtils.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/TypeUtils.java index 16983c77f3..f430a9c1a6 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/TypeUtils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/TypeUtils.java @@ -5,10 +5,10 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.util; +package org.opendaylight.yangtools.yang.parser.builder.impl; -import static org.opendaylight.yangtools.yang.parser.util.ParserUtils.findModuleFromBuilders; -import static org.opendaylight.yangtools.yang.parser.util.ParserUtils.findModuleFromContext; +import static org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils.findModuleFromBuilders; +import static org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils.findModuleFromContext; import java.util.*; @@ -19,6 +19,8 @@ import org.opendaylight.yangtools.yang.model.util.ExtendedType; import org.opendaylight.yangtools.yang.model.util.UnknownType; import org.opendaylight.yangtools.yang.parser.builder.api.*; import org.opendaylight.yangtools.yang.parser.builder.impl.*; +import org.opendaylight.yangtools.yang.parser.util.TypeConstraints; +import org.opendaylight.yangtools.yang.parser.util.YangParseException; /** * Utility class which contains helper methods for dealing with type operations. @@ -416,14 +418,14 @@ public final class TypeUtils { } else { QName qname = type.getQName(); if (type instanceof UnknownType) { - ModuleBuilder dependentModuleBuilder = ParserUtils.findModuleFromBuilders(modules, builder, + ModuleBuilder dependentModuleBuilder = BuilderUtils.findModuleFromBuilders(modules, builder, qname.getPrefix(), nodeToResolve.getLine()); if (dependentModuleBuilder == null) { if (context == null) { throw new YangParseException(builder.getName(), nodeToResolve.getLine(), "Failed to resolved type constraints."); } - Module dm = ParserUtils.findModuleFromContext(context, builder, qname.getPrefix(), + Module dm = BuilderUtils.findModuleFromContext(context, builder, qname.getPrefix(), nodeToResolve.getLine()); TypeDefinition t = findTypeByName(dm.getTypeDefinitions(), qname.getLocalName()); return mergeConstraints(t, constraints); @@ -438,7 +440,7 @@ public final class TypeUtils { TypeDefinition base = ((ExtendedType) type).getBaseType(); if (base instanceof UnknownType) { - ModuleBuilder dependentModule = ParserUtils.findModuleFromBuilders(modules, builder, base + ModuleBuilder dependentModule = BuilderUtils.findModuleFromBuilders(modules, builder, base .getQName().getPrefix(), nodeToResolve.getLine()); TypeDefinitionBuilder tdb = findTypeDefinitionBuilder(nodeToResolve, dependentModule, base .getQName().getLocalName(), builder.getName(), nodeToResolve.getLine()); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UnionTypeBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UnionTypeBuilder.java index 620022d3fe..f46ebeb970 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UnionTypeBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UnionTypeBuilder.java @@ -20,8 +20,9 @@ import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; import org.opendaylight.yangtools.yang.model.util.BaseTypes; import org.opendaylight.yangtools.yang.model.util.UnionType; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractTypeAwareBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractTypeAwareBuilder; import org.opendaylight.yangtools.yang.parser.util.YangParseException; /** diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UnknownSchemaNodeBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UnknownSchemaNodeBuilderImpl.java similarity index 73% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UnknownSchemaNodeBuilder.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UnknownSchemaNodeBuilderImpl.java index 9cd53f2b3b..63f958c997 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UnknownSchemaNodeBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UnknownSchemaNodeBuilderImpl.java @@ -16,10 +16,14 @@ import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractSchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.util.Comparators; +import org.opendaylight.yangtools.yang.parser.builder.api.ExtensionBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.util.Comparators; -public final class UnknownSchemaNodeBuilder extends AbstractSchemaNodeBuilder { +import com.google.common.base.Preconditions; + +public final class UnknownSchemaNodeBuilderImpl extends AbstractSchemaNodeBuilder implements UnknownSchemaNodeBuilder { private boolean isBuilt; private final UnknownSchemaNodeImpl instance; private QName nodeType; @@ -28,15 +32,15 @@ public final class UnknownSchemaNodeBuilder extends AbstractSchemaNodeBuilder { private ExtensionDefinition extensionDefinition; private ExtensionBuilder extensionBuilder; - public UnknownSchemaNodeBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path) { + public UnknownSchemaNodeBuilderImpl(final String moduleName, final int line, final QName qname, final SchemaPath path) { super(moduleName, line, qname); - this.schemaPath = path; + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); instance = new UnknownSchemaNodeImpl(qname, path); } - public UnknownSchemaNodeBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path, final UnknownSchemaNode base) { + public UnknownSchemaNodeBuilderImpl(final String moduleName, final int line, final QName qname, final SchemaPath path, final UnknownSchemaNode base) { super(moduleName, line, base.getQName()); - this.schemaPath = path; + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); instance = new UnknownSchemaNodeImpl(qname, path); instance.nodeType = base.getNodeType(); @@ -49,6 +53,9 @@ public final class UnknownSchemaNodeBuilder extends AbstractSchemaNodeBuilder { instance.unknownNodes.addAll(base.getUnknownSchemaNodes()); } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IUnkownSchemaNodeBuilder#getPath() + */ @Override public SchemaPath getPath() { return instance.path; @@ -66,7 +73,7 @@ public final class UnknownSchemaNodeBuilder extends AbstractSchemaNodeBuilder { } @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) { return true; } @@ -76,7 +83,7 @@ public final class UnknownSchemaNodeBuilder extends AbstractSchemaNodeBuilder { if (getClass() != obj.getClass()) { return false; } - UnknownSchemaNodeBuilder other = (UnknownSchemaNodeBuilder) obj; + UnknownSchemaNodeBuilderImpl other = (UnknownSchemaNodeBuilderImpl) obj; if (qname == null) { if (other.qname != null) { return false; @@ -108,6 +115,9 @@ public final class UnknownSchemaNodeBuilder extends AbstractSchemaNodeBuilder { return true; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IUnkownSchemaNodeBuilder#build() + */ @Override public UnknownSchemaNode build() { if (!isBuilt) { @@ -136,6 +146,9 @@ public final class UnknownSchemaNodeBuilder extends AbstractSchemaNodeBuilder { return instance; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IUnkownSchemaNodeBuilder#getDescription() + */ @Override public String getDescription() { return instance.description; @@ -146,64 +159,113 @@ public final class UnknownSchemaNodeBuilder extends AbstractSchemaNodeBuilder { instance.description = description; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IUnkownSchemaNodeBuilder#getReference() + */ @Override public String getReference() { return instance.reference; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IUnkownSchemaNodeBuilder#setReference(java.lang.String) + */ @Override public void setReference(final String reference) { instance.reference = reference; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IUnkownSchemaNodeBuilder#getStatus() + */ @Override public Status getStatus() { return instance.status; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IUnkownSchemaNodeBuilder#setStatus(org.opendaylight.yangtools.yang.model.api.Status) + */ @Override - public void setStatus(Status status) { + public void setStatus(final Status status) { if (status != null) { instance.status = status; } } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IUnkownSchemaNodeBuilder#isAddedByUses() + */ + @Override public boolean isAddedByUses() { return instance.addedByUses; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IUnkownSchemaNodeBuilder#setAddedByUses(boolean) + */ + @Override public void setAddedByUses(final boolean addedByUses) { instance.addedByUses = addedByUses; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IUnkownSchemaNodeBuilder#getNodeType() + */ + @Override public QName getNodeType() { return nodeType; } + @Override public void setNodeType(final QName nodeType) { this.nodeType = nodeType; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IUnkownSchemaNodeBuilder#getNodeParameter() + */ + @Override public String getNodeParameter() { return nodeParameter; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IUnkownSchemaNodeBuilder#setNodeParameter(java.lang.String) + */ + @Override public void setNodeParameter(final String nodeParameter) { this.nodeParameter = nodeParameter; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IUnkownSchemaNodeBuilder#getExtensionDefinition() + */ + @Override public ExtensionDefinition getExtensionDefinition() { return extensionDefinition; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IUnkownSchemaNodeBuilder#setExtensionDefinition(org.opendaylight.yangtools.yang.model.api.ExtensionDefinition) + */ + @Override public void setExtensionDefinition(final ExtensionDefinition extensionDefinition) { this.extensionDefinition = extensionDefinition; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IUnkownSchemaNodeBuilder#getExtensionBuilder() + */ + @Override public ExtensionBuilder getExtensionBuilder() { return extensionBuilder; } + /* (non-Javadoc) + * @see org.opendaylight.yangtools.yang.parser.builder.impl.IUnkownSchemaNodeBuilder#setExtensionBuilder(org.opendaylight.yangtools.yang.parser.builder.impl.ExtensionBuilder) + */ + @Override public void setExtensionBuilder(final ExtensionBuilder extension) { this.extensionBuilder = extension; } @@ -327,7 +389,7 @@ public final class UnknownSchemaNodeBuilder extends AbstractSchemaNodeBuilder { } @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) { return true; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UsesNodeBuilderImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UsesNodeBuilderImpl.java index f038e23633..7a6dceb4ff 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UsesNodeBuilderImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UsesNodeBuilderImpl.java @@ -20,15 +20,16 @@ import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.UsesNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.Builder; import org.opendaylight.yangtools.yang.parser.builder.api.DataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.RefineBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.SchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; -import org.opendaylight.yangtools.yang.parser.util.RefineHolder; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractBuilder; import org.opendaylight.yangtools.yang.parser.util.YangParseException; import com.google.common.collect.ImmutableList; @@ -47,7 +48,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo private boolean resolved; private final Set augmentationBuilders = new HashSet<>(); private final List refineBuilders = new ArrayList<>(); - private final List refines = new ArrayList<>(); + private final List refines = new ArrayList<>(); public UsesNodeBuilderImpl(final String moduleName, final int line, final String groupingName) { super(moduleName, line); @@ -188,12 +189,12 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo } @Override - public List getRefines() { + public List getRefines() { return refines; } @Override - public void addRefine(final RefineHolder refine) { + public void addRefine(final RefineBuilder refine) { refines.add(refine); } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/AbstractBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/util/AbstractBuilder.java similarity index 85% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/AbstractBuilder.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/util/AbstractBuilder.java index de795220a8..35b869be6b 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/AbstractBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/util/AbstractBuilder.java @@ -5,13 +5,14 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.builder.api; +package org.opendaylight.yangtools.yang.parser.builder.util; import java.util.ArrayList; import java.util.List; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.parser.builder.impl.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.Builder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; import com.google.common.base.Preconditions; @@ -64,7 +65,7 @@ public abstract class AbstractBuilder implements Builder { } @Override - public void addUnknownNodeBuilder(UnknownSchemaNodeBuilder unknownNode) { + public void addUnknownNodeBuilder(final UnknownSchemaNodeBuilder unknownNode) { addedUnknownNodes.add(unknownNode); } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/AbstractDataNodeContainerBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/util/AbstractDataNodeContainerBuilder.java similarity index 92% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/AbstractDataNodeContainerBuilder.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/util/AbstractDataNodeContainerBuilder.java index ebb12dbc00..4c7b07fd3c 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/AbstractDataNodeContainerBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/util/AbstractDataNodeContainerBuilder.java @@ -4,7 +4,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.builder.api; +package org.opendaylight.yangtools.yang.parser.builder.util; import java.util.Collections; import java.util.HashSet; @@ -18,7 +18,11 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UsesNode; -import org.opendaylight.yangtools.yang.parser.util.Comparators; +import org.opendaylight.yangtools.yang.parser.builder.api.DataNodeContainerBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; import org.opendaylight.yangtools.yang.parser.util.YangParseException; /** diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/AbstractSchemaNodeBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/util/AbstractSchemaNodeBuilder.java similarity index 95% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/AbstractSchemaNodeBuilder.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/util/AbstractSchemaNodeBuilder.java index 3c66869c1f..e5902cafda 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/AbstractSchemaNodeBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/util/AbstractSchemaNodeBuilder.java @@ -5,11 +5,12 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.builder.api; +package org.opendaylight.yangtools.yang.parser.builder.util; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; +import org.opendaylight.yangtools.yang.parser.builder.api.SchemaNodeBuilder; import com.google.common.base.Preconditions; diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/AbstractTypeAwareBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/util/AbstractTypeAwareBuilder.java similarity index 86% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/AbstractTypeAwareBuilder.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/util/AbstractTypeAwareBuilder.java index 88d164d538..5ab95ce6b4 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/api/AbstractTypeAwareBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/util/AbstractTypeAwareBuilder.java @@ -5,10 +5,12 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.builder.api; +package org.opendaylight.yangtools.yang.parser.builder.util; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; +import org.opendaylight.yangtools.yang.parser.builder.api.TypeAwareBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; /** * Basic implementation for TypeAwareBuilder builders. diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/Comparators.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/util/Comparators.java similarity index 84% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/Comparators.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/util/Comparators.java index ed3ddd6aff..c22826c80c 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/Comparators.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/util/Comparators.java @@ -5,9 +5,10 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.util; +package org.opendaylight.yangtools.yang.parser.builder.util; import java.util.Comparator; + import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder; @@ -21,6 +22,7 @@ public final class Comparators { /** * Comparator based on augment target path length. */ + @Deprecated public static final AugmentComparator AUGMENT_COMP = new AugmentComparator(); private Comparators() { @@ -28,14 +30,14 @@ public final class Comparators { private static final class SchemaNodeComparator implements Comparator { @Override - public int compare(SchemaNode o1, SchemaNode o2) { + public int compare(final SchemaNode o1, final SchemaNode o2) { return o1.getQName().compareTo(o2.getQName()); } } private static final class AugmentComparator implements Comparator { @Override - public int compare(AugmentationSchemaBuilder o1, AugmentationSchemaBuilder o2) { + public int compare(final AugmentationSchemaBuilder o1, final AugmentationSchemaBuilder o2) { return o1.getTargetPath().getPath().size() - o2.getTargetPath().getPath().size(); } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/validator/BasicValidations.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/BasicValidations.java similarity index 99% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/validator/BasicValidations.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/BasicValidations.java index 5be3369791..46f4f8ebf5 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/validator/BasicValidations.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/BasicValidations.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/eplv10.html */ -package org.opendaylight.yangtools.yang.validator; +package org.opendaylight.yangtools.yang.parser.impl; import java.text.ParseException; import java.util.Date; diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/GroupingSort.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/GroupingSort.java similarity index 97% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/GroupingSort.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/GroupingSort.java index fb473dfe81..45c4bd9cfe 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/GroupingSort.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/GroupingSort.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.util; +package org.opendaylight.yangtools.yang.parser.impl; import java.util.ArrayList; import java.util.Collection; @@ -22,6 +22,8 @@ import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.ChoiceBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.ChoiceCaseBuilder; +import org.opendaylight.yangtools.yang.parser.util.NodeWrappedType; +import org.opendaylight.yangtools.yang.parser.util.TopologicalSort; import org.opendaylight.yangtools.yang.parser.util.TopologicalSort.Node; import com.google.common.collect.Maps; diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ParserListenerUtils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/ParserListenerUtils.java similarity index 97% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ParserListenerUtils.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/ParserListenerUtils.java index c4e79e6710..69ca39668c 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ParserListenerUtils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/ParserListenerUtils.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/eplv10.html */ -package org.opendaylight.yangtools.yang.parser.util; +package org.opendaylight.yangtools.yang.parser.impl; import static com.google.common.base.Preconditions.checkState; @@ -98,6 +98,7 @@ import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinit import org.opendaylight.yangtools.yang.model.util.BaseConstraints; import org.opendaylight.yangtools.yang.model.util.BaseTypes; import org.opendaylight.yangtools.yang.model.util.BinaryType; +import org.opendaylight.yangtools.yang.model.util.BitImpl; import org.opendaylight.yangtools.yang.model.util.BitsType; import org.opendaylight.yangtools.yang.model.util.Decimal64; import org.opendaylight.yangtools.yang.model.util.EnumerationType; @@ -108,6 +109,7 @@ import org.opendaylight.yangtools.yang.model.util.Int32; import org.opendaylight.yangtools.yang.model.util.Int64; import org.opendaylight.yangtools.yang.model.util.Int8; import org.opendaylight.yangtools.yang.model.util.Leafref; +import org.opendaylight.yangtools.yang.model.util.MustDefinitionImpl; import org.opendaylight.yangtools.yang.model.util.RevisionAwareXPathImpl; import org.opendaylight.yangtools.yang.model.util.StringType; import org.opendaylight.yangtools.yang.model.util.Uint16; @@ -117,11 +119,16 @@ import org.opendaylight.yangtools.yang.model.util.Uint8; import org.opendaylight.yangtools.yang.model.util.UnknownType; import org.opendaylight.yangtools.yang.parser.builder.api.Builder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.ConstraintsBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.RefineBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.SchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.ChoiceCaseBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ConstraintsBuilder; +import org.opendaylight.yangtools.yang.parser.builder.impl.RefineHolderImpl; import org.opendaylight.yangtools.yang.parser.builder.impl.UnionTypeBuilder; +import org.opendaylight.yangtools.yang.parser.util.TypeConstraints; +import org.opendaylight.yangtools.yang.parser.util.UnknownBoundaryNumber; +import org.opendaylight.yangtools.yang.parser.util.YangParseException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -1519,9 +1526,9 @@ public final class ParserListenerUtils { * name of current module * @return RefineHolder object representing this refine statement */ - public static RefineHolder parseRefine(final Refine_stmtContext refineCtx, final String moduleName) { + public static RefineHolderImpl parseRefine(final Refine_stmtContext refineCtx, final String moduleName) { final String refineTarget = stringFromNode(refineCtx); - final RefineHolder refine = new RefineHolder(moduleName, refineCtx.getStart().getLine(), refineTarget); + final RefineHolderImpl refine = new RefineHolderImpl(moduleName, refineCtx.getStart().getLine(), refineTarget); for (int i = 0; i < refineCtx.getChildCount(); i++) { ParseTree refinePom = refineCtx.getChild(i); if (refinePom instanceof Refine_pomContext) { @@ -1548,7 +1555,7 @@ public final class ParserListenerUtils { return refine; } - private static void parseRefineDefault(final RefineHolder refine, final ParseTree refineStmt) { + private static void parseRefineDefault(final RefineHolderImpl refine, final ParseTree refineStmt) { for (int i = 0; i < refineStmt.getChildCount(); i++) { ParseTree refineArg = refineStmt.getChild(i); if (refineArg instanceof Description_stmtContext) { @@ -1564,7 +1571,7 @@ public final class ParserListenerUtils { } } - private static RefineHolder parseRefine(final RefineHolder refine, final Refine_leaf_stmtsContext refineStmt) { + private static RefineBuilder parseRefine(final RefineHolderImpl refine, final Refine_leaf_stmtsContext refineStmt) { for (int i = 0; i < refineStmt.getChildCount(); i++) { ParseTree refineArg = refineStmt.getChild(i); if (refineArg instanceof Default_stmtContext) { @@ -1587,7 +1594,7 @@ public final class ParserListenerUtils { return refine; } - private static RefineHolder parseRefine(final RefineHolder refine, final Refine_container_stmtsContext refineStmt) { + private static RefineBuilder parseRefine(final RefineBuilder refine, final Refine_container_stmtsContext refineStmt) { for (int i = 0; i < refineStmt.getChildCount(); i++) { ParseTree refineArg = refineStmt.getChild(i); if (refineArg instanceof Must_stmtContext) { @@ -1600,7 +1607,7 @@ public final class ParserListenerUtils { return refine; } - private static RefineHolder parseRefine(final RefineHolder refine, final Refine_list_stmtsContext refineStmt) { + private static RefineBuilder parseRefine(final RefineHolderImpl refine, final Refine_list_stmtsContext refineStmt) { for (int i = 0; i < refineStmt.getChildCount(); i++) { ParseTree refineArg = refineStmt.getChild(i); if (refineArg instanceof Must_stmtContext) { @@ -1617,7 +1624,7 @@ public final class ParserListenerUtils { return refine; } - private static RefineHolder parseRefine(final RefineHolder refine, final Refine_leaf_list_stmtsContext refineStmt) { + private static RefineBuilder parseRefine(final RefineHolderImpl refine, final Refine_leaf_list_stmtsContext refineStmt) { for (int i = 0; i < refineStmt.getChildCount(); i++) { ParseTree refineArg = refineStmt.getChild(i); if (refineArg instanceof Must_stmtContext) { @@ -1634,7 +1641,7 @@ public final class ParserListenerUtils { return refine; } - private static RefineHolder parseRefine(final RefineHolder refine, final Refine_choice_stmtsContext refineStmt) { + private static RefineBuilder parseRefine(final RefineHolderImpl refine, final Refine_choice_stmtsContext refineStmt) { for (int i = 0; i < refineStmt.getChildCount(); i++) { ParseTree refineArg = refineStmt.getChild(i); if (refineArg instanceof Default_stmtContext) { @@ -1653,7 +1660,7 @@ public final class ParserListenerUtils { return refine; } - private static RefineHolder parseRefine(final RefineHolder refine, final Refine_anyxml_stmtsContext refineStmt) { + private static RefineBuilder parseRefine(final RefineBuilder refine, final Refine_anyxml_stmtsContext refineStmt) { for (int i = 0; i < refineStmt.getChildCount(); i++) { ParseTree refineArg = refineStmt.getChild(i); if (refineArg instanceof Must_stmtContext) { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/validator/ValidationUtil.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/ValidationUtil.java similarity index 96% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/validator/ValidationUtil.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/ValidationUtil.java index 9095ae0dff..d5ca358b64 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/validator/ValidationUtil.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/ValidationUtil.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/eplv10.html */ -package org.opendaylight.yangtools.yang.validator; +package org.opendaylight.yangtools.yang.parser.impl; import java.util.Arrays; import java.util.Collection; @@ -16,7 +16,6 @@ import java.util.Set; import org.antlr.v4.runtime.tree.ParseTree; import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.Module_stmtContext; import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.Submodule_stmtContext; -import org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils; import org.opendaylight.yangtools.yang.parser.util.YangValidationException; /** diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/validator/YangModelBasicValidationListener.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangModelBasicValidationListener.java similarity index 99% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/validator/YangModelBasicValidationListener.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangModelBasicValidationListener.java index 5de5855429..b9cadc7f65 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/validator/YangModelBasicValidationListener.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangModelBasicValidationListener.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.validator; +package org.opendaylight.yangtools.yang.parser.impl; import java.net.URI; import java.net.URISyntaxException; diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/validator/YangModelBasicValidator.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangModelBasicValidator.java similarity index 96% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/validator/YangModelBasicValidator.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangModelBasicValidator.java index d6ad2ed8ab..353150b1a8 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/validator/YangModelBasicValidator.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangModelBasicValidator.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.validator; +package org.opendaylight.yangtools.yang.parser.impl; import java.util.Collection; diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserImpl.java index 0b8a52f072..2f8dcf64fc 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserImpl.java @@ -7,23 +7,23 @@ package org.opendaylight.yangtools.yang.parser.impl; import static com.google.common.base.Preconditions.checkNotNull; -import static org.opendaylight.yangtools.yang.parser.util.ParserUtils.fillAugmentTarget; -import static org.opendaylight.yangtools.yang.parser.util.ParserUtils.findBaseIdentity; -import static org.opendaylight.yangtools.yang.parser.util.ParserUtils.findModuleFromBuilders; -import static org.opendaylight.yangtools.yang.parser.util.ParserUtils.findModuleFromContext; -import static org.opendaylight.yangtools.yang.parser.util.ParserUtils.findSchemaNode; -import static org.opendaylight.yangtools.yang.parser.util.ParserUtils.findSchemaNodeInModule; -import static org.opendaylight.yangtools.yang.parser.util.ParserUtils.processAugmentation; -import static org.opendaylight.yangtools.yang.parser.util.ParserUtils.setNodeAddedByUses; -import static org.opendaylight.yangtools.yang.parser.util.ParserUtils.wrapChildNode; -import static org.opendaylight.yangtools.yang.parser.util.ParserUtils.wrapChildNodes; -import static org.opendaylight.yangtools.yang.parser.util.ParserUtils.wrapGroupings; -import static org.opendaylight.yangtools.yang.parser.util.ParserUtils.wrapTypedefs; -import static org.opendaylight.yangtools.yang.parser.util.ParserUtils.wrapUnknownNodes; -import static org.opendaylight.yangtools.yang.parser.util.TypeUtils.resolveType; -import static org.opendaylight.yangtools.yang.parser.util.TypeUtils.resolveTypeUnion; -import static org.opendaylight.yangtools.yang.parser.util.TypeUtils.resolveTypeUnionWithContext; -import static org.opendaylight.yangtools.yang.parser.util.TypeUtils.resolveTypeWithContext; +import static org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils.fillAugmentTarget; +import static org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils.findBaseIdentity; +import static org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils.findModuleFromBuilders; +import static org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils.findModuleFromContext; +import static org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils.findSchemaNode; +import static org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils.findSchemaNodeInModule; +import static org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils.processAugmentation; +import static org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils.setNodeAddedByUses; +import static org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils.wrapChildNode; +import static org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils.wrapChildNodes; +import static org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils.wrapGroupings; +import static org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils.wrapTypedefs; +import static org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils.wrapUnknownNodes; +import static org.opendaylight.yangtools.yang.parser.builder.impl.TypeUtils.resolveType; +import static org.opendaylight.yangtools.yang.parser.builder.impl.TypeUtils.resolveTypeUnion; +import static org.opendaylight.yangtools.yang.parser.builder.impl.TypeUtils.resolveTypeUnionWithContext; +import static org.opendaylight.yangtools.yang.parser.builder.impl.TypeUtils.resolveTypeWithContext; import java.io.File; import java.io.IOException; @@ -68,31 +68,30 @@ import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationTargetBuil import org.opendaylight.yangtools.yang.parser.builder.api.Builder; import org.opendaylight.yangtools.yang.parser.builder.api.DataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.ExtensionBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.SchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeAwareBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils; import org.opendaylight.yangtools.yang.parser.builder.impl.ChoiceBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.ChoiceCaseBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.DeviationBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ExtensionBuilder; +import org.opendaylight.yangtools.yang.parser.builder.impl.GroupingUtils; import org.opendaylight.yangtools.yang.parser.builder.impl.IdentitySchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.IdentityrefTypeBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleBuilder.ModuleImpl; import org.opendaylight.yangtools.yang.parser.builder.impl.UnionTypeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.UnknownSchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.util.Comparators; -import org.opendaylight.yangtools.yang.parser.util.GroupingSort; -import org.opendaylight.yangtools.yang.parser.util.GroupingUtils; +import org.opendaylight.yangtools.yang.parser.builder.impl.UnknownSchemaNodeBuilderImpl; +import org.opendaylight.yangtools.yang.parser.builder.util.Comparators; import org.opendaylight.yangtools.yang.parser.util.ModuleDependencySort; import org.opendaylight.yangtools.yang.parser.util.NamedByteArrayInputStream; import org.opendaylight.yangtools.yang.parser.util.NamedFileInputStream; import org.opendaylight.yangtools.yang.parser.util.NamedInputStream; -import org.opendaylight.yangtools.yang.parser.util.ParserUtils; import org.opendaylight.yangtools.yang.parser.util.YangParseException; -import org.opendaylight.yangtools.yang.validator.YangModelBasicValidator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -127,7 +126,7 @@ public final class YangParserImpl implements YangContextParser { final String[] fileList = checkNotNull(directory.list(), directory + " not found or is not a directory"); Map sourceToFile = new LinkedHashMap<>(); - ByteSource mainFileSource = ParserUtils.fileToByteSource(yangFile); + ByteSource mainFileSource = BuilderUtils.fileToByteSource(yangFile); sourceToFile.put(mainFileSource, yangFile); for (String fileName : fileList) { @@ -136,7 +135,7 @@ public final class YangParserImpl implements YangContextParser { } File dependency = new File(directory, fileName); if (dependency.isFile()) { - sourceToFile.put(ParserUtils.fileToByteSource(dependency), dependency); + sourceToFile.put(BuilderUtils.fileToByteSource(dependency), dependency); } } @@ -188,7 +187,7 @@ public final class YangParserImpl implements YangContextParser { return resolveSchemaContext(Collections. emptySet()); } - Collection sources = ParserUtils.filesToByteSources(yangFiles); + Collection sources = BuilderUtils.filesToByteSources(yangFiles); SchemaContext result = parseSources(sources, context); return result; } @@ -197,7 +196,7 @@ public final class YangParserImpl implements YangContextParser { @Deprecated public Set parseYangModelsFromStreams(final List yangModelStreams) { try { - Collection sources = ParserUtils.streamsToByteSources(yangModelStreams); + Collection sources = BuilderUtils.streamsToByteSources(yangModelStreams); return parseSources(sources).getModules(); } catch (IOException | YangSyntaxErrorException e) { throw new YangParseException("Failed to parse yang data", e); @@ -217,7 +216,7 @@ public final class YangParserImpl implements YangContextParser { @Deprecated public Set parseYangModelsFromStreams(final List yangModelStreams, final SchemaContext context) { try { - Collection sources = ParserUtils.streamsToByteSources(yangModelStreams); + Collection sources = BuilderUtils.streamsToByteSources(yangModelStreams); return parseSources(sources, context).getModules(); } catch (IOException | YangSyntaxErrorException e) { throw new YangParseException("Failed to parse yang data", e); @@ -326,7 +325,7 @@ public final class YangParserImpl implements YangContextParser { Map sourceToBuilder = resolveSources(sources); // sort and check for duplicates List sorted = ModuleDependencySort.sort(sourceToBuilder.values()); - ParserUtils.setSourceToBuilder(sourceToBuilder); + BuilderUtils.setSourceToBuilder(sourceToBuilder); Map> modules = orderModules(sorted); Map builderToModule = build(modules); Map builderToSource = HashBiMap.create(sourceToBuilder).inverse(); @@ -386,7 +385,7 @@ public final class YangParserImpl implements YangContextParser { sourceToBuilder.put(source, moduleBuilder); } - ParserUtils.setSourceToBuilder(sourceToBuilder); + BuilderUtils.setSourceToBuilder(sourceToBuilder); return sourceToBuilder; } @@ -826,7 +825,7 @@ public final class YangParserImpl implements YangContextParser { */ private void setCorrectAugmentTargetPath(final Map> modules, final AugmentationSchemaBuilder augment, final SchemaContext context) { - ModuleBuilder module = ParserUtils.getParentModule(augment); + ModuleBuilder module = BuilderUtils.getParentModule(augment); SchemaPath oldSchemaPath = augment.getTargetPath(); List oldPath = oldSchemaPath.getPath(); List newPath = new ArrayList<>(); @@ -841,7 +840,7 @@ public final class YangParserImpl implements YangContextParser { String prefix; QName baseQName = usesParent.getQName(); if (baseQName == null) { - ModuleBuilder m = ParserUtils.getParentModule(usesParent); + ModuleBuilder m = BuilderUtils.getParentModule(usesParent); ns = m.getNamespace(); revision = m.getRevision(); prefix = m.getPrefix(); @@ -861,10 +860,10 @@ public final class YangParserImpl implements YangContextParser { Date rev = module.getRevision(); String localPrefix = qn.getPrefix(); if (localPrefix != null && !("".equals(localPrefix))) { - ModuleBuilder currentModule = ParserUtils.findModuleFromBuilders(modules, module, localPrefix, + ModuleBuilder currentModule = BuilderUtils.findModuleFromBuilders(modules, module, localPrefix, augment.getLine()); if (currentModule == null) { - Module m = ParserUtils.findModuleFromContext(context, module, localPrefix, augment.getLine()); + Module m = BuilderUtils.findModuleFromContext(context, module, localPrefix, augment.getLine()); if (m == null) { throw new YangParseException(module.getName(), augment.getLine(), "Module with prefix " + localPrefix + " not found."); @@ -921,7 +920,7 @@ public final class YangParserImpl implements YangContextParser { private void checkAugmentMandatoryNodes(final Collection augments) { for (AugmentationSchemaBuilder augment : augments) { String augmentPrefix = augment.getTargetPath().getPathFromRoot().iterator().next().getPrefix(); - ModuleBuilder module = ParserUtils.getParentModule(augment); + ModuleBuilder module = BuilderUtils.getParentModule(augment); String modulePrefix = module.getPrefix(); if (augmentPrefix == null || augmentPrefix.isEmpty() || augmentPrefix.equals(modulePrefix)) { @@ -1197,10 +1196,10 @@ public final class YangParserImpl implements YangContextParser { String name = splittedBase[1]; ModuleBuilder dependentModule = findTargetModule(prefix, module, modules, context, line); if (dependentModule != null) { - result = ParserUtils.findIdentity(dependentModule.getAddedIdentities(), name); + result = BuilderUtils.findIdentity(dependentModule.getAddedIdentities(), name); } } else { - result = ParserUtils.findIdentity(module.getAddedIdentities(), baseIdentityName); + result = BuilderUtils.findIdentity(module.getAddedIdentities(), baseIdentityName); } identity.setBaseIdentity(result); } @@ -1227,7 +1226,7 @@ public final class YangParserImpl implements YangContextParser { } } for (UsesNodeBuilder usesNode : allUses) { - ModuleBuilder module = ParserUtils.getParentModule(usesNode); + ModuleBuilder module = BuilderUtils.getParentModule(usesNode); final GroupingBuilder targetGroupingBuilder = GroupingUtils.getTargetGroupingFromModules(usesNode, modules, module); if (targetGroupingBuilder == null) { @@ -1309,7 +1308,7 @@ public final class YangParserImpl implements YangContextParser { final SchemaContext context) { if (!usesNode.isResolved()) { DataNodeContainerBuilder parent = usesNode.getParent(); - ModuleBuilder module = ParserUtils.getParentModule(parent); + ModuleBuilder module = BuilderUtils.getParentModule(parent); GroupingBuilder target = GroupingUtils.getTargetGroupingFromModules(usesNode, modules, module); if (target == null) { resolveUsesWithContext(usesNode); @@ -1344,7 +1343,7 @@ public final class YangParserImpl implements YangContextParser { private void resolveUsesWithContext(final UsesNodeBuilder usesNode) { final int line = usesNode.getLine(); DataNodeContainerBuilder parent = usesNode.getParent(); - ModuleBuilder module = ParserUtils.getParentModule(parent); + ModuleBuilder module = BuilderUtils.getParentModule(parent); SchemaPath parentPath; URI ns = null; Date rev = null; @@ -1387,7 +1386,7 @@ public final class YangParserImpl implements YangContextParser { setNodeAddedByUses(gb); } - List unknownNodes = wrapUnknownNodes(module.getModuleName(), line, + List unknownNodes = wrapUnknownNodes(module.getModuleName(), line, gd.getUnknownSchemaNodes(), parentPath, ns, rev, pref); parent.getUnknownNodes().addAll(unknownNodes); for (UnknownSchemaNodeBuilder un : unknownNodes) { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserListenerImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserListenerImpl.java index bf7f399b10..35dfb65f7e 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserListenerImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserListenerImpl.java @@ -7,24 +7,23 @@ */ package org.opendaylight.yangtools.yang.parser.impl; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.checkMissingBody; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.createActualSchemaPath; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.createListKey; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.getConfig; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.getIdentityrefBase; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.parseConstraints; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.parseDefault; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.parseRefine; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.parseSchemaNodeArgs; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.parseStatus; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.parseTypeWithBody; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.parseUnits; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.parseUnknownTypeWithBody; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.parseUserOrdered; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.parseYinValue; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.stringFromNode; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.checkMissingBody; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.createActualSchemaPath; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.createListKey; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.getConfig; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.getIdentityrefBase; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.parseConstraints; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.parseDefault; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.parseRefine; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.parseSchemaNodeArgs; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.parseStatus; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.parseTypeWithBody; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.parseUnits; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.parseUnknownTypeWithBody; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.parseUserOrdered; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.parseYinValue; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.stringFromNode; -import com.google.common.base.Strings; import java.net.URI; import java.text.DateFormat; import java.text.ParseException; @@ -32,6 +31,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Stack; + import org.antlr.v4.runtime.tree.ParseTree; import org.opendaylight.yangtools.antlrv4.code.gen.YangParser; import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.Argument_stmtContext; @@ -72,6 +72,7 @@ import org.opendaylight.yangtools.yang.model.util.BaseTypes; import org.opendaylight.yangtools.yang.model.util.YangTypesConverter; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.Builder; +import org.opendaylight.yangtools.yang.parser.builder.api.ExtensionBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; @@ -80,7 +81,6 @@ import org.opendaylight.yangtools.yang.parser.builder.impl.ChoiceBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.ChoiceCaseBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.ContainerSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.DeviationBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.ExtensionBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.FeatureBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.IdentitySchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.LeafListSchemaNodeBuilder; @@ -88,13 +88,15 @@ import org.opendaylight.yangtools.yang.parser.builder.impl.LeafSchemaNodeBuilder import org.opendaylight.yangtools.yang.parser.builder.impl.ListSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.NotificationBuilder; +import org.opendaylight.yangtools.yang.parser.builder.impl.RefineHolderImpl; import org.opendaylight.yangtools.yang.parser.builder.impl.RpcDefinitionBuilder; import org.opendaylight.yangtools.yang.parser.builder.impl.UnionTypeBuilder; -import org.opendaylight.yangtools.yang.parser.builder.impl.UnknownSchemaNodeBuilder; -import org.opendaylight.yangtools.yang.parser.util.RefineHolder; +import org.opendaylight.yangtools.yang.parser.builder.impl.UnknownSchemaNodeBuilderImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.base.Strings; + public final class YangParserListenerImpl extends YangParserBaseListener { private static final Logger LOGGER = LoggerFactory.getLogger(YangParserListenerImpl.class); private static final String AUGMENT_STR = "augment"; @@ -110,7 +112,7 @@ public final class YangParserListenerImpl extends YangParserBaseListener { private final Stack> actualPath = new Stack<>(); private int augmentOrder; - private void addNodeToPath(QName name) { + private void addNodeToPath(final QName name) { actualPath.peek().push(name); } @@ -118,12 +120,12 @@ public final class YangParserListenerImpl extends YangParserBaseListener { return actualPath.peek().pop(); } - public YangParserListenerImpl(String sourcePath) { + public YangParserListenerImpl(final String sourcePath) { this.sourcePath = sourcePath; } @Override - public void enterModule_stmt(YangParser.Module_stmtContext ctx) { + public void enterModule_stmt(final YangParser.Module_stmtContext ctx) { moduleName = stringFromNode(ctx); LOGGER.trace("entering module " + moduleName); enterLog("module", moduleName, 0); @@ -150,12 +152,12 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitModule_stmt(YangParser.Module_stmtContext ctx) { + public void exitModule_stmt(final YangParser.Module_stmtContext ctx) { exitLog("module", ""); actualPath.pop(); } - @Override public void enterSubmodule_stmt(YangParser.Submodule_stmtContext ctx) { + @Override public void enterSubmodule_stmt(final YangParser.Submodule_stmtContext ctx) { moduleName = stringFromNode(ctx); LOGGER.trace("entering submodule " + moduleName); enterLog("submodule", moduleName, 0); @@ -181,17 +183,17 @@ public final class YangParserListenerImpl extends YangParserBaseListener { moduleBuilder.setReference(reference); } - @Override public void exitSubmodule_stmt(YangParser.Submodule_stmtContext ctx) { + @Override public void exitSubmodule_stmt(final YangParser.Submodule_stmtContext ctx) { exitLog("submodule", ""); actualPath.pop(); } - @Override public void enterBelongs_to_stmt(YangParser.Belongs_to_stmtContext ctx) { + @Override public void enterBelongs_to_stmt(final YangParser.Belongs_to_stmtContext ctx) { moduleBuilder.setBelongsTo(stringFromNode(ctx)); } @Override - public void enterModule_header_stmts(Module_header_stmtsContext ctx) { + public void enterModule_header_stmts(final Module_header_stmtsContext ctx) { enterLog("module_header", "", ctx.getStart().getLine()); String yangVersion = null; for (int i = 0; i < ctx.getChildCount(); ++i) { @@ -218,12 +220,12 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitModule_header_stmts(Module_header_stmtsContext ctx) { + public void exitModule_header_stmts(final Module_header_stmtsContext ctx) { exitLog("module_header", ""); } @Override - public void enterMeta_stmts(YangParser.Meta_stmtsContext ctx) { + public void enterMeta_stmts(final YangParser.Meta_stmtsContext ctx) { enterLog("meta_stmt", "", ctx.getStart().getLine()); for (int i = 0; i < ctx.getChildCount(); i++) { ParseTree child = ctx.getChild(i); @@ -248,12 +250,12 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitMeta_stmts(YangParser.Meta_stmtsContext ctx) { + public void exitMeta_stmts(final YangParser.Meta_stmtsContext ctx) { exitLog("meta_stmt", ""); } @Override - public void enterRevision_stmts(Revision_stmtsContext ctx) { + public void enterRevision_stmts(final Revision_stmtsContext ctx) { enterLog("revisions", "", ctx.getStart().getLine()); for (int i = 0; i < ctx.getChildCount(); ++i) { final ParseTree treeNode = ctx.getChild(i); @@ -264,7 +266,7 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitRevision_stmts(Revision_stmtsContext ctx) { + public void exitRevision_stmts(final Revision_stmtsContext ctx) { exitLog("revisions", ""); } @@ -290,7 +292,7 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void enterImport_stmt(Import_stmtContext ctx) { + public void enterImport_stmt(final Import_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String importName = stringFromNode(ctx); enterLog("import", importName, line); @@ -317,12 +319,12 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitImport_stmt(Import_stmtContext ctx) { + public void exitImport_stmt(final Import_stmtContext ctx) { exitLog("import", ""); } @Override - public void enterAugment_stmt(YangParser.Augment_stmtContext ctx) { + public void enterAugment_stmt(final YangParser.Augment_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String augmentPath = stringFromNode(ctx); enterLog(AUGMENT_STR, augmentPath, line); @@ -347,14 +349,14 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitAugment_stmt(YangParser.Augment_stmtContext ctx) { + public void exitAugment_stmt(final YangParser.Augment_stmtContext ctx) { moduleBuilder.exitNode(); exitLog(AUGMENT_STR, ""); actualPath.pop(); } @Override - public void enterExtension_stmt(YangParser.Extension_stmtContext ctx) { + public void enterExtension_stmt(final YangParser.Extension_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String extName = stringFromNode(ctx); enterLog("extension", extName, line); @@ -382,13 +384,13 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitExtension_stmt(YangParser.Extension_stmtContext ctx) { + public void exitExtension_stmt(final YangParser.Extension_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("extension", removeNodeFromPath()); } @Override - public void enterTypedef_stmt(YangParser.Typedef_stmtContext ctx) { + public void enterTypedef_stmt(final YangParser.Typedef_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String typedefName = stringFromNode(ctx); enterLog("typedef", typedefName, line); @@ -405,13 +407,13 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitTypedef_stmt(YangParser.Typedef_stmtContext ctx) { + public void exitTypedef_stmt(final YangParser.Typedef_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("typedef", removeNodeFromPath()); } @Override - public void enterType_stmt(YangParser.Type_stmtContext ctx) { + public void enterType_stmt(final YangParser.Type_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String typeName = stringFromNode(ctx); enterLog("type", typeName, line); @@ -471,7 +473,7 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } - private QName parseQName(String typeName) { + private QName parseQName(final String typeName) { QName typeQName; if (typeName.contains(":")) { String[] splittedName = typeName.split(":"); @@ -489,7 +491,7 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitType_stmt(YangParser.Type_stmtContext ctx) { + public void exitType_stmt(final YangParser.Type_stmtContext ctx) { final String typeName = stringFromNode(ctx); if ("union".equals(typeName)) { moduleBuilder.exitNode(); @@ -498,7 +500,7 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void enterGrouping_stmt(YangParser.Grouping_stmtContext ctx) { + public void enterGrouping_stmt(final YangParser.Grouping_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String groupName = stringFromNode(ctx); enterLog("grouping", groupName, line); @@ -513,13 +515,13 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitGrouping_stmt(YangParser.Grouping_stmtContext ctx) { + public void exitGrouping_stmt(final YangParser.Grouping_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("grouping", removeNodeFromPath()); } @Override - public void enterContainer_stmt(Container_stmtContext ctx) { + public void enterContainer_stmt(final Container_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String containerName = stringFromNode(ctx); enterLog("container", containerName, line); @@ -545,13 +547,13 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitContainer_stmt(Container_stmtContext ctx) { + public void exitContainer_stmt(final Container_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("container", removeNodeFromPath()); } @Override - public void enterLeaf_stmt(Leaf_stmtContext ctx) { + public void enterLeaf_stmt(final Leaf_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String leafName = stringFromNode(ctx); enterLog("leaf", leafName, line); @@ -582,13 +584,13 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitLeaf_stmt(YangParser.Leaf_stmtContext ctx) { + public void exitLeaf_stmt(final YangParser.Leaf_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("leaf", removeNodeFromPath()); } @Override - public void enterUses_stmt(YangParser.Uses_stmtContext ctx) { + public void enterUses_stmt(final YangParser.Uses_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String groupingPathStr = stringFromNode(ctx); enterLog("uses", groupingPathStr, line); @@ -599,13 +601,13 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitUses_stmt(YangParser.Uses_stmtContext ctx) { + public void exitUses_stmt(final YangParser.Uses_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("uses", ""); } @Override - public void enterUses_augment_stmt(YangParser.Uses_augment_stmtContext ctx) { + public void enterUses_augment_stmt(final YangParser.Uses_augment_stmtContext ctx) { actualPath.push(new Stack()); final int line = ctx.getStart().getLine(); final String augmentPath = stringFromNode(ctx); @@ -630,30 +632,30 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitUses_augment_stmt(YangParser.Uses_augment_stmtContext ctx) { + public void exitUses_augment_stmt(final YangParser.Uses_augment_stmtContext ctx) { moduleBuilder.exitNode(); exitLog(AUGMENT_STR, ""); actualPath.pop(); } @Override - public void enterRefine_stmt(YangParser.Refine_stmtContext ctx) { + public void enterRefine_stmt(final YangParser.Refine_stmtContext ctx) { final String refineString = stringFromNode(ctx); enterLog("refine", refineString, ctx.getStart().getLine()); - RefineHolder refine = parseRefine(ctx, moduleName); + RefineHolderImpl refine = parseRefine(ctx, moduleName); moduleBuilder.addRefine(refine); moduleBuilder.enterNode(refine); } @Override - public void exitRefine_stmt(YangParser.Refine_stmtContext ctx) { + public void exitRefine_stmt(final YangParser.Refine_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("refine", ""); } @Override - public void enterLeaf_list_stmt(Leaf_list_stmtContext ctx) { + public void enterLeaf_list_stmt(final Leaf_list_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String leafListName = stringFromNode(ctx); enterLog("leaf-list", leafListName, line); @@ -680,13 +682,13 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitLeaf_list_stmt(YangParser.Leaf_list_stmtContext ctx) { + public void exitLeaf_list_stmt(final YangParser.Leaf_list_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("leaf-list", removeNodeFromPath()); } @Override - public void enterList_stmt(List_stmtContext ctx) { + public void enterList_stmt(final List_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String listName = stringFromNode(ctx); enterLog("list", listName, line); @@ -716,13 +718,13 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitList_stmt(List_stmtContext ctx) { + public void exitList_stmt(final List_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("list", removeNodeFromPath()); } @Override - public void enterAnyxml_stmt(YangParser.Anyxml_stmtContext ctx) { + public void enterAnyxml_stmt(final YangParser.Anyxml_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String anyXmlName = stringFromNode(ctx); enterLog("anyxml", anyXmlName, line); @@ -740,13 +742,13 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitAnyxml_stmt(YangParser.Anyxml_stmtContext ctx) { + public void exitAnyxml_stmt(final YangParser.Anyxml_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("anyxml", removeNodeFromPath()); } @Override - public void enterChoice_stmt(YangParser.Choice_stmtContext ctx) { + public void enterChoice_stmt(final YangParser.Choice_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String choiceName = stringFromNode(ctx); enterLog("choice", choiceName, line); @@ -774,13 +776,13 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitChoice_stmt(YangParser.Choice_stmtContext ctx) { + public void exitChoice_stmt(final YangParser.Choice_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("choice", removeNodeFromPath()); } @Override - public void enterCase_stmt(YangParser.Case_stmtContext ctx) { + public void enterCase_stmt(final YangParser.Case_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String caseName = stringFromNode(ctx); enterLog("case", caseName, line); @@ -797,13 +799,13 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitCase_stmt(YangParser.Case_stmtContext ctx) { + public void exitCase_stmt(final YangParser.Case_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("case", removeNodeFromPath()); } @Override - public void enterNotification_stmt(YangParser.Notification_stmtContext ctx) { + public void enterNotification_stmt(final YangParser.Notification_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String notificationName = stringFromNode(ctx); enterLog("notification", notificationName, line); @@ -819,52 +821,52 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitNotification_stmt(YangParser.Notification_stmtContext ctx) { + public void exitNotification_stmt(final YangParser.Notification_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("notification", removeNodeFromPath()); } // Unknown nodes @Override - public void enterIdentifier_stmt(YangParser.Identifier_stmtContext ctx) { + public void enterIdentifier_stmt(final YangParser.Identifier_stmtContext ctx) { handleUnknownNode(ctx.getStart().getLine(), ctx); } @Override - public void exitIdentifier_stmt(YangParser.Identifier_stmtContext ctx) { + public void exitIdentifier_stmt(final YangParser.Identifier_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("unknown-node", removeNodeFromPath()); } - @Override public void enterUnknown_statement(YangParser.Unknown_statementContext ctx) { + @Override public void enterUnknown_statement(final YangParser.Unknown_statementContext ctx) { handleUnknownNode(ctx.getStart().getLine(), ctx); } - @Override public void exitUnknown_statement(YangParser.Unknown_statementContext ctx) { + @Override public void exitUnknown_statement(final YangParser.Unknown_statementContext ctx) { moduleBuilder.exitNode(); exitLog("unknown-node", removeNodeFromPath()); } - @Override public void enterUnknown_statement2(YangParser.Unknown_statement2Context ctx) { + @Override public void enterUnknown_statement2(final YangParser.Unknown_statement2Context ctx) { handleUnknownNode(ctx.getStart().getLine(), ctx); } - @Override public void exitUnknown_statement2(YangParser.Unknown_statement2Context ctx) { + @Override public void exitUnknown_statement2(final YangParser.Unknown_statement2Context ctx) { moduleBuilder.exitNode(); exitLog("unknown-node", removeNodeFromPath()); } - @Override public void enterUnknown_statement3(YangParser.Unknown_statement3Context ctx) { + @Override public void enterUnknown_statement3(final YangParser.Unknown_statement3Context ctx) { handleUnknownNode(ctx.getStart().getLine(), ctx); } - @Override public void exitUnknown_statement3(YangParser.Unknown_statement3Context ctx) { + @Override public void exitUnknown_statement3(final YangParser.Unknown_statement3Context ctx) { moduleBuilder.exitNode(); exitLog("unknown-node", removeNodeFromPath()); } @Override - public void enterRpc_stmt(YangParser.Rpc_stmtContext ctx) { + public void enterRpc_stmt(final YangParser.Rpc_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String rpcName = stringFromNode(ctx); enterLog("rpc", rpcName, line); @@ -881,13 +883,13 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitRpc_stmt(YangParser.Rpc_stmtContext ctx) { + public void exitRpc_stmt(final YangParser.Rpc_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("rpc", removeNodeFromPath()); } @Override - public void enterInput_stmt(YangParser.Input_stmtContext ctx) { + public void enterInput_stmt(final YangParser.Input_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String input = "input"; enterLog(input, input, line); @@ -905,13 +907,13 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitInput_stmt(YangParser.Input_stmtContext ctx) { + public void exitInput_stmt(final YangParser.Input_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("input", removeNodeFromPath()); } @Override - public void enterOutput_stmt(YangParser.Output_stmtContext ctx) { + public void enterOutput_stmt(final YangParser.Output_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String output = "output"; enterLog(output, output, line); @@ -929,13 +931,13 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitOutput_stmt(YangParser.Output_stmtContext ctx) { + public void exitOutput_stmt(final YangParser.Output_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("output", removeNodeFromPath()); } @Override - public void enterFeature_stmt(YangParser.Feature_stmtContext ctx) { + public void enterFeature_stmt(final YangParser.Feature_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String featureName = stringFromNode(ctx); enterLog("feature", featureName, line); @@ -951,13 +953,13 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitFeature_stmt(YangParser.Feature_stmtContext ctx) { + public void exitFeature_stmt(final YangParser.Feature_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("feature", removeNodeFromPath()); } @Override - public void enterDeviation_stmt(YangParser.Deviation_stmtContext ctx) { + public void enterDeviation_stmt(final YangParser.Deviation_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String targetPath = stringFromNode(ctx); enterLog("deviation", targetPath, line); @@ -986,13 +988,13 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitDeviation_stmt(YangParser.Deviation_stmtContext ctx) { + public void exitDeviation_stmt(final YangParser.Deviation_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("deviation", ""); } @Override - public void enterIdentity_stmt(YangParser.Identity_stmtContext ctx) { + public void enterIdentity_stmt(final YangParser.Identity_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String identityName = stringFromNode(ctx); enterLog("identity", identityName, line); @@ -1017,7 +1019,7 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } @Override - public void exitIdentity_stmt(YangParser.Identity_stmtContext ctx) { + public void exitIdentity_stmt(final YangParser.Identity_stmtContext ctx) { moduleBuilder.exitNode(); exitLog("identity", removeNodeFromPath()); } @@ -1026,19 +1028,19 @@ public final class YangParserListenerImpl extends YangParserBaseListener { return moduleBuilder; } - private void enterLog(String p1, String p2, int line) { + private void enterLog(final String p1, final String p2, final int line) { LOGGER.trace("entering {} {} ({})", p1, p2, line); } - private void exitLog(String p1, String p2) { + private void exitLog(final String p1, final String p2) { LOGGER.trace("exiting {} {}", p1, p2); } - private void exitLog(String p1, QName p2) { + private void exitLog(final String p1, final QName p2) { LOGGER.trace("exiting {} {}", p1, p2.getLocalName()); } - private void setLog(String p1, String p2) { + private void setLog(final String p1, final String p2) { LOGGER.trace("setting {} {}", p1, p2); } @@ -1074,7 +1076,7 @@ public final class YangParserListenerImpl extends YangParserBaseListener { addNodeToPath(qname); SchemaPath path = createActualSchemaPath(actualPath.peek()); - UnknownSchemaNodeBuilder builder = moduleBuilder.addUnknownSchemaNode(line, qname, path); + UnknownSchemaNodeBuilderImpl builder = moduleBuilder.addUnknownSchemaNode(line, qname, path); builder.setNodeType(nodeType); builder.setNodeParameter(nodeParameter); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/util/YangModelDependencyInfo.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/util/YangModelDependencyInfo.java index bbc49453bd..4360db1da6 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/util/YangModelDependencyInfo.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/util/YangModelDependencyInfo.java @@ -6,8 +6,8 @@ */ package org.opendaylight.yangtools.yang.parser.impl.util; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.getArgumentString; -import static org.opendaylight.yangtools.yang.parser.util.ParserListenerUtils.getFirstContext; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.getArgumentString; +import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.getFirstContext; import java.io.InputStream; import java.util.Date; diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ModuleDependencySort.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ModuleDependencySort.java index 3db3065d55..d304ca05da 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ModuleDependencySort.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ModuleDependencySort.java @@ -1,17 +1,11 @@ /* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * + * 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.yangtools.yang.parser.util; -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Function; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; import java.net.URI; import java.util.ArrayList; import java.util.Arrays; @@ -28,11 +22,16 @@ import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.ModuleImport; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleBuilder; -import org.opendaylight.yangtools.yang.parser.util.TopologicalSort.Node; import org.opendaylight.yangtools.yang.parser.util.TopologicalSort.NodeImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Function; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; + /** * Creates a module dependency graph from provided {@link ModuleBuilder}s and * provides a {@link #sort(ModuleBuilder...)} method. It is topological sort and @@ -53,9 +52,9 @@ public final class ModuleDependencySort { /** * Extracts {@link ModuleBuilder} from a {@link ModuleNodeImpl}. */ - private static final Function NODE_TO_MODULEBUILDER = new Function() { + private static final Function NODE_TO_MODULEBUILDER = new Function() { @Override - public ModuleBuilder apply(final Node input) { + public ModuleBuilder apply(final TopologicalSort.Node input) { // Cast to ModuleBuilder from Node and return return (ModuleBuilder) ((ModuleNodeImpl) input).getReference(); } @@ -68,14 +67,12 @@ public final class ModuleDependencySort { * in returned order. */ public static List sort(final ModuleBuilder... builders) { - List sorted = sortInternal(Arrays.asList(builders)); - return Lists.transform(sorted, NODE_TO_MODULEBUILDER); + return sort(Arrays.asList(builders)); } public static List sort(final Collection builders) { - ModuleBuilder[] array = new ModuleBuilder[builders.size()]; - builders.toArray(array); - return sort(array); + List sorted = sortInternal(builders); + return Lists.transform(sorted, NODE_TO_MODULEBUILDER); } public static List sortWithContext(final SchemaContext context, final ModuleBuilder... builders) { @@ -83,12 +80,12 @@ public final class ModuleDependencySort { Collections.addAll(modules, builders); modules.addAll(context.getModules()); - List sorted = sortInternal(modules); + List sorted = sortInternal(modules); // Cast to ModuleBuilder from Node if possible and return - return Lists.transform(sorted, new Function() { + return Lists.transform(sorted, new Function() { @Override - public ModuleBuilder apply(final Node input) { + public ModuleBuilder apply(final TopologicalSort.Node input) { if (((ModuleNodeImpl) input).getReference() instanceof ModuleBuilder) { return (ModuleBuilder) ((ModuleNodeImpl) input).getReference(); } else { @@ -105,21 +102,21 @@ public final class ModuleDependencySort { * returned order. */ public static List sort(final Module... modules) { - List sorted = sortInternal(Arrays.asList(modules)); + List sorted = sortInternal(Arrays.asList(modules)); // Cast to Module from Node and return - return Lists.transform(sorted, new Function() { + return Lists.transform(sorted, new Function() { @Override - public Module apply(final Node input) { + public Module apply(final TopologicalSort.Node input) { return (Module) ((ModuleNodeImpl) input).getReference(); } }); } - private static List sortInternal(final List modules) { + private static List sortInternal(final Iterable modules) { Map> moduleGraph = createModuleGraph(modules); - Set nodes = Sets.newHashSet(); + Set nodes = Sets.newHashSet(); for (Map map : moduleGraph.values()) { for (ModuleNodeImpl node : map.values()) { nodes.add(node); @@ -130,7 +127,7 @@ public final class ModuleDependencySort { } @VisibleForTesting - static Map> createModuleGraph(final List builders) { + static Map> createModuleGraph(final Iterable builders) { Map> moduleGraph = Maps.newHashMap(); processModules(moduleGraph, builders); @@ -142,7 +139,8 @@ public final class ModuleDependencySort { /** * Extract module:revision from module builders */ - private static void processDependencies(final Map> moduleGraph, final List builders) { + private static void processDependencies(final Map> moduleGraph, + final Iterable builders) { Map allNS = new HashMap<>(); // Create edges in graph @@ -158,12 +156,12 @@ public final class ModuleDependencySort { fromName = ((Module) mb).getName(); fromRevision = ((Module) mb).getRevision(); imports = ((Module) mb).getImports(); - ns = ((Module)mb).getNamespace(); + ns = ((Module) mb).getNamespace(); } else if (mb instanceof ModuleBuilder) { fromName = ((ModuleBuilder) mb).getName(); fromRevision = ((ModuleBuilder) mb).getRevision(); imports = ((ModuleBuilder) mb).getModuleImports(); - ns = ((ModuleBuilder)mb).getNamespace(); + ns = ((ModuleBuilder) mb).getNamespace(); } // check for existence of module with same namespace @@ -257,7 +255,8 @@ public final class ModuleDependencySort { * Extract dependencies from module builders or modules to fill dependency * graph */ - private static void processModules(final Map> moduleGraph, final List builders) { + private static void processModules(final Map> moduleGraph, + final Iterable builders) { // Process nodes for (Object mb : builders) { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/NodeWrappedType.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/NodeWrappedType.java index 30799bd479..fca683d246 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/NodeWrappedType.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/NodeWrappedType.java @@ -17,20 +17,20 @@ public final class NodeWrappedType extends NodeImpl { /** * Create new instance of class NodeWrappedType. - * + * * @param wrappedType * object with payload data */ - NodeWrappedType(Object wrappedType) { + public NodeWrappedType(Object wrappedType) { this.wrappedType = wrappedType; } /** * Gets payload from class - * + * * @return object with wrappedType */ - Object getWrappedType() { + public Object getWrappedType() { return wrappedType; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/UnknownBoundaryNumber.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/UnknownBoundaryNumber.java index 9b580a9b56..5e3538646c 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/UnknownBoundaryNumber.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/UnknownBoundaryNumber.java @@ -10,11 +10,13 @@ package org.opendaylight.yangtools.yang.parser.util; /** * Marker object representing special 'min' or 'max' values in YANG. */ -final class UnknownBoundaryNumber extends Number { +public final class UnknownBoundaryNumber extends Number { private static final long serialVersionUID = 1464861684686434869L; private final String value; + @Deprecated + public UnknownBoundaryNumber(final String value) { this.value = value; } diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/TestUtils.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/TestUtils.java index ae6a9ea127..c0a5ef490c 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/TestUtils.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/TestUtils.java @@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.parser.impl; import static org.junit.Assert.assertEquals; -import com.google.common.io.ByteSource; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -24,6 +23,7 @@ import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Set; + import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; import org.opendaylight.yangtools.yang.model.api.ChoiceNode; @@ -37,8 +37,10 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.parser.api.YangContextParser; import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException; +import org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils; import org.opendaylight.yangtools.yang.parser.util.NamedByteArrayInputStream; -import org.opendaylight.yangtools.yang.parser.util.ParserUtils; + +import com.google.common.io.ByteSource; final class TestUtils { @@ -62,7 +64,7 @@ final class TestUtils { } public static Set loadModules(final List input) throws IOException, YangSyntaxErrorException { - Collection sources = ParserUtils.streamsToByteSources(input); + Collection sources = BuilderUtils.streamsToByteSources(input); final YangContextParser parser = new YangParserImpl(); SchemaContext ctx = parser.parseSources(sources); return ctx.getModules(); @@ -106,7 +108,7 @@ final class TestUtils { public static Set loadModulesWithContext(final Collection input, final SchemaContext context) throws IOException, YangSyntaxErrorException { - Collection sources = ParserUtils.streamsToByteSources(input); + Collection sources = BuilderUtils.streamsToByteSources(input); final YangContextParser parser = new YangParserImpl(); SchemaContext ctx = parser.parseSources(sources, context); final Set modules = ctx.getModules(); diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/validator/YangModelValidationListTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangModelValidationListTest.java similarity index 96% rename from yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/validator/YangModelValidationListTest.java rename to yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangModelValidationListTest.java index 88be5d8b0b..4013b2c17e 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/validator/YangModelValidationListTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangModelValidationListTest.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.validator; +package org.opendaylight.yangtools.yang.parser.impl; import static org.junit.Assert.assertThat; import static org.junit.matchers.JUnitMatchers.containsString; @@ -20,6 +20,7 @@ import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.Mandatory_stmtCont import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.Ordered_by_argContext; import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.Type_stmtContext; import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.Unique_stmtContext; +import org.opendaylight.yangtools.yang.parser.impl.YangModelBasicValidationListener; import org.opendaylight.yangtools.yang.parser.util.YangValidationException; public class YangModelValidationListTest { diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/validator/YangModelValidationModuleTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangModelValidationModuleTest.java similarity index 97% rename from yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/validator/YangModelValidationModuleTest.java rename to yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangModelValidationModuleTest.java index 19a3f60439..2edef0f403 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/validator/YangModelValidationModuleTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangModelValidationModuleTest.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.validator; +package org.opendaylight.yangtools.yang.parser.impl; import static org.junit.Assert.assertThat; import static org.junit.matchers.JUnitMatchers.containsString; @@ -19,6 +19,8 @@ import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.Namespace_stmtCont import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.Revision_stmtContext; import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.Revision_stmtsContext; import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.Yang_version_stmtContext; +import org.opendaylight.yangtools.yang.parser.impl.BasicValidations; +import org.opendaylight.yangtools.yang.parser.impl.YangModelBasicValidationListener; import org.opendaylight.yangtools.yang.parser.util.YangValidationException; public class YangModelValidationModuleTest { diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/validator/YangModelValidationSubModuleTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangModelValidationSubModuleTest.java similarity index 95% rename from yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/validator/YangModelValidationSubModuleTest.java rename to yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangModelValidationSubModuleTest.java index 518d348e2d..b6a34cb4eb 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/validator/YangModelValidationSubModuleTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangModelValidationSubModuleTest.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.validator; +package org.opendaylight.yangtools.yang.parser.impl; import static org.junit.Assert.assertThat; import static org.junit.matchers.JUnitMatchers.containsString; @@ -17,6 +17,7 @@ import org.junit.Test; import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.Belongs_to_stmtContext; import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.Submodule_header_stmtsContext; import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.Submodule_stmtContext; +import org.opendaylight.yangtools.yang.parser.impl.YangModelBasicValidationListener; import org.opendaylight.yangtools.yang.parser.util.YangValidationException; public class YangModelValidationSubModuleTest { diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/validator/YangModelValidationTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangModelValidationTest.java similarity index 97% rename from yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/validator/YangModelValidationTest.java rename to yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangModelValidationTest.java index 56f4704f19..96779ab32a 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/validator/YangModelValidationTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangModelValidationTest.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.validator; +package org.opendaylight.yangtools.yang.parser.impl; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; @@ -37,6 +37,9 @@ import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.Prefix_stmtContext import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.Revision_date_stmtContext; import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.Status_argContext; import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.StringContext; +import org.opendaylight.yangtools.yang.parser.impl.BasicValidations; +import org.opendaylight.yangtools.yang.parser.impl.ValidationUtil; +import org.opendaylight.yangtools.yang.parser.impl.YangModelBasicValidationListener; import org.opendaylight.yangtools.yang.parser.util.YangValidationException; import com.google.common.collect.Sets; diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangParserTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangParserTest.java index 29a4c28b01..ab26254433 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangParserTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangParserTest.java @@ -31,6 +31,7 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; + import org.junit.Before; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; @@ -68,7 +69,7 @@ import org.opendaylight.yangtools.yang.model.util.Int32; import org.opendaylight.yangtools.yang.model.util.StringType; import org.opendaylight.yangtools.yang.model.util.Uint32; import org.opendaylight.yangtools.yang.model.util.UnionType; -import org.opendaylight.yangtools.yang.parser.util.ParserUtils; +import org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils; public class YangParserTest { public static final String FS = File.separator; @@ -885,7 +886,7 @@ public class YangParserTest { for (File f : testFiles) { streams.add(new FileInputStream(f)); } - newModules = parser.parseSources(ParserUtils.filesToByteSources(testFiles)).getModules(); + newModules = parser.parseSources(BuilderUtils.filesToByteSources(testFiles)).getModules(); assertSetEquals(newModules, modules); ctx = new SchemaContextImpl(newModules, Collections.emptyMap()); assertSetEquals(newModules, ctx.getModules()); @@ -894,7 +895,7 @@ public class YangParserTest { for (File f : testFiles) { streams.add(new FileInputStream(f)); } - newModules = parser.parseSources(ParserUtils.filesToByteSources(testFiles), null).getModules(); + newModules = parser.parseSources(BuilderUtils.filesToByteSources(testFiles), null).getModules(); assertSetEquals(newModules, modules); ctx = new SchemaContextImpl(newModules, Collections.emptyMap()); assertSetEquals(newModules, ctx.getModules()); diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/util/ModuleDependencySortTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/util/ModuleDependencySortTest.java index 106580ad19..fc1c302269 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/util/ModuleDependencySortTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/util/ModuleDependencySortTest.java @@ -35,10 +35,10 @@ import com.google.common.collect.Sets; public class ModuleDependencySortTest { private final DateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); - private ModuleBuilder a = mockModuleBuilder("a", null); - private ModuleBuilder b = mockModuleBuilder("b", null); - private ModuleBuilder c = mockModuleBuilder("c", null); - private ModuleBuilder d = mockModuleBuilder("d", null); + private final ModuleBuilder a = mockModuleBuilder("a", null); + private final ModuleBuilder b = mockModuleBuilder("b", null); + private final ModuleBuilder c = mockModuleBuilder("c", null); + private final ModuleBuilder d = mockModuleBuilder("d", null); @Test public void testValid() throws Exception { @@ -142,7 +142,7 @@ public class ModuleDependencySortTest { } } - private void assertDependencyGraph(Map> moduleGraph) { + private void assertDependencyGraph(final Map> moduleGraph) { for (Entry> node : moduleGraph.entrySet()) { String name = node.getKey(); @@ -161,26 +161,26 @@ public class ModuleDependencySortTest { } } - private void assertEdgeCount(Set inEdges, int i, Set outEdges, int j) { + private void assertEdgeCount(final Set inEdges, final int i, final Set outEdges, final int j) { assertThat(inEdges.size(), is(i)); assertThat(outEdges.size(), is(j)); } - private void mockDependency(ModuleBuilder a, ModuleBuilder b) { + private void mockDependency(final ModuleBuilder a, final ModuleBuilder b) { ModuleImport imprt = mock(ModuleImport.class); doReturn(b.getName()).when(imprt).getModuleName(); doReturn(b.getRevision()).when(imprt).getRevision(); a.getModuleImports().add(imprt); } - private void mockDependency(Module a, Module b) { + private void mockDependency(final Module a, final Module b) { ModuleImport imprt = mock(ModuleImport.class); doReturn(b.getName()).when(imprt).getModuleName(); doReturn(b.getRevision()).when(imprt).getRevision(); a.getImports().add(imprt); } - private ModuleBuilder mockModuleBuilder(String name, Date rev) { + private ModuleBuilder mockModuleBuilder(final String name, final Date rev) { ModuleBuilder a = mock(ModuleBuilder.class); doReturn(name).when(a).getName(); Set set = Sets.newHashSet(); @@ -191,7 +191,7 @@ public class ModuleDependencySortTest { return a; } - private Module mockModule(String name, Date rev) { + private Module mockModule(final String name, final Date rev) { Module a = mock(Module.class); doReturn(name).when(a).getName(); Set set = Sets.newHashSet(); diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/util/MustDefinitionImplTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/util/MustDefinitionImplTest.java deleted file mode 100644 index 1fef57c23e..0000000000 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/util/MustDefinitionImplTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.yang.parser.util; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; - -import org.junit.Test; - -public class MustDefinitionImplTest { - - @Test - public void test() { - MustDefinitionImpl mdiA; - MustDefinitionImpl mdiB; - mdiA = new MustDefinitionImpl("mustStrA", "descriptionA", "referenceA", "errorAppTagA", "errorMessageA"); - - assertEquals("mdiA should equals to itsefl", mdiA, mdiA); - assertFalse("mdiA shouldn't equal to null", mdiA.equals(null)); - assertFalse("mdiA shouldn't equal to object of other type", mdiA.equals(new String("str"))); - - // test of equals method - - // //confirmation of equality - mdiA = new MustDefinitionImpl("mustStr", "description", "reference", "errorAppTag", "errorMessage"); - mdiB = new MustDefinitionImpl("mustStr", "description", "reference", "errorAppTag", "errorMessage"); - assertEquals("mdiA should equal to mdiB", mdiA, mdiB); - - // // mustStr - mdiA = new MustDefinitionImpl(null, "description", "reference", "errorAppTag", "errorMessage"); - mdiB = new MustDefinitionImpl("mustStr", "description", "reference", "errorAppTag", "errorMessage"); - assertFalse("mdiA shouldn't equal to mdiB", mdiA.equals(mdiB)); - - mdiA = new MustDefinitionImpl("mustStrA", "description", "reference", "errorAppTag", "errorMessage"); - mdiB = new MustDefinitionImpl("mustStrB", "description", "reference", "errorAppTag", "errorMessage"); - assertFalse("mdiA shouldn't equal to mdiB", mdiA.equals(mdiB)); - - // //description - mdiA = new MustDefinitionImpl("mustStr", null, "reference", "errorAppTag", "errorMessage"); - mdiB = new MustDefinitionImpl("mustStr", "description", "reference", "errorAppTag", "errorMessage"); - assertFalse("mdiA shouldn't equal to mdiB", mdiA.equals(mdiB)); - - mdiA = new MustDefinitionImpl("mustStr", "descriptionA", "reference", "errorAppTag", "errorMessage"); - mdiB = new MustDefinitionImpl("mustStr", "descriptionB", "reference", "errorAppTag", "errorMessage"); - assertFalse("mdiA shouldn't equal to mdiB", mdiA.equals(mdiB)); - - // //reference - mdiA = new MustDefinitionImpl("mustStr", "description", null, "errorAppTag", "errorMessage"); - mdiB = new MustDefinitionImpl("mustStr", "description", "reference", "errorAppTag", "errorMessage"); - assertFalse("mdiA shouldn't equal to mdiB", mdiA.equals(mdiB)); - - mdiA = new MustDefinitionImpl("mustStr", "description", "referenceA", "errorAppTag", "errorMessage"); - mdiB = new MustDefinitionImpl("mustStr", "description", "referenceB", "errorAppTag", "errorMessage"); - assertFalse("mdiA shouldn't equal to mdiB", mdiA.equals(mdiB)); - - } - -} diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/util/RefineHolderTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/util/RefineHolderTest.java index 7260e1797c..71d2c48445 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/util/RefineHolderTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/util/RefineHolderTest.java @@ -17,21 +17,25 @@ import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Date; import java.util.List; + import org.junit.Before; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.parser.builder.impl.UnknownSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.model.util.MustDefinitionImpl; +import org.opendaylight.yangtools.yang.parser.builder.api.RefineBuilder; +import org.opendaylight.yangtools.yang.parser.builder.impl.RefineHolderImpl; +import org.opendaylight.yangtools.yang.parser.builder.impl.UnknownSchemaNodeBuilderImpl; public class RefineHolderTest { - private RefineHolder rh; - private RefineHolder rh1; + private RefineHolderImpl rh; + private RefineHolderImpl rh1; @Before public void init() { - rh = new RefineHolder("module", 2104, "name"); - rh1 = new RefineHolder("module", 2104, "name"); + rh = new RefineHolderImpl("module", 2104, "name"); + rh1 = new RefineHolderImpl("module", 2104, "name"); } @@ -44,9 +48,9 @@ public class RefineHolderTest { assertEquals("rh1 should equals to rh", rh, rh1); - RefineHolder rh2 = new RefineHolder("module", 2104, null); + RefineBuilder rh2 = new RefineHolderImpl("module", 2104, null); assertFalse("rh shouldn't equal to rh2", rh2.equals(rh1)); - rh2 = new RefineHolder("module", 2104, "name2"); + rh2 = new RefineHolderImpl("module", 2104, "name2"); assertFalse("rh shouldn't equal to rh2", rh.equals(rh2)); assertEquals("Wrong hash code", 1557537141, rh.hashCode()); @@ -189,8 +193,8 @@ public class RefineHolderTest { qnamesB.add(qnameB); SchemaPath schemaPathB = SchemaPath.create(qnamesB, true); - UnknownSchemaNodeBuilder usnb = new UnknownSchemaNodeBuilder("usnb", 151, new QName(simpleUri, "tst"), schemaPathB); - UnknownSchemaNodeBuilder usnb1 = new UnknownSchemaNodeBuilder("usnb", 151, new QName(simpleUri, "tst"), schemaPathB); + UnknownSchemaNodeBuilderImpl usnb = new UnknownSchemaNodeBuilderImpl("usnb", 151, new QName(simpleUri, "tst"), schemaPathB); + UnknownSchemaNodeBuilderImpl usnb1 = new UnknownSchemaNodeBuilderImpl("usnb", 151, new QName(simpleUri, "tst"), schemaPathB); assertEquals("rh should equal to rh1", rh, rh1); rh1.addUnknownNodeBuilder(usnb); @@ -206,9 +210,9 @@ public class RefineHolderTest { SchemaPath path = org.mockito.Mockito.mock(SchemaPath.class); - UnknownSchemaNodeBuilder usnbA = new UnknownSchemaNodeBuilder("usnbA", 151, new QName(simpleUriA, "tst"), path); - UnknownSchemaNodeBuilder usnbB = new UnknownSchemaNodeBuilder("usnbB", 151, new QName(simpleUriB, "tst"), path); - UnknownSchemaNodeBuilder usnbAParent = new UnknownSchemaNodeBuilder("usnbAParent", 151, new QName(simpleUriA, + UnknownSchemaNodeBuilderImpl usnbA = new UnknownSchemaNodeBuilderImpl("usnbA", 151, new QName(simpleUriA, "tst"), path); + UnknownSchemaNodeBuilderImpl usnbB = new UnknownSchemaNodeBuilderImpl("usnbB", 151, new QName(simpleUriB, "tst"), path); + UnknownSchemaNodeBuilderImpl usnbAParent = new UnknownSchemaNodeBuilderImpl("usnbAParent", 151, new QName(simpleUriA, "tst"), path); usnbA.setParent(usnbAParent);