From 40cc734f65f305ecb2d5d7e01b694e5e54f716e1 Mon Sep 17 00:00:00 2001 From: Gregor Zatko Date: Wed, 22 Apr 2015 15:56:11 +0200 Subject: [PATCH] Sonar issues clean-up Change-Id: I9267a5e8dc8347f04a04977043b558369e35670b Signed-off-by: Gregor Zatko --- .../yangtools/yang/model/api/SchemaPath.java | 37 +-- .../model/api/stmt/SchemaNodeIdentifier.java | 37 +-- .../repo/api/SchemaResolutionException.java | 4 +- .../model/repo/api/SchemaSourceFilter.java | 4 +- .../yang/model/repo/api/SourceIdentifier.java | 23 +- .../parser/builder/impl/BuilderUtils.java | 67 +++--- .../yang/parser/builder/impl/CopyUtils.java | 22 +- .../parser/builder/impl/GroupingUtils.java | 5 +- .../parser/builder/impl/ModuleBuilder.java | 212 +++++++++--------- .../yang/parser/builder/impl/ModuleImpl.java | 3 +- .../builder/impl/RpcDefinitionBuilder.java | 10 +- .../yang/parser/builder/impl/TypeUtils.java | 10 +- .../yang/parser/impl/BasicValidations.java | 2 +- .../yang/parser/impl/YangParserImpl.java | 104 +++++---- .../parser/impl/YangParserListenerImpl.java | 113 ++++++---- .../impl/util/URLSchemaContextResolver.java | 4 +- .../impl/util/YangModelDependencyInfo.java | 28 +-- .../repo/SharedSchemaContextFactory.java | 39 ++-- .../spi/meta/AbstractStatementSupport.java | 7 +- .../parser/spi/meta/NamespaceBehaviour.java | 17 -- .../parser/spi/meta/StatementSupport.java | 9 +- .../spi/meta/StatementSupportBundle.java | 16 +- .../parser/spi/meta/StmtContextUtils.java | 3 +- .../stmt/reactor/BuildGlobalContext.java | 6 +- .../parser/stmt/reactor/ModifierImpl.java | 6 +- .../stmt/reactor/RootStatementContext.java | 4 +- .../stmt/reactor/StatementContextBase.java | 3 +- .../reactor/StatementDefinitionContext.java | 3 +- .../stmt/reactor/SubstatementContext.java | 3 +- .../parser/stmt/rfc6020/AugmentUtils.java | 16 +- .../stmt/rfc6020/CaseStatementImpl.java | 10 +- .../stmt/rfc6020/GroupingStatementImpl.java | 13 +- .../parser/stmt/rfc6020/GroupingUtils.java | 11 +- .../stmt/rfc6020/ModuleStatementSupport.java | 24 +- .../stmt/rfc6020/PrefixStatementImpl.java | 2 +- .../stmt/rfc6020/SubmoduleStatementImpl.java | 22 +- .../stmt/rfc6020/UsesStatementImpl.java | 7 +- .../yang/parser/stmt/rfc6020/Utils.java | 10 +- ...tEffectiveDocumentedDataNodeContainer.java | 2 + .../AbstractEffectiveSchemaContext.java | 5 +- .../AnyXmlEffectiveStatementImpl.java | 6 +- .../AugmentEffectiveStatementImpl.java | 6 +- .../effective/CaseEffectiveStatementImpl.java | 12 +- .../ChoiceEffectiveStatementImpl.java | 18 +- .../ContainerEffectiveStatementImpl.java | 12 +- .../effective/EffectiveSchemaContext.java | 8 +- .../effective/EffectiveStatementBase.java | 12 +- .../ExtensionEffectiveStatementImpl.java | 8 +- .../IdentityEffectiveStatementImpl.java | 6 +- .../InputEffectiveStatementImpl.java | 12 +- .../effective/LeafEffectiveStatementImpl.java | 6 +- .../LeafListEffectiveStatementImpl.java | 6 +- .../effective/ListEffectiveStatementImpl.java | 18 +- .../ModuleEffectiveStatementImpl.java | 12 +- .../NotificationEffectiveStatementImpl.java | 12 +- .../OutputEffectiveStatementImpl.java | 12 +- .../effective/RpcEffectiveStatementImpl.java | 18 +- .../yang/parser/util/TopologicalSort.java | 25 +-- .../parser/builder/impl/BuilderUtilsTest.java | 51 +++-- 59 files changed, 598 insertions(+), 585 deletions(-) diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaPath.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaPath.java index 985a7cdd7d..cc8f6feebd 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaPath.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaPath.java @@ -24,6 +24,7 @@ import org.opendaylight.yangtools.yang.common.QName; * Represents unique path to the every node inside the module. */ public abstract class SchemaPath implements Immutable { + /** * An absolute SchemaPath. */ @@ -97,6 +98,18 @@ public abstract class SchemaPath implements Immutable { */ private volatile ImmutableList legacyPath; + protected SchemaPath(final SchemaPath parent, final QName qname) { + this.parent = parent; + this.qname = qname; + + int h = parent == null ? 0 : parent.hashCode(); + if (qname != null) { + h = h * 31 + qname.hashCode(); + } + + hash = h; + } + private ImmutableList getLegacyPath() { ImmutableList ret = legacyPath; if (ret == null) { @@ -120,18 +133,6 @@ public abstract class SchemaPath implements Immutable { return getLegacyPath(); } - protected SchemaPath(final SchemaPath parent, final QName qname) { - this.parent = parent; - this.qname = qname; - - int h = parent == null ? 0 : parent.hashCode(); - if (qname != null) { - h = h * 31 + qname.hashCode(); - } - - hash = h; - } - /** * Constructs new instance of this class with the concrete path. * @@ -185,12 +186,12 @@ public abstract class SchemaPath implements Immutable { return this; } - SchemaPath parent = this; + SchemaPath parentPath = this; for (QName qname : relative) { - parent = parent.createInstance(parent, qname); + parentPath = parentPath.createInstance(parentPath, qname); } - return parent; + return parentPath; } /** @@ -202,12 +203,12 @@ public abstract class SchemaPath implements Immutable { public SchemaPath createChild(final SchemaPath relative) { Preconditions.checkArgument(!relative.isAbsolute(), "Child creation requires relative path"); - SchemaPath parent = this; + SchemaPath parentPath = this; for (QName qname : relative.getPathFromRoot()) { - parent = parent.createInstance(parent, qname); + parentPath = parentPath.createInstance(parentPath, qname); } - return parent; + return parentPath; } /** diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/SchemaNodeIdentifier.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/SchemaNodeIdentifier.java index bacf0c41cc..77c36f1b8e 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/SchemaNodeIdentifier.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/SchemaNodeIdentifier.java @@ -26,6 +26,7 @@ import org.opendaylight.yangtools.yang.common.QName; * */ public abstract class SchemaNodeIdentifier implements Immutable { + /** * An absolute schema node identifier. */ @@ -99,6 +100,18 @@ public abstract class SchemaNodeIdentifier implements Immutable { */ private volatile ImmutableList legacyPath; + protected SchemaNodeIdentifier(final SchemaNodeIdentifier parent, final QName qname) { + this.parent = parent; + this.qname = qname; + + int h = parent == null ? 0 : parent.hashCode(); + if (qname != null) { + h = h * 31 + qname.hashCode(); + } + + hash = h; + } + private ImmutableList getLegacyPath() { ImmutableList ret = legacyPath; if (ret == null) { @@ -122,18 +135,6 @@ public abstract class SchemaNodeIdentifier implements Immutable { return getLegacyPath(); } - protected SchemaNodeIdentifier(final SchemaNodeIdentifier parent, final QName qname) { - this.parent = parent; - this.qname = qname; - - int h = parent == null ? 0 : parent.hashCode(); - if (qname != null) { - h = h * 31 + qname.hashCode(); - } - - hash = h; - } - /** * Constructs new instance of this class with the concrete path. * @@ -187,12 +188,12 @@ public abstract class SchemaNodeIdentifier implements Immutable { return this; } - SchemaNodeIdentifier parent = this; + SchemaNodeIdentifier parentNode = this; for (QName qname : relative) { - parent = parent.createInstance(parent, qname); + parentNode = parentNode.createInstance(parentNode, qname); } - return parent; + return parentNode; } /** @@ -204,12 +205,12 @@ public abstract class SchemaNodeIdentifier implements Immutable { public SchemaNodeIdentifier createChild(final SchemaNodeIdentifier relative) { Preconditions.checkArgument(!relative.isAbsolute(), "Child creation requires relative path"); - SchemaNodeIdentifier parent = this; + SchemaNodeIdentifier parentNode = this; for (QName qname : relative.getPathFromRoot()) { - parent = parent.createInstance(parent, qname); + parentNode = parentNode.createInstance(parentNode, qname); } - return parent; + return parentNode; } /** diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SchemaResolutionException.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SchemaResolutionException.java index 0070cab71f..9f5e22bc9f 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SchemaResolutionException.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SchemaResolutionException.java @@ -23,6 +23,9 @@ import org.opendaylight.yangtools.yang.model.api.ModuleImport; */ @Beta public class SchemaResolutionException extends SchemaSourceException { + + private static final String MESSAGE_BLUEPRINT = "%s, resolved sources: %s, unsatisfied imports: %s"; + private static final long serialVersionUID = 1L; private final Multimap unsatisfiedImports; private final Collection resolvedSources; @@ -48,7 +51,6 @@ public class SchemaResolutionException extends SchemaSourceException { this.resolvedSources = ImmutableList.copyOf(resolvedSources); } - private static final String MESSAGE_BLUEPRINT = "%s, resolved sources: %s, unsatisfied imports: %s"; private static String formatMessage(final String message, final Collection resolvedSources, final Multimap unsatisfiedImports) { return String.format(MESSAGE_BLUEPRINT, message, resolvedSources, unsatisfiedImports); } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SchemaSourceFilter.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SchemaSourceFilter.java index 6da4ee3012..85b26a52d4 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SchemaSourceFilter.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SchemaSourceFilter.java @@ -24,12 +24,12 @@ public interface SchemaSourceFilter { * A {@link SchemaSourceFilter} which accepts any schema source it is presented with. */ public static final SchemaSourceFilter ALWAYS_ACCEPT = new SchemaSourceFilter() { - private final Iterable> REPRESENTATIONS = + private final Iterable> Representations = Collections.>singletonList(SchemaSourceRepresentation.class); @Override public Iterable> supportedRepresentations() { - return REPRESENTATIONS; + return Representations; } @Override diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SourceIdentifier.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SourceIdentifier.java index f46ed3f426..0b74d4b63f 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SourceIdentifier.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SourceIdentifier.java @@ -56,12 +56,22 @@ public final class SourceIdentifier implements Identifier, Immutable { */ public static final Pattern REVISION_PATTERN = Pattern.compile("\\d\\d\\d\\d-\\d\\d-\\d\\d"); - private static final ObjectCache CACHE = ObjectCacheFactory.getObjectCache(SourceIdentifier.class); private static final long serialVersionUID = 1L; private final String revision; private final String name; + /** + * + * Creates new YANG Schema source identifier for sources without revision. + * {@link SourceIdentifier#NOT_PRESENT_FORMATTED_REVISION} as default revision. + * + * @param name Name of schema + */ + public SourceIdentifier(final String name) { + this(name, NOT_PRESENT_FORMATTED_REVISION); + } + /** * Creates new YANG Schema source identifier. * @@ -93,17 +103,6 @@ public final class SourceIdentifier implements Identifier, Immutable { return CACHE.getReference(this); } - /** - * - * Creates new YANG Schema source identifier for sources without revision. - * {@link SourceIdentifier#NOT_PRESENT_FORMATTED_REVISION} as default revision. - * - * @param name Name of schema - */ - public SourceIdentifier(final String name) { - this(name, NOT_PRESENT_FORMATTED_REVISION); - } - /** * Returns model name * diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/BuilderUtils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/BuilderUtils.java index 975b683dd6..e98553e800 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/BuilderUtils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/BuilderUtils.java @@ -29,6 +29,7 @@ import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.NavigableMap; import java.util.Set; import java.util.TreeMap; import org.antlr.v4.runtime.tree.ParseTree; @@ -83,6 +84,7 @@ public final class BuilderUtils { private static final Date NULL_DATE = new Date(0L); private static final String INPUT = "input"; private static final String OUTPUT = "output"; + private static final String CHILD_NOT_FOUND_IN_NODE_STR = "Child {} not found in node {}"; private BuilderUtils() { } @@ -148,7 +150,7 @@ public final class BuilderUtils { * current line in yang model * @return module builder if found, null otherwise */ - public static ModuleBuilder findModuleFromBuilders(final Map> modules, + public static ModuleBuilder findModuleFromBuilders(final Map> modules, final ModuleBuilder module, final String prefix, final int line) { ModuleBuilder dependentModule; Date dependentModuleRevision; @@ -165,7 +167,7 @@ public final class BuilderUtils { String dependentModuleName = dependentModuleImport.getModuleName(); dependentModuleRevision = dependentModuleImport.getRevision(); - TreeMap moduleBuildersByRevision = modules.get(dependentModuleName); + NavigableMap moduleBuildersByRevision = modules.get(dependentModuleName); if (moduleBuildersByRevision == null) { return null; } @@ -181,12 +183,10 @@ public final class BuilderUtils { public static ModuleBuilder findModuleFromBuilders(ModuleImport imp, Iterable modules) { String name = imp.getModuleName(); Date revision = imp.getRevision(); - TreeMap map = new TreeMap<>(); + NavigableMap map = new TreeMap<>(); for (ModuleBuilder module : modules) { - if (module != null) { - if (module.getName().equals(name)) { - map.put(module.getRevision(), module); - } + if (module != null && module.getName().equals(name)) { + map.put(module.getRevision(), module); } } if (map.isEmpty()) { @@ -216,7 +216,7 @@ public final class BuilderUtils { */ public static Module findModuleFromContext(final SchemaContext context, final ModuleBuilder currentModule, final String prefix, final int line) { - TreeMap modulesByRevision = new TreeMap<>(); + NavigableMap modulesByRevision = new TreeMap<>(); ModuleImport dependentModuleImport = currentModule.getImport(prefix); if (dependentModuleImport == null) { @@ -378,9 +378,9 @@ public final class BuilderUtils { node = findUnknownNode(name, parent); } } else if (parent instanceof RpcDefinitionBuilder) { - if ("input".equals(name)) { + if (INPUT.equals(name)) { node = ((RpcDefinitionBuilder) parent).getInput(); - } else if ("output".equals(name)) { + } else if (OUTPUT.equals(name)) { node = ((RpcDefinitionBuilder) parent).getOutput(); } else { if (node == null) { @@ -457,9 +457,8 @@ public final class BuilderUtils { return castOptional(SchemaNodeBuilder.class, findCaseInChoice((ChoiceBuilder) parent, child)); } else if (parent instanceof RpcDefinitionBuilder) { return castOptional(SchemaNodeBuilder.class, findContainerInRpc((RpcDefinitionBuilder) parent, child)); - } else { - LOG.trace("Child {} not found in node {}", child, parent); + LOG.trace(CHILD_NOT_FOUND_IN_NODE_STR, child, parent); return Optional.absent(); } } @@ -504,7 +503,7 @@ public final class BuilderUtils { final QName child) { if (INPUT.equals(child.getLocalName())) { if (parent.getInput() == null) { - QName qname = QName.create(parent.getQName().getModule(), "input"); + QName qname = QName.create(parent.getQName().getModule(), INPUT); final ContainerSchemaNodeBuilder inputBuilder = new ContainerSchemaNodeBuilder(parent.getModuleName(), parent.getLine(), qname, parent.getPath().createChild(qname)); inputBuilder.setParent(parent); @@ -514,7 +513,7 @@ public final class BuilderUtils { return Optional.of(parent.getInput()); } else if (OUTPUT.equals(child.getLocalName())) { if (parent.getOutput() == null) { - QName qname = QName.create(parent.getQName().getModule(), "output"); + QName qname = QName.create(parent.getQName().getModule(), OUTPUT); final ContainerSchemaNodeBuilder outputBuilder = new ContainerSchemaNodeBuilder(parent.getModuleName(), parent.getLine(), qname, parent.getPath().createChild(qname)); outputBuilder.setParent(parent); @@ -523,7 +522,7 @@ public final class BuilderUtils { } return Optional.of(parent.getOutput()); } - LOG.trace("Child {} not found in node {}", child, parent); + LOG.trace(CHILD_NOT_FOUND_IN_NODE_STR, child, parent); return Optional.absent(); } @@ -544,7 +543,7 @@ public final class BuilderUtils { return Optional.of(caze); } } - LOG.trace("Child {} not found in node {}", child, parent); + LOG.trace(CHILD_NOT_FOUND_IN_NODE_STR, child, parent); return Optional.absent(); } @@ -565,7 +564,7 @@ public final class BuilderUtils { return Optional.of(childNode); } } - LOG.trace("Child {} not found in node {}", child, parent); + LOG.trace(CHILD_NOT_FOUND_IN_NODE_STR, child, parent); return Optional.absent(); } @@ -625,7 +624,7 @@ public final class BuilderUtils { return Optional. of(childNode); } } - LOG.trace("Child {} not found in node {}", child, builder); + LOG.trace(CHILD_NOT_FOUND_IN_NODE_STR, child, builder); return Optional.absent(); } @@ -730,19 +729,19 @@ public final class BuilderUtils { final SchemaPath schemaPath = parentPath.createChild(qname); if (node instanceof AnyXmlSchemaNode) { - return new AnyXmlBuilder(moduleName, line, qname, schemaPath, ((AnyXmlSchemaNode) node)); + return new AnyXmlBuilder(moduleName, line, qname, schemaPath, (AnyXmlSchemaNode) node); } else if (node instanceof ChoiceSchemaNode) { - return new ChoiceBuilder(moduleName, line, qname, schemaPath, ((ChoiceSchemaNode) node)); + return new ChoiceBuilder(moduleName, line, qname, schemaPath, (ChoiceSchemaNode) node); } else if (node instanceof ContainerSchemaNode) { - return new ContainerSchemaNodeBuilder(moduleName, line, qname, schemaPath, ((ContainerSchemaNode) node)); + return new ContainerSchemaNodeBuilder(moduleName, line, qname, schemaPath, (ContainerSchemaNode) node); } else if (node instanceof LeafSchemaNode) { - return new LeafSchemaNodeBuilder(moduleName, line, qname, schemaPath, ((LeafSchemaNode) node)); + return new LeafSchemaNodeBuilder(moduleName, line, qname, schemaPath, (LeafSchemaNode) node); } else if (node instanceof LeafListSchemaNode) { - return new LeafListSchemaNodeBuilder(moduleName, line, qname, schemaPath, ((LeafListSchemaNode) node)); + return new LeafListSchemaNodeBuilder(moduleName, line, qname, schemaPath, (LeafListSchemaNode) node); } else if (node instanceof ListSchemaNode) { - return new ListSchemaNodeBuilder(moduleName, line, qname, schemaPath, ((ListSchemaNode) node)); + return new ListSchemaNodeBuilder(moduleName, line, qname, schemaPath, (ListSchemaNode) node); } else if (node instanceof ChoiceCaseNode) { - return new ChoiceCaseBuilder(moduleName, line, qname, schemaPath, ((ChoiceCaseNode) node)); + return new ChoiceCaseBuilder(moduleName, line, qname, schemaPath, (ChoiceCaseNode) node); } else { throw new YangParseException(moduleName, line, "Failed to copy node: Unknown type of DataSchemaNode: " + node); @@ -767,7 +766,7 @@ public final class BuilderUtils { for (TypeDefinition node : nodes) { QName qname = QName.create(parentQName, node.getQName().getLocalName()); SchemaPath schemaPath = parentPath.createChild(qname); - result.add(new TypeDefinitionBuilderImpl(moduleName, line, qname, schemaPath, ((ExtendedType) node))); + result.add(new TypeDefinitionBuilderImpl(moduleName, line, qname, schemaPath, (ExtendedType) node)); } return result; } @@ -806,8 +805,8 @@ public final class BuilderUtils { } } - public static ModuleBuilder findModule(final QName qname, final Map> modules) { - TreeMap map = modules.get(qname.getNamespace()); + public static ModuleBuilder findModule(final QName qname, final Map> modules) { + NavigableMap map = modules.get(qname.getNamespace()); if (map == null) { return null; } @@ -817,9 +816,9 @@ public final class BuilderUtils { return map.get(qname.getRevision()); } - public static Map> createYangNamespaceContext( + public static Map> createYangNamespaceContext( final Collection modules, final Optional context) { - Map> namespaceContext = new HashMap<>(); + Map> namespaceContext = new HashMap<>(); Set submodules = new HashSet<>(); // first read ParseTree collection and separate modules and submodules for (ParseTree module : modules) { @@ -858,7 +857,7 @@ public final class BuilderUtils { } } // update namespaceContext - TreeMap revToNs = namespaceContext.get(moduleName); + NavigableMap revToNs = namespaceContext.get(moduleName); if (revToNs == null) { revToNs = new TreeMap<>(); revToNs.put(rev, namespace); @@ -872,7 +871,7 @@ public final class BuilderUtils { // from SchemaContext if (context.isPresent()) { for (Module module : context.get().getModules()) { - TreeMap revToNs = namespaceContext.get(module.getName()); + NavigableMap revToNs = namespaceContext.get(module.getName()); if (revToNs == null) { revToNs = new TreeMap<>(); revToNs.put(module.getRevision(), module.getNamespace()); @@ -892,13 +891,13 @@ public final class BuilderUtils { ParseTree belongsCtx = subHeaderCtx.getChild(j); if (belongsCtx instanceof Belongs_to_stmtContext) { final String belongsTo = ParserListenerUtils.stringFromNode(belongsCtx); - TreeMap ns = namespaceContext.get(belongsTo); + NavigableMap ns = namespaceContext.get(belongsTo); if (ns == null) { throw new YangParseException(moduleName, submodule.getStart().getLine(), String.format( "Unresolved belongs-to statement: %s", belongsTo)); } // submodule get namespace and revision from module - TreeMap subNs = new TreeMap<>(); + NavigableMap subNs = new TreeMap<>(); subNs.put(ns.firstKey(), ns.firstEntry().getValue()); namespaceContext.put(moduleName, subNs); } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/CopyUtils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/CopyUtils.java index 55cf82726d..8f9ffa98b4 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/CopyUtils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/CopyUtils.java @@ -77,7 +77,7 @@ public final class CopyUtils { copy.setAddedByUses(old.isAddedByUses()); copy.setConfiguration(old.isConfiguration()); for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { - copy.addUnknownNodeBuilder((copy(un, copy, updateQName))); + copy.addUnknownNodeBuilder(copy(un, copy, updateQName)); } return copy; @@ -105,7 +105,7 @@ public final class CopyUtils { copy.addAugmentation(copyAugment(augment, copy)); } for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { - copy.addUnknownNodeBuilder((copy(un, copy, updateQName))); + copy.addUnknownNodeBuilder(copy(un, copy, updateQName)); } return copy; @@ -133,7 +133,7 @@ public final class CopyUtils { copy.addUsesNode(copyUses(oldUses, copy)); } for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { - copy.addUnknownNodeBuilder((copy(un, copy, updateQName))); + copy.addUnknownNodeBuilder(copy(un, copy, updateQName)); } return copy; @@ -174,7 +174,7 @@ public final class CopyUtils { copy.addAugmentation(copyAugment(augment, copy)); } for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { - copy.addUnknownNodeBuilder((copy(un, copy, updateQName))); + copy.addUnknownNodeBuilder(copy(un, copy, updateQName)); } return copy; @@ -198,7 +198,7 @@ public final class CopyUtils { copy.setAddedByUses(old.isAddedByUses()); copy.setConfiguration(old.isConfiguration()); for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { - copy.addUnknownNodeBuilder((copy(un, copy, updateQName))); + copy.addUnknownNodeBuilder(copy(un, copy, updateQName)); } if (old.getType() == null) { @@ -231,7 +231,7 @@ public final class CopyUtils { copy.setAddedByUses(old.isAddedByUses()); copy.setConfiguration(old.isConfiguration()); for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { - copy.addUnknownNodeBuilder((copy(un, copy, updateQName))); + copy.addUnknownNodeBuilder(copy(un, copy, updateQName)); } if (old.getType() == null) { @@ -279,7 +279,7 @@ public final class CopyUtils { copy.addAugmentation(copyAugment(augment, copy)); } for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { - copy.addUnknownNodeBuilder((copy(un, copy, updateQName))); + copy.addUnknownNodeBuilder(copy(un, copy, updateQName)); } copy.setUserOrdered(old.isUserOrdered()); @@ -314,7 +314,7 @@ public final class CopyUtils { copy.addUsesNode(copyUses(oldUses, copy)); } for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { - copy.addUnknownNodeBuilder((copy(un, copy, updateQName))); + copy.addUnknownNodeBuilder(copy(un, copy, updateQName)); } return copy; @@ -352,7 +352,7 @@ public final class CopyUtils { } for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { - type.addUnknownNodeBuilder((copy(un, type, updateQName))); + type.addUnknownNodeBuilder(copy(un, type, updateQName)); } type.setRanges(old.getRanges()); @@ -410,7 +410,7 @@ public final class CopyUtils { copy.addUsesNode(copyUses(oldUses, copy)); } for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { - copy.addUnknownNodeBuilder((copy(un, copy, false))); + copy.addUnknownNodeBuilder(copy(un, copy, false)); } return copy; @@ -433,7 +433,7 @@ public final class CopyUtils { c.setStatus(old.getStatus()); c.setAddedByUses(old.isAddedByUses()); for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { - c.addUnknownNodeBuilder((copy(un, c, updateQName))); + c.addUnknownNodeBuilder(copy(un, c, updateQName)); } c.setExtensionBuilder(old.getExtensionBuilder()); c.setExtensionDefinition(old.getExtensionDefinition()); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/GroupingUtils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/GroupingUtils.java index e1792c899f..eb06329eaa 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/GroupingUtils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/GroupingUtils.java @@ -12,8 +12,8 @@ import java.net.URI; import java.util.Comparator; import java.util.Date; import java.util.Map; +import java.util.NavigableMap; import java.util.Set; -import java.util.TreeMap; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.parser.builder.api.Builder; @@ -29,7 +29,6 @@ import org.slf4j.LoggerFactory; public final class GroupingUtils { private static final Logger LOG = LoggerFactory.getLogger(GroupingUtils.class); - private static final Splitter COLON_SPLITTER = Splitter.on(':'); private static final Splitter SLASH_SPLITTER = Splitter.on('/'); private GroupingUtils() { @@ -49,7 +48,7 @@ public final class GroupingUtils { * if no grouping found */ public static GroupingBuilder getTargetGroupingFromModules(final UsesNodeBuilder usesBuilder, - final Map> modules, final ModuleBuilder module) { + final Map> modules, final ModuleBuilder module) { final int line = usesBuilder.getLine(); SchemaPath groupingPath = usesBuilder.getTargetGroupingPath(); 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 7cac743689..120ebad957 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 @@ -61,6 +61,8 @@ import org.opendaylight.yangtools.yang.parser.util.YangParseException; */ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder implements DocumentedNodeBuilder { + private static final String GROUPING_STR = "Grouping"; + private static final String TYPEDEF_STR = "typedef"; private ModuleImpl instance; private final String name; private final String sourcePath; @@ -443,8 +445,8 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im public ExtensionBuilder addExtension(final QName qname, final int line, final SchemaPath path) { checkNotSealed(); - Builder parent = getActualNode(); - if (!(parent.equals(this))) { + Builder parentBuilder = getActualNode(); + if (!(parentBuilder.equals(this))) { throw new YangParseException(name, line, "extension can be defined only in module or submodule"); } @@ -455,7 +457,7 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im } } final ExtensionBuilder builder = new ExtensionBuilderImpl(name, line, qname, path); - builder.setParent(parent); + builder.setParent(parentBuilder); addedExtensions.add(builder); return builder; } @@ -464,9 +466,9 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im checkNotSealed(); final ContainerSchemaNodeBuilder builder = new ContainerSchemaNodeBuilder(name, line, qname, schemaPath); - Builder parent = getActualNode(); - builder.setParent(parent); - addChildToParent(parent, builder, qname.getLocalName()); + Builder parentBuilder = getActualNode(); + builder.setParent(parentBuilder); + addChildToParent(parentBuilder, builder, qname.getLocalName()); return builder; } @@ -475,9 +477,9 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im checkNotSealed(); final ListSchemaNodeBuilder builder = new ListSchemaNodeBuilder(name, line, qname, schemaPath); - Builder parent = getActualNode(); - builder.setParent(parent); - addChildToParent(parent, builder, qname.getLocalName()); + Builder parentBuilder = getActualNode(); + builder.setParent(parentBuilder); + addChildToParent(parentBuilder, builder, qname.getLocalName()); allLists.add(builder); return builder; @@ -487,9 +489,9 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im checkNotSealed(); final LeafSchemaNodeBuilder builder = new LeafSchemaNodeBuilder(name, line, qname, schemaPath); - Builder parent = getActualNode(); - builder.setParent(parent); - addChildToParent(parent, builder, qname.getLocalName()); + Builder parentBuilder = getActualNode(); + builder.setParent(parentBuilder); + addChildToParent(parentBuilder, builder, qname.getLocalName()); return builder; } @@ -498,9 +500,9 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im checkNotSealed(); final LeafListSchemaNodeBuilder builder = new LeafListSchemaNodeBuilder(name, line, qname, schemaPath); - Builder parent = getActualNode(); - builder.setParent(parent); - addChildToParent(parent, builder, qname.getLocalName()); + Builder parentBuilder = getActualNode(); + builder.setParent(parentBuilder); + addChildToParent(parentBuilder, builder, qname.getLocalName()); return builder; } @@ -509,31 +511,31 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im checkNotSealed(); final GroupingBuilder builder = new GroupingBuilderImpl(name, line, qname, path); - Builder parent = getActualNode(); - builder.setParent(parent); + Builder parentBuilder = getActualNode(); + builder.setParent(parentBuilder); String groupingName = qname.getLocalName(); - if (parent.equals(this)) { + if (parentBuilder.equals(this)) { for (GroupingBuilder addedGrouping : getGroupingBuilders()) { if (addedGrouping.getQName().getLocalName().equals(groupingName)) { - raiseYangParserException("", "Grouping", groupingName, line, addedGrouping.getLine()); + raiseYangParserException("", GROUPING_STR, groupingName, line, addedGrouping.getLine()); } } addGrouping(builder); } else { - if (parent instanceof DataNodeContainerBuilder) { - DataNodeContainerBuilder parentNode = (DataNodeContainerBuilder) parent; + if (parentBuilder instanceof DataNodeContainerBuilder) { + DataNodeContainerBuilder parentNode = (DataNodeContainerBuilder) parentBuilder; for (GroupingBuilder addedGrouping : parentNode.getGroupingBuilders()) { if (addedGrouping.getQName().getLocalName().equals(groupingName)) { - raiseYangParserException("", "Grouping", groupingName, line, addedGrouping.getLine()); + raiseYangParserException("", GROUPING_STR, groupingName, line, addedGrouping.getLine()); } } parentNode.addGrouping(builder); - } else if (parent instanceof RpcDefinitionBuilder) { - RpcDefinitionBuilder parentNode = (RpcDefinitionBuilder) parent; + } else if (parentBuilder instanceof RpcDefinitionBuilder) { + RpcDefinitionBuilder parentNode = (RpcDefinitionBuilder) parentBuilder; for (GroupingBuilder child : parentNode.getGroupings()) { if (child.getQName().getLocalName().equals(groupingName)) { - raiseYangParserException("", "Grouping", groupingName, line, child.getLine()); + raiseYangParserException("", GROUPING_STR, groupingName, line, child.getLine()); } } parentNode.addGrouping(builder); @@ -552,10 +554,10 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im final AugmentationSchemaBuilder builder = new AugmentationSchemaBuilderImpl(name, line, augmentTargetStr, targetPath, order); - Builder parent = getActualNode(); - builder.setParent(parent); + Builder parentBuilder = getActualNode(); + builder.setParent(parentBuilder); - if (parent.equals(this)) { + if (parentBuilder.equals(this)) { // augment can be declared only under 'module' ... if (!(augmentTargetStr.startsWith("/"))) { throw new YangParseException( @@ -566,13 +568,13 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im augmentBuilders.add(builder); } else { // ... or 'uses' statement - if (parent instanceof UsesNodeBuilder) { + if (parentBuilder instanceof UsesNodeBuilder) { if (augmentTargetStr.startsWith("/")) { throw new YangParseException(name, line, "If 'augment' statement is a substatement to the 'uses' statement, it cannot contain absolute path (" + augmentTargetStr + ")"); } - ((UsesNodeBuilder) parent).addAugment(builder); + ((UsesNodeBuilder) parentBuilder).addAugment(builder); } else { throw new YangParseException(name, line, "Augment can be declared only under module or uses statement."); } @@ -586,18 +588,18 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im checkNotSealed(); final UsesNodeBuilder usesBuilder = new UsesNodeBuilderImpl(name, line, grouping); - Builder parent = getActualNode(); - usesBuilder.setParent(parent); + Builder parentBuilder = getActualNode(); + usesBuilder.setParent(parentBuilder); - if (parent.equals(this)) { + if (parentBuilder.equals(this)) { addUsesNode(usesBuilder); } else { - if (!(parent instanceof DataNodeContainerBuilder)) { + if (!(parentBuilder instanceof DataNodeContainerBuilder)) { throw new YangParseException(name, line, "Unresolved parent of uses '" + grouping + "'."); } - ((DataNodeContainerBuilder) parent).addUsesNode(usesBuilder); + ((DataNodeContainerBuilder) parentBuilder).addUsesNode(usesBuilder); } - if (parent instanceof AugmentationSchemaBuilder) { + if (parentBuilder instanceof AugmentationSchemaBuilder) { usesBuilder.setAugmenting(true); } @@ -607,23 +609,23 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im public void addRefine(final RefineHolderImpl refine) { checkNotSealed(); - final Builder parent = getActualNode(); - if (!(parent instanceof UsesNodeBuilder)) { + final Builder parentBuilder = getActualNode(); + if (!(parentBuilder instanceof UsesNodeBuilder)) { throw new YangParseException(name, refine.getLine(), "refine can be defined only in uses statement"); } - ((UsesNodeBuilder) parent).addRefine(refine); - refine.setParent(parent); + ((UsesNodeBuilder) parentBuilder).addRefine(refine); + refine.setParent(parentBuilder); } public RpcDefinitionBuilder addRpc(final int line, final QName qname, final SchemaPath path) { checkNotSealed(); - Builder parent = getActualNode(); - if (!(parent.equals(this))) { + Builder parentBuilder = getActualNode(); + if (!(parentBuilder.equals(this))) { throw new YangParseException(name, line, "rpc can be defined only in module or submodule"); } final RpcDefinitionBuilder rpcBuilder = new RpcDefinitionBuilder(name, line, qname, path); - rpcBuilder.setParent(parent); + rpcBuilder.setParent(parentBuilder); String rpcName = qname.getLocalName(); checkNotConflictingInDataNamespace(rpcName, line); @@ -651,11 +653,11 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im public ContainerSchemaNodeBuilder addRpcInput(final int line, final QName qname, final SchemaPath schemaPath) { checkNotSealed(); - final Builder parent = getActualNode(); - if (!(parent instanceof RpcDefinitionBuilder)) { + final Builder parentBuilder = getActualNode(); + if (!(parentBuilder instanceof RpcDefinitionBuilder)) { throw new YangParseException(name, line, "input can be defined only in rpc statement"); } - final RpcDefinitionBuilder rpc = (RpcDefinitionBuilder) parent; + final RpcDefinitionBuilder rpc = (RpcDefinitionBuilder) parentBuilder; final ContainerSchemaNodeBuilder inputBuilder = new ContainerSchemaNodeBuilder(name, line, qname, schemaPath); inputBuilder.setParent(rpc); @@ -666,11 +668,11 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im public ContainerSchemaNodeBuilder addRpcOutput(final SchemaPath schemaPath, final QName qname, final int line) { checkNotSealed(); - final Builder parent = getActualNode(); - if (!(parent instanceof RpcDefinitionBuilder)) { + final Builder parentBuilder = getActualNode(); + if (!(parentBuilder instanceof RpcDefinitionBuilder)) { throw new YangParseException(name, line, "output can be defined only in rpc statement"); } - final RpcDefinitionBuilder rpc = (RpcDefinitionBuilder) parent; + final RpcDefinitionBuilder rpc = (RpcDefinitionBuilder) parentBuilder; final ContainerSchemaNodeBuilder outputBuilder = new ContainerSchemaNodeBuilder(name, line, qname, schemaPath); outputBuilder.setParent(rpc); @@ -686,8 +688,8 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im public NotificationBuilder addNotification(final int line, final QName qname, final SchemaPath path) { checkNotSealed(); - final Builder parent = getActualNode(); - if (!(parent.equals(this))) { + final Builder parentBuilder = getActualNode(); + if (!(parentBuilder.equals(this))) { throw new YangParseException(name, line, "notification can be defined only in module or submodule"); } @@ -695,20 +697,20 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im checkNotConflictingInDataNamespace(notificationName, line); final NotificationBuilder builder = new NotificationBuilder(name, line, qname, path); - builder.setParent(parent); + builder.setParent(parentBuilder); addedNotifications.add(builder); return builder; } public FeatureBuilder addFeature(final int line, final QName qname, final SchemaPath path) { - Builder parent = getActualNode(); - if (!(parent.equals(this))) { + Builder parentBuilder = getActualNode(); + if (!(parentBuilder.equals(this))) { throw new YangParseException(name, line, "feature can be defined only in module or submodule"); } final FeatureBuilder builder = new FeatureBuilder(name, line, qname, path); - builder.setParent(parent); + builder.setParent(parentBuilder); String featureName = qname.getLocalName(); for (FeatureBuilder addedFeature : addedFeatures) { @@ -723,26 +725,26 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im public ChoiceBuilder addChoice(final int line, final QName qname, final SchemaPath path) { final ChoiceBuilder builder = new ChoiceBuilder(name, line, qname, path); - Builder parent = getActualNode(); - builder.setParent(parent); - addChildToParent(parent, builder, qname.getLocalName()); + Builder parentBuilder = getActualNode(); + builder.setParent(parentBuilder); + addChildToParent(parentBuilder, builder, qname.getLocalName()); return builder; } public ChoiceCaseBuilder addCase(final int line, final QName qname, final SchemaPath path) { - Builder parent = getActualNode(); - if (parent == null || parent.equals(this)) { + Builder parentBuilder = getActualNode(); + if (parentBuilder == null || parentBuilder.equals(this)) { throw new YangParseException(name, line, "'case' parent not found"); } final ChoiceCaseBuilder builder = new ChoiceCaseBuilder(name, line, qname, path); - builder.setParent(parent); + builder.setParent(parentBuilder); - if (parent instanceof ChoiceBuilder) { - ((ChoiceBuilder) parent).addCase(builder); - } else if (parent instanceof AugmentationSchemaBuilder) { - ((AugmentationSchemaBuilder) parent).addChildNode(builder); + if (parentBuilder instanceof ChoiceBuilder) { + ((ChoiceBuilder) parentBuilder).addCase(builder); + } else if (parentBuilder instanceof AugmentationSchemaBuilder) { + ((AugmentationSchemaBuilder) parentBuilder).addChildNode(builder); } else { throw new YangParseException(name, line, "Unresolved parent of 'case' " + qname.getLocalName()); } @@ -753,9 +755,9 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im public AnyXmlBuilder addAnyXml(final int line, final QName qname, final SchemaPath schemaPath) { final AnyXmlBuilder builder = new AnyXmlBuilder(name, line, qname, schemaPath); - Builder parent = getActualNode(); - builder.setParent(parent); - addChildToParent(parent, builder, qname.getLocalName()); + Builder parentBuilder = getActualNode(); + builder.setParent(parentBuilder); + addChildToParent(parentBuilder, builder, qname.getLocalName()); return builder; } @@ -765,7 +767,7 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im String nodeName = typedefBuilder.getQName().getLocalName(); for (TypeDefinitionBuilder tdb : getTypeDefinitionBuilders()) { if (tdb.getQName().getLocalName().equals(nodeName)) { - raiseYangParserException("", "typedef", nodeName, typedefBuilder.getLine(), tdb.getLine()); + raiseYangParserException("", TYPEDEF_STR, nodeName, typedefBuilder.getLine(), tdb.getLine()); } } super.addTypedef(typedefBuilder); @@ -774,26 +776,26 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im public TypeDefinitionBuilderImpl addTypedef(final int line, final QName qname, final SchemaPath path) { final TypeDefinitionBuilderImpl builder = new TypeDefinitionBuilderImpl(name, line, qname, path); - Builder parent = getActualNode(); - builder.setParent(parent); + Builder parentBuilder = getActualNode(); + builder.setParent(parentBuilder); String typedefName = qname.getLocalName(); - if (parent.equals(this)) { + if (parentBuilder.equals(this)) { addTypedef(builder); } else { - if (parent instanceof DataNodeContainerBuilder) { - DataNodeContainerBuilder parentNode = (DataNodeContainerBuilder) parent; + if (parentBuilder instanceof DataNodeContainerBuilder) { + DataNodeContainerBuilder parentNode = (DataNodeContainerBuilder) parentBuilder; for (TypeDefinitionBuilder child : parentNode.getTypeDefinitionBuilders()) { if (child.getQName().getLocalName().equals(typedefName)) { - raiseYangParserException("", "typedef", typedefName, line, child.getLine()); + raiseYangParserException("", TYPEDEF_STR, typedefName, line, child.getLine()); } } parentNode.addTypedef(builder); - } else if (parent instanceof RpcDefinitionBuilder) { - RpcDefinitionBuilder rpcParent = (RpcDefinitionBuilder) parent; + } else if (parentBuilder instanceof RpcDefinitionBuilder) { + RpcDefinitionBuilder rpcParent = (RpcDefinitionBuilder) parentBuilder; for (TypeDefinitionBuilder tdb : rpcParent.getTypeDefinitions()) { if (tdb.getQName().getLocalName().equals(builder.getQName().getLocalName())) { - raiseYangParserException("", "typedef", typedefName, line, tdb.getLine()); + raiseYangParserException("", TYPEDEF_STR, typedefName, line, tdb.getLine()); } } rpcParent.addTypedef(builder); @@ -806,22 +808,22 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im } public void setType(final TypeDefinition type) { - Builder parent = getActualNode(); - if (!(parent instanceof TypeAwareBuilder)) { + Builder parentBuilder = getActualNode(); + if (!(parentBuilder instanceof TypeAwareBuilder)) { throw new YangParseException("Failed to set type '" + type.getQName().getLocalName() - + "'. Invalid parent node: " + parent); + + "'. Invalid parent node: " + parentBuilder); } - ((TypeAwareBuilder) parent).setType(type); + ((TypeAwareBuilder) parentBuilder).setType(type); } public UnionTypeBuilder addUnionType(final int line, final QNameModule module) { - final Builder parent = getActualNode(); - if (parent == null) { + final Builder parentBuilder = getActualNode(); + if (parentBuilder == null) { throw new YangParseException(name, line, "Unresolved parent of union type"); } else { final UnionTypeBuilder union = new UnionTypeBuilder(name, line); - if (parent instanceof TypeAwareBuilder) { - ((TypeAwareBuilder) parent).setTypedef(union); + if (parentBuilder instanceof TypeAwareBuilder) { + ((TypeAwareBuilder) parentBuilder).setTypedef(union); return union; } else { throw new YangParseException(name, line, "Invalid parent of union type."); @@ -832,12 +834,12 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im public void addIdentityrefType(final int line, final SchemaPath schemaPath, final String baseString) { final IdentityrefTypeBuilder identityref = new IdentityrefTypeBuilder(name, line, baseString, schemaPath); - final Builder parent = getActualNode(); - if (parent == null) { + final Builder parentBuilder = getActualNode(); + if (parentBuilder == null) { throw new YangParseException(name, line, "Unresolved parent of identityref type."); } else { - if (parent instanceof TypeAwareBuilder) { - final TypeAwareBuilder typeParent = (TypeAwareBuilder) parent; + if (parentBuilder instanceof TypeAwareBuilder) { + final TypeAwareBuilder typeParent = (TypeAwareBuilder) parentBuilder; typeParent.setTypedef(identityref); dirtyNodes.add(typeParent); } else { @@ -847,20 +849,20 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im } public DeviationBuilder addDeviation(final int line, final SchemaPath targetPath) { - Builder parent = getActualNode(); - if (!(parent.equals(this))) { + Builder parentBuilder = getActualNode(); + if (!(parentBuilder.equals(this))) { throw new YangParseException(name, line, "deviation can be defined only in module or submodule"); } final DeviationBuilder builder = new DeviationBuilder(name, line, targetPath); - builder.setParent(parent); + builder.setParent(parentBuilder); deviationBuilders.add(builder); return builder; } public IdentitySchemaNodeBuilder addIdentity(final QName qname, final int line, final SchemaPath path) { - Builder parent = getActualNode(); - if (!(parent.equals(this))) { + Builder parentBuilder = getActualNode(); + if (!(parentBuilder.equals(this))) { throw new YangParseException(name, line, "identity can be defined only in module or submodule"); } String identityName = qname.getLocalName(); @@ -871,7 +873,7 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im } final IdentitySchemaNodeBuilder builder = new IdentitySchemaNodeBuilder(name, line, qname, path); - builder.setParent(parent); + builder.setParent(parentBuilder); addedIdentities.add(builder); return builder; } @@ -883,20 +885,20 @@ public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder im } public UnknownSchemaNodeBuilderImpl addUnknownSchemaNode(final int line, final QName qname, final SchemaPath path) { - final Builder parent = getActualNode(); + final Builder parentBuilder = getActualNode(); final UnknownSchemaNodeBuilderImpl builder = new UnknownSchemaNodeBuilderImpl(name, line, qname, path); - builder.setParent(parent); + builder.setParent(parentBuilder); allUnknownNodes.add(builder); - if (parent.equals(this)) { + if (parentBuilder.equals(this)) { addedUnknownNodes.add(builder); } else { - if (parent instanceof SchemaNodeBuilder) { - parent.addUnknownNodeBuilder(builder); - } else if (parent instanceof DataNodeContainerBuilder) { - parent.addUnknownNodeBuilder(builder); - } else if (parent instanceof RefineHolderImpl) { - parent.addUnknownNodeBuilder(builder); + if (parentBuilder instanceof SchemaNodeBuilder) { + parentBuilder.addUnknownNodeBuilder(builder); + } else if (parentBuilder instanceof DataNodeContainerBuilder) { + parentBuilder.addUnknownNodeBuilder(builder); + } else if (parentBuilder instanceof RefineHolderImpl) { + parentBuilder.addUnknownNodeBuilder(builder); } else { throw new YangParseException(name, line, "Unresolved parent of unknown node '" + qname.getLocalName() + "'"); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ModuleImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ModuleImpl.java index 00018b8dda..f6f152fd35 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ModuleImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ModuleImpl.java @@ -8,6 +8,7 @@ import java.net.URI; import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.NavigableSet; import java.util.Set; import java.util.TreeSet; import org.opendaylight.yangtools.concepts.Immutable; @@ -220,7 +221,7 @@ public final class ModuleImpl extends AbstractDocumentedDataNodeContainer implem } private static Set toImmutableSortedSet(final Set original) { - TreeSet sorted = new TreeSet<>(Comparators.SCHEMA_NODE_COMP); + NavigableSet sorted = new TreeSet<>(Comparators.SCHEMA_NODE_COMP); sorted.addAll(original); return Collections.unmodifiableSet(sorted); } 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 25ad30e2db..1d035a125d 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 @@ -32,6 +32,11 @@ public final class RpcDefinitionBuilder extends AbstractSchemaNodeBuilder { private final Set addedTypedefs = new HashSet<>(); private final Set addedGroupings = new HashSet<>(); + RpcDefinitionBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path) { + super(moduleName, line, qname); + this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); + } + public ContainerSchemaNodeBuilder getInput() { return inputBuilder; } @@ -40,11 +45,6 @@ public final class RpcDefinitionBuilder extends AbstractSchemaNodeBuilder { return outputBuilder; } - RpcDefinitionBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path) { - super(moduleName, line, qname); - this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); - } - @Override public RpcDefinition build() { if (instance != null) { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/TypeUtils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/TypeUtils.java index ad1afc255b..a02baead8d 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/TypeUtils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/TypeUtils.java @@ -12,8 +12,8 @@ import static org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils.f import java.net.URI; import java.util.Date; import java.util.Map; +import java.util.NavigableMap; import java.util.Set; -import java.util.TreeMap; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition; @@ -49,7 +49,7 @@ public final class TypeUtils { * current module */ public static void resolveType(final TypeAwareBuilder nodeToResolve, - final Map> modules, final ModuleBuilder module) { + final Map> modules, final ModuleBuilder module) { QName unknownTypeQName = nodeToResolve.getTypeQName(); final ModuleBuilder dependentModuleBuilder = BuilderUtils.findModule(unknownTypeQName, modules); if (dependentModuleBuilder == null) { @@ -72,7 +72,7 @@ public final class TypeUtils { * current module */ public static void resolveTypeUnion(final UnionTypeBuilder union, - final Map> modules, final ModuleBuilder module) { + final Map> modules, final ModuleBuilder module) { // special handling for identityref types under union for (TypeDefinitionBuilder unionType : union.getTypedefs()) { if (unionType instanceof IdentityrefTypeBuilder) { @@ -111,7 +111,7 @@ public final class TypeUtils { * @return TypeDefinitionBuilder of node type */ private static TypeDefinitionBuilder findUnknownTypeDefinition(final TypeAwareBuilder nodeToResolve, - final ModuleBuilder dependentModuleBuilder, final Map> modules, + final ModuleBuilder dependentModuleBuilder, final Map> modules, final ModuleBuilder module) { final int line = nodeToResolve.getLine(); final QName unknownTypeQName = nodeToResolve.getTypeQName(); @@ -175,7 +175,7 @@ public final class TypeUtils { } private static TypeConstraints findConstraintsFromTypeBuilder(final TypeAwareBuilder nodeToResolve, - final TypeConstraints constraints, final Map> modules, + final TypeConstraints constraints, final Map> modules, final ModuleBuilder builder) { // union and identityref types cannot be restricted diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/BasicValidations.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/BasicValidations.java index 5c79161116..8ee273e817 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/BasicValidations.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/BasicValidations.java @@ -261,7 +261,7 @@ final class BasicValidations { Iterable keyList = ValidationUtil.listKeysFromId(key); Set duplicates = ValidationUtil.getDuplicates(keyList); - if (duplicates.size() != 0) { + if (!duplicates.isEmpty()) { ValidationUtil.ex(ValidationUtil.f("(In (sub)module:%s) %s:%s, %s:%s contains duplicates:%s", rootParentName, ValidationUtil.getSimpleStatementName(parent.getClass()), ValidationUtil.getName(parent), ValidationUtil.getSimpleStatementName(ctx.getClass()), key, 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 5684c045d5..fdc8369f4a 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 @@ -141,7 +141,7 @@ public final class YangParserImpl implements YangContextParser { // module builders sorted by dependencies List sortedBuilders = ModuleDependencySort.sort(resolved); - Map> modules = resolveModulesWithImports(sortedBuilders, null); + Map> modules = resolveModulesWithImports(sortedBuilders, null); Collection unsorted = build(modules).values(); Set result = new LinkedHashSet<>( ModuleDependencySort.sort(unsorted.toArray(new Module[unsorted.size()]))); @@ -218,7 +218,7 @@ public final class YangParserImpl implements YangContextParser { } final List sorted = resolveModuleBuilders(sources, context); - final Map> modules = resolveModulesWithImports(sorted, context); + final Map> modules = resolveModulesWithImports(sorted, context); final Set unsorted = new LinkedHashSet<>(build(modules).values()); if (context != null) { @@ -233,9 +233,9 @@ public final class YangParserImpl implements YangContextParser { return resolveSchemaContext(result); } - private static Map> resolveModulesWithImports(final List sorted, + private static Map> resolveModulesWithImports(final List sorted, final SchemaContext context) { - final Map> modules = orderModules(sorted); + final Map> modules = orderModules(sorted); for (ModuleBuilder module : sorted) { if (module != null) { for (ModuleImport imp : module.getImports().values()) { @@ -244,7 +244,7 @@ public final class YangParserImpl implements YangContextParser { if (targetModule == null) { Module result = findModuleFromContext(context, module, prefix, 0); targetModule = new ModuleBuilder(result); - TreeMap map = modules.get(targetModule.getNamespace()); + NavigableMap map = modules.get(targetModule.getNamespace()); if (map == null) { map = new TreeMap<>(); map.put(targetModule.getRevision(), targetModule); @@ -335,7 +335,7 @@ public final class YangParserImpl implements YangContextParser { public Collection buildModules(final Collection builders) { Collection unsorted = resolveSubmodules(builders); List sorted = ModuleDependencySort.sort(unsorted); - Map> modules = resolveModulesWithImports(sorted, null); + Map> modules = resolveModulesWithImports(sorted, null); Map builderToModule = build(modules); return builderToModule.values(); } @@ -354,7 +354,7 @@ public final class YangParserImpl implements YangContextParser { Map sourceToBuilder = resolveSources(sources, context); // sort and check for duplicates List sorted = ModuleDependencySort.sort(sourceToBuilder.values()); - Map> modules = resolveModulesWithImports(sorted, null); + Map> modules = resolveModulesWithImports(sorted, null); Map builderToModule = build(modules); Map builderToSource = HashBiMap.create(sourceToBuilder).inverse(); sorted = ModuleDependencySort.sort(builderToModule.keySet()); @@ -392,7 +392,7 @@ public final class YangParserImpl implements YangContextParser { // validate yang new YangModelBasicValidator(walker).validate(sourceToTree.values()); - Map> namespaceContext = BuilderUtils.createYangNamespaceContext( + Map> namespaceContext = BuilderUtils.createYangNamespaceContext( sourceToTree.values(), Optional.fromNullable(context)); YangParserListenerImpl yangModelParser; for (Map.Entry entry : sourceToTree.entrySet()) { @@ -416,12 +416,12 @@ public final class YangParserImpl implements YangContextParser { private Map resolveSubmodules(final Map builders) { Map modules = new HashMap<>(); - Map> submodules = new HashMap<>(); + Map> submodules = new HashMap<>(); for (Map.Entry entry : builders.entrySet()) { ModuleBuilder builder = entry.getValue(); if (builder.isSubmodule()) { String submoduleName = builder.getName(); - TreeMap map = submodules.get(submoduleName); + NavigableMap map = submodules.get(submoduleName); if (map == null) { map = new TreeMap<>(); map.put(builder.getRevision(), builder); @@ -443,11 +443,11 @@ public final class YangParserImpl implements YangContextParser { private Collection resolveSubmodules(final Collection builders) { Collection modules = new HashSet<>(); - Map> submodules = new HashMap<>(); + Map> submodules = new HashMap<>(); for (ModuleBuilder builder : builders) { if (builder.isSubmodule()) { String submoduleName = builder.getName(); - TreeMap map = submodules.get(submoduleName); + NavigableMap map = submodules.get(submoduleName); if (map == null) { map = new TreeMap<>(); map.put(builder.getRevision(), builder); @@ -478,7 +478,7 @@ public final class YangParserImpl implements YangContextParser { * @return collection of module builders with resolved submodules */ private void resolveSubmodules(final ModuleBuilder module, - final Map> submodules) { + final Map> submodules) { Map includes = module.getIncludedModules(); for (Map.Entry entry : includes.entrySet()) { NavigableMap subs = submodules.get(entry.getKey()); @@ -499,7 +499,7 @@ public final class YangParserImpl implements YangContextParser { } } - if (submodule.getIncludedModules().size() > 0) { + if (!submodule.getIncludedModules().isEmpty()) { resolveSubmodules(submodule, submodules); } addSubmoduleToModule(submodule, module); @@ -563,8 +563,8 @@ public final class YangParserImpl implements YangContextParser { * topologically sorted modules * @return modules ordered by namespace and revision */ - private static Map> orderModules(final List modules) { - final Map> result = new LinkedHashMap<>(); + private static Map> orderModules(final List modules) { + final Map> result = new LinkedHashMap<>(); for (final ModuleBuilder builder : modules) { if (builder == null) { continue; @@ -576,7 +576,7 @@ public final class YangParserImpl implements YangContextParser { rev = new Date(0); } - TreeMap builderByRevision = result.get(ns); + NavigableMap builderByRevision = result.get(ns); if (builderByRevision == null) { builderByRevision = new TreeMap<>(); builderByRevision.put(rev, builder); @@ -606,7 +606,7 @@ public final class YangParserImpl implements YangContextParser { // if this is submodule, add parent to filtered and pick its imports if (main.isSubmodule()) { - TreeMap dependencies = new TreeMap<>(); + NavigableMap dependencies = new TreeMap<>(); for (ModuleBuilder mb : other) { if (mb.getName().equals(main.getBelongsTo())) { dependencies.put(mb.getRevision(), mb); @@ -626,11 +626,9 @@ public final class YangParserImpl implements YangContextParser { filterImports(builder, other, filtered); } } else { - if (mi.getRevision().equals(builder.getRevision())) { - if (!filtered.contains(builder)) { - filtered.add(builder); - filterImports(builder, other, filtered); - } + if (!filtered.contains(builder) && mi.getRevision().equals(builder.getRevision())) { + filtered.add(builder); + filterImports(builder, other, filtered); } } } @@ -705,7 +703,7 @@ public final class YangParserImpl implements YangContextParser { * all loaded modules * @return modules mapped on their builders */ - private Map build(final Map> modules) { + private Map build(final Map> modules) { resolveDirtyNodes(modules); resolveAugmentsTargetPath(modules); resolveUsesTargetGrouping(modules); @@ -717,7 +715,7 @@ public final class YangParserImpl implements YangContextParser { // build final Map result = new LinkedHashMap<>(); - for (Map.Entry> entry : modules.entrySet()) { + for (Map.Entry> entry : modules.entrySet()) { for (Map.Entry childEntry : entry.getValue().entrySet()) { final ModuleBuilder moduleBuilder = childEntry.getValue(); final Module module = moduleBuilder.build(); @@ -733,8 +731,8 @@ public final class YangParserImpl implements YangContextParser { * @param modules * all loaded modules */ - private void resolveDirtyNodes(final Map> modules) { - for (Map.Entry> entry : modules.entrySet()) { + private void resolveDirtyNodes(final Map> modules) { + for (Map.Entry> entry : modules.entrySet()) { for (Map.Entry childEntry : entry.getValue().entrySet()) { final ModuleBuilder module = childEntry.getValue(); resolveUnknownNodes(modules, module); @@ -752,7 +750,7 @@ public final class YangParserImpl implements YangContextParser { * @param module * current module */ - private void resolveDirtyNodes(final Map> modules, final ModuleBuilder module) { + private void resolveDirtyNodes(final Map> modules, final ModuleBuilder module) { final Set dirtyNodes = module.getDirtyNodes(); if (!dirtyNodes.isEmpty()) { for (TypeAwareBuilder nodeToResolve : dirtyNodes) { @@ -783,10 +781,10 @@ public final class YangParserImpl implements YangContextParser { * @param modules * all loaded modules */ - private void resolveAugmentsTargetPath(final Map> modules) { + private void resolveAugmentsTargetPath(final Map> modules) { // collect augments from all loaded modules final List allAugments = new ArrayList<>(); - for (Map.Entry> entry : modules.entrySet()) { + for (Map.Entry> entry : modules.entrySet()) { for (Map.Entry inner : entry.getValue().entrySet()) { allAugments.addAll(inner.getValue().getAllAugments()); } @@ -896,9 +894,9 @@ public final class YangParserImpl implements YangContextParser { * all loaded modules topologically sorted (based on dependencies * between each other) */ - private void resolveAugments(final Map> modules) { + private void resolveAugments(final Map> modules) { List all = new ArrayList<>(); - for (Map.Entry> entry : modules.entrySet()) { + for (Map.Entry> entry : modules.entrySet()) { for (Map.Entry inner : entry.getValue().entrySet()) { all.add(inner.getValue()); } @@ -934,7 +932,7 @@ public final class YangParserImpl implements YangContextParser { * @return true if augment process succeed */ private boolean resolveUsesAugment(final AugmentationSchemaBuilder augment, final ModuleBuilder module, - final Map> modules) { + final Map> modules) { if (augment.isResolved()) { return true; } @@ -994,7 +992,7 @@ public final class YangParserImpl implements YangContextParser { * @return true if augment process succeed */ private boolean resolveAugment(final AugmentationSchemaBuilder augment, final ModuleBuilder module, - final Map> modules) { + final Map> modules) { if (augment.isResolved()) { return true; } @@ -1016,8 +1014,8 @@ public final class YangParserImpl implements YangContextParser { * @param modules * all loaded modules */ - private void resolveIdentities(final Map> modules) { - for (Map.Entry> entry : modules.entrySet()) { + private void resolveIdentities(final Map> modules) { + for (Map.Entry> entry : modules.entrySet()) { for (Map.Entry inner : entry.getValue().entrySet()) { ModuleBuilder module = inner.getValue(); final Set identities = module.getAddedIdentities(); @@ -1076,9 +1074,9 @@ public final class YangParserImpl implements YangContextParser { * @param modules * all loaded modules */ - private void resolveUsesTargetGrouping(final Map> modules) { + private void resolveUsesTargetGrouping(final Map> modules) { final List allUses = new ArrayList<>(); - for (Map.Entry> entry : modules.entrySet()) { + for (Map.Entry> entry : modules.entrySet()) { for (Map.Entry inner : entry.getValue().entrySet()) { allUses.addAll(inner.getValue().getAllUsesNodes()); } @@ -1097,9 +1095,9 @@ public final class YangParserImpl implements YangContextParser { * @param modules * all loaded modules */ - private void resolveUsesForGroupings(final Map> modules) { + private void resolveUsesForGroupings(final Map> modules) { final Set allGroupings = new HashSet<>(); - for (Map.Entry> entry : modules.entrySet()) { + for (Map.Entry> entry : modules.entrySet()) { for (Map.Entry inner : entry.getValue().entrySet()) { ModuleBuilder module = inner.getValue(); allGroupings.addAll(module.getAllGroupings()); @@ -1121,8 +1119,8 @@ public final class YangParserImpl implements YangContextParser { * @param modules * all loaded modules */ - private void resolveUsesForNodes(final Map> modules) { - for (Map.Entry> entry : modules.entrySet()) { + private void resolveUsesForNodes(final Map> modules) { + for (Map.Entry> entry : modules.entrySet()) { for (Map.Entry inner : entry.getValue().entrySet()) { ModuleBuilder module = inner.getValue(); List usesNodes = module.getAllUsesNodes(); @@ -1143,7 +1141,7 @@ public final class YangParserImpl implements YangContextParser { * @param modules * all loaded modules */ - private void resolveUses(final UsesNodeBuilder usesNode, final Map> modules) { + private void resolveUses(final UsesNodeBuilder usesNode, final Map> modules) { if (!usesNode.isResolved()) { DataNodeContainerBuilder parent = usesNode.getParent(); ModuleBuilder module = BuilderUtils.getParentModule(parent); @@ -1177,11 +1175,9 @@ public final class YangParserImpl implements YangContextParser { DataSchemaNodeBuilder nextNodeAfterUses = null; for (DataSchemaNodeBuilder childNode : childNodes) { - if (!(childNode.isAddedByUses()) && !(childNode.isAugmenting())) { - if (childNode.getLine() > usesLine) { - nextNodeAfterUses = childNode; - break; - } + if (!childNode.isAddedByUses() && !childNode.isAugmenting() && childNode.getLine() > usesLine) { + nextNodeAfterUses = childNode; + break; } } @@ -1202,7 +1198,7 @@ public final class YangParserImpl implements YangContextParser { * @param module * current module */ - private void resolveUnknownNodes(final Map> modules, final ModuleBuilder module) { + private void resolveUnknownNodes(final Map> modules, final ModuleBuilder module) { for (UnknownSchemaNodeBuilder usnb : module.getAllUnknownNodes()) { QName nodeType = usnb.getNodeType(); String localName = usnb.getNodeType().getLocalName(); @@ -1257,8 +1253,8 @@ public final class YangParserImpl implements YangContextParser { * @param modules * all loaded modules */ - private void checkChoiceCasesForDuplicityQNames(final Map> modules) { - for (Map.Entry> entry : modules.entrySet()) { + private void checkChoiceCasesForDuplicityQNames(final Map> modules) { + for (Map.Entry> entry : modules.entrySet()) { for (Map.Entry childEntry : entry.getValue().entrySet()) { final ModuleBuilder moduleBuilder = childEntry.getValue(); final Module module = moduleBuilder.build(); @@ -1272,8 +1268,8 @@ public final class YangParserImpl implements YangContextParser { } private void findDuplicityNodesIn(final ChoiceSchemaNode choiceNode, final Module module, final ModuleBuilder moduleBuilder, - final Map> modules) { - final Set duplicityTestSet = new HashSet(); + final Map> modules) { + final Set duplicityTestSet = new HashSet<>(); for (ChoiceCaseNode choiceCaseNode : choiceNode.getCases()) { @@ -1294,7 +1290,7 @@ public final class YangParserImpl implements YangContextParser { } private List getChoicesFrom(final Module module) { - final List allChoices = new ArrayList(); + final List allChoices = new ArrayList<>(); for (DataSchemaNode dataSchemaNode : module.getChildNodes()) { findChoicesIn(dataSchemaNode, allChoices); 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 77a0a354df..1703fabae5 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 @@ -22,9 +22,6 @@ import static org.opendaylight.yangtools.yang.parser.impl.ParserListenerUtils.pa 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.Splitter; -import com.google.common.base.Strings; -import com.google.common.collect.Iterables; import java.net.URI; import java.text.DateFormat; import java.text.ParseException; @@ -34,8 +31,10 @@ import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.NavigableMap; import java.util.Set; import java.util.TreeMap; + import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.ParseTreeWalker; import org.opendaylight.yangtools.antlrv4.code.gen.YangParser; @@ -103,6 +102,9 @@ import org.opendaylight.yangtools.yang.parser.util.YangParseException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.base.Splitter; +import com.google.common.base.Strings; +import com.google.common.collect.Iterables; public final class YangParserListenerImpl extends YangParserBaseListener { private static final Logger LOG = LoggerFactory.getLogger(YangParserListenerImpl.class); @@ -110,9 +112,12 @@ public final class YangParserListenerImpl extends YangParserBaseListener { private static final Splitter COLON_SPLITTER = Splitter.on(':'); private static final String AUGMENT_STR = "augment"; - private final DateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); + private static final DateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); + private static final String IMPORT_STR = "import"; + private static final String UNION_STR = "union"; + private static final String UNKNOWN_NODE_STR = "unknown-node"; private final SchemaPathStack stack = new SchemaPathStack(); - private final Map> namespaceContext; + private final Map> namespaceContext; private final String sourcePath; private QName moduleQName = QName.create(null, new Date(0L), "dummy"); private ModuleBuilder moduleBuilder; @@ -120,7 +125,7 @@ public final class YangParserListenerImpl extends YangParserBaseListener { private int augmentOrder; private String yangModelPrefix; - public YangParserListenerImpl(final Map> namespaceContext, final String sourcePath) { + public YangParserListenerImpl(final Map> namespaceContext, final String sourcePath) { this.namespaceContext = namespaceContext; this.sourcePath = sourcePath; } @@ -138,15 +143,13 @@ public final class YangParserListenerImpl extends YangParserBaseListener { * @param tree * @return new instance of YangParserListenerImpl */ - public static YangParserListenerImpl create(final Map> namespaceContext, + public static YangParserListenerImpl create(final Map> namespaceContext, final String sourcePath, final ParseTreeWalker walker, final ParseTree tree) { final YangParserListenerImpl ret = new YangParserListenerImpl(namespaceContext, sourcePath); walker.walk(ret, tree); return ret; } - - @Override public void enterModule_stmt(final YangParser.Module_stmtContext ctx) { moduleName = stringFromNode(ctx); @@ -216,7 +219,7 @@ public final class YangParserListenerImpl extends YangParserBaseListener { @Override public void enterBelongs_to_stmt(final YangParser.Belongs_to_stmtContext ctx) { final String belongsTo = stringFromNode(ctx); - TreeMap context = namespaceContext.get(belongsTo); + NavigableMap context = namespaceContext.get(belongsTo); final Map.Entry entry = context.firstEntry(); // TODO // Submodule will contain namespace and revision from module to which it @@ -339,7 +342,7 @@ public final class YangParserListenerImpl extends YangParserBaseListener { public void enterImport_stmt(final Import_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String importName = stringFromNode(ctx); - enterLog("import", importName, line); + enterLog(IMPORT_STR, importName, line); String importPrefix = null; Date importRevision = null; @@ -363,14 +366,14 @@ public final class YangParserListenerImpl extends YangParserBaseListener { @Override public void exitImport_stmt(final Import_stmtContext ctx) { - exitLog("import"); + exitLog(IMPORT_STR); } @Override public void enterInclude_stmt(YangParser.Include_stmtContext ctx) { final int line = ctx.getStart().getLine(); final String includeName = stringFromNode(ctx); - enterLog("import", includeName, line); + enterLog(IMPORT_STR, includeName, line); Date includeRevision = null; for (int i = 0; i < ctx.getChildCount(); i++) { @@ -387,7 +390,8 @@ public final class YangParserListenerImpl extends YangParserBaseListener { moduleBuilder.addInclude(includeName, includeRevision); } - @Override public void exitInclude_stmt(YangParser.Include_stmtContext ctx) { + @Override + public void exitInclude_stmt(YangParser.Include_stmtContext ctx) { exitLog("include"); } @@ -399,7 +403,8 @@ public final class YangParserListenerImpl extends YangParserBaseListener { stack.push(); final SchemaPath targetPath = parseXPathString(augmentPath, line); - final AugmentationSchemaBuilder builder = moduleBuilder.addAugment(line, augmentPath, targetPath, augmentOrder++); + final AugmentationSchemaBuilder builder = moduleBuilder.addAugment(line, augmentPath, targetPath, + augmentOrder++); for (int i = 0; i < ctx.getChildCount(); i++) { ParseTree child = ctx.getChild(i); @@ -508,12 +513,11 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } else { QName qname; switch (typeName) { - case "union": - qname = BaseTypes.UNION_QNAME; - stack.addNodeToPath(qname); + case UNION_STR: + stack.addNodeToPath(BaseTypes.UNION_QNAME); final UnionTypeBuilder unionBuilder = moduleBuilder.addUnionType(line, moduleQName.getModule()); - final Builder parent = moduleBuilder.getActualNode(); - unionBuilder.setParent(parent); + final Builder parentBuilder = moduleBuilder.getActualNode(); + unionBuilder.setParent(parentBuilder); moduleBuilder.enterNode(unionBuilder); break; case "identityref": @@ -534,23 +538,28 @@ public final class YangParserListenerImpl extends YangParserBaseListener { parent.setTypeQName(typeQName); moduleBuilder.markActualNodeDirty(); } else { - ParserListenerUtils.parseUnknownTypeWithBody(typeBody, parent, typeQName, moduleBuilder, - moduleQName, stack.currentSchemaPath()); + ParserListenerUtils.parseUnknownTypeWithBody(typeBody, parent, typeQName, moduleBuilder, moduleQName, + stack.currentSchemaPath()); } stack.addNodeToPath(QName.create(moduleQName.getModule(), typeQName.getLocalName())); } } /** - * Method transforms string representation of yang element (i.e. leaf name, container name etc.) into QName. - * The namespace of QName is assigned from parent module same as revision date of module. If String qname parameter - * contains ":" the string is evaluated as prefix:name of element. In this case method will look into import map - * and extract correct ModuleImport. If such import is not present in import map the method will throw {@link YangParseException} - *
- * If ModuleImport is present but the value of namespace in ModuleImport is null the method will throw {@link YangParseException} + * Method transforms string representation of yang element (i.e. leaf name, + * container name etc.) into QName. The namespace of QName is assigned from + * parent module same as revision date of module. If String qname parameter + * contains ":" the string is evaluated as prefix:name of element. In this + * case method will look into import map and extract correct ModuleImport. + * If such import is not present in import map the method will throw + * {@link YangParseException}
+ * If ModuleImport is present but the value of namespace in ModuleImport is + * null the method will throw {@link YangParseException} * - * @param qnameString QName value as String - * @param line line in Yang model document where QName occur. + * @param qnameString + * QName value as String + * @param line + * line in Yang model document where QName occur. * @return transformed string qname parameter as QName structure. * * @throws YangParseException @@ -570,10 +579,10 @@ public final class YangParserListenerImpl extends YangParserBaseListener { if (imp == null) { LOG.debug("Error in module {} at line {}: No import found with prefix {}", moduleName, line, prefix); throw new YangParseException(moduleName, line, "Error in module " + moduleName - + " No import found with prefix " + prefix + " not found."); + + " No import found with prefix " + prefix + " not found."); } Date revision = imp.getRevision(); - TreeMap namespaces = namespaceContext.get(imp.getModuleName()); + NavigableMap namespaces = namespaceContext.get(imp.getModuleName()); if (namespaces == null) { throw new YangParseException(moduleName, line, String.format("Imported module %s not found", imp.getModuleName())); @@ -583,9 +592,10 @@ public final class YangParserListenerImpl extends YangParserBaseListener { revision = namespaces.lastEntry().getKey(); namespace = namespaces.lastEntry().getValue(); } else { - // FIXME: this lookup does not look right, as we will end up with - // a qname which does not have a namespace. At any rate we - // should arrive at a QNameModule! + // FIXME: this lookup does not look right, as we will end up + // with + // a qname which does not have a namespace. At any rate we + // should arrive at a QNameModule! namespace = namespaces.get(revision); } @@ -599,7 +609,7 @@ public final class YangParserListenerImpl extends YangParserBaseListener { @Override public void exitType_stmt(final YangParser.Type_stmtContext ctx) { final String typeName = stringFromNode(ctx); - if ("union".equals(typeName)) { + if (UNION_STR.equals(typeName)) { moduleBuilder.exitNode(); } exitLog("type", stack.removeNodeFromPath()); @@ -718,7 +728,8 @@ public final class YangParserListenerImpl extends YangParserBaseListener { stack.push(); final SchemaPath targetPath = parseXPathString(augmentPath, line); - final AugmentationSchemaBuilder builder = moduleBuilder.addAugment(line, augmentPath, targetPath, augmentOrder++); + final AugmentationSchemaBuilder builder = moduleBuilder.addAugment(line, augmentPath, targetPath, + augmentOrder++); for (int i = 0; i < ctx.getChildCount(); i++) { final ParseTree child = ctx.getChild(i); @@ -816,10 +827,9 @@ public final class YangParserListenerImpl extends YangParserBaseListener { } else if (childNode instanceof Key_stmtContext) { final Set key = createListKey((Key_stmtContext) childNode); builder.setKeys(key); - } else if (childNode instanceof YangParser.Identifier_stmtContext) { - if (childNode.getChild(0).toString().equals("union")) { - throw new YangParseException(moduleName, line, "Union statement is not allowed inside a list statement"); - } + } else if (childNode instanceof YangParser.Identifier_stmtContext + && UNION_STR.equals(childNode.getChild(0).toString())) { + throw new YangParseException(moduleName, line, "Union statement is not allowed inside a list statement"); } } } @@ -938,16 +948,18 @@ public final class YangParserListenerImpl extends YangParserBaseListener { @Override public void exitIdentifier_stmt(final YangParser.Identifier_stmtContext ctx) { moduleBuilder.exitNode(); - exitLog("unknown-node", stack.removeNodeFromPath()); + exitLog(UNKNOWN_NODE_STR, stack.removeNodeFromPath()); } - @Override public void enterUnknown_statement(final YangParser.Unknown_statementContext ctx) { + @Override + public void enterUnknown_statement(final YangParser.Unknown_statementContext ctx) { handleUnknownNode(ctx.getStart().getLine(), ctx); } - @Override public void exitUnknown_statement(final YangParser.Unknown_statementContext ctx) { + @Override + public void exitUnknown_statement(final YangParser.Unknown_statementContext ctx) { moduleBuilder.exitNode(); - exitLog("unknown-node", stack.removeNodeFromPath()); + exitLog(UNKNOWN_NODE_STR, stack.removeNodeFromPath()); } @Override @@ -1146,16 +1158,19 @@ public final class YangParserListenerImpl extends YangParserBaseListener { private void handleUnknownNode(final int line, final ParseTree ctx) { final String nodeParameter = stringFromNode(ctx); - enterLog("unknown-node", nodeParameter, line); + enterLog(UNKNOWN_NODE_STR, nodeParameter, line); final String nodeTypeStr = ctx.getChild(0).getText(); final QName nodeType = parseQName(nodeTypeStr, line); QName qname = null; try { - //FIXME: rewrite whole method to handle unknown nodes properly. - // This should be bugfix for bug https://bugs.opendaylight.org/show_bug.cgi?id=1539 - // After this fix bug https://bugs.opendaylight.org/show_bug.cgi?id=1538 MUST be fixed since + // FIXME: rewrite whole method to handle unknown nodes properly. + // This should be bugfix for bug + // https://bugs.opendaylight.org/show_bug.cgi?id=1539 + // After this fix bug + // https://bugs.opendaylight.org/show_bug.cgi?id=1538 MUST be fixed + // since // they are dependent!!! if (Strings.isNullOrEmpty(nodeParameter)) { qname = nodeType; diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/util/URLSchemaContextResolver.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/util/URLSchemaContextResolver.java index 252a782e15..91c5c18028 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/util/URLSchemaContextResolver.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/util/URLSchemaContextResolver.java @@ -95,7 +95,7 @@ public class URLSchemaContextResolver implements AdvancedSchemaSourceProvider // + private final class SourceContext extends AbstractObjectRegistration implements Identifiable { final SourceIdentifier identifier; @@ -146,7 +146,7 @@ public class URLSchemaContextResolver implements AdvancedSchemaSourceProvider builder() // - .addAll(moduleImports) // - .addAll(submoduleIncludes) // + this.dependencies = ImmutableSet. builder() + .addAll(moduleImports) + .addAll(submoduleIncludes) .build(); } @@ -214,8 +214,8 @@ public abstract class YangModelDependencyInfo { return builder.build(); } - public static String getLatestRevision(final Revision_stmtsContext revision_stmts) { - List revisions = revision_stmts.getRuleContexts(Revision_stmtContext.class); + public static String getLatestRevision(final Revision_stmtsContext revisionStmts) { + List revisions = revisionStmts.getRuleContexts(Revision_stmtContext.class); String latestRevision = null; for (Revision_stmtContext revisionStmt : revisions) { String currentRevision = getArgumentString(revisionStmt); @@ -248,11 +248,11 @@ public abstract class YangModelDependencyInfo { return builder.build(); } - private static Date getRevision(final Revision_date_stmtContext revision_date_stmt) { - if (revision_date_stmt == null) { + private static Date getRevision(final Revision_date_stmtContext revisionDateStmt) { + if (revisionDateStmt == null) { return null; } - String formatedDate = getArgumentString(revision_date_stmt); + String formatedDate = getArgumentString(revisionDateStmt); return QName.parseRevision(formatedDate); } @@ -285,6 +285,12 @@ public abstract class YangModelDependencyInfo { private final String belongsTo; + private SubmoduleDependencyInfo(final String name, final String latestRevision, final String belongsTo, + final ImmutableSet imports, final ImmutableSet includes) { + super(name, latestRevision, imports, includes); + this.belongsTo = belongsTo; + } + /** * Returns name of parent module. * @@ -293,12 +299,6 @@ public abstract class YangModelDependencyInfo { return belongsTo; } - private SubmoduleDependencyInfo(final String name, final String latestRevision, final String belongsTo, - final ImmutableSet imports, final ImmutableSet includes) { - super(name, latestRevision, imports, includes); - this.belongsTo = belongsTo; - } - @Override public String toString() { return "Submodule [name=" + getName() + ", revision=" + getRevision() + ", dependencies=" diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactory.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactory.java index ebe602d5a7..f8fc1770b8 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactory.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactory.java @@ -7,22 +7,6 @@ */ package org.opendaylight.yangtools.yang.parser.repo; -import com.google.common.base.Function; -import com.google.common.base.Optional; -import com.google.common.base.Preconditions; -import com.google.common.base.Predicate; -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; -import com.google.common.collect.Collections2; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import com.google.common.util.concurrent.AsyncFunction; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.FutureCallback; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; import java.net.URI; import java.util.Collection; import java.util.Collections; @@ -31,9 +15,11 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.NavigableMap; import java.util.Set; -import java.util.TreeMap; + import javax.annotation.Nullable; + import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTreeWalker; import org.opendaylight.yangtools.util.concurrent.ExceptionMapper; @@ -53,6 +39,23 @@ import org.opendaylight.yangtools.yang.parser.util.ASTSchemaSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.base.Function; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; +import com.google.common.collect.Collections2; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import com.google.common.util.concurrent.AsyncFunction; +import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FutureCallback; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; + final class SharedSchemaContextFactory implements SchemaContextFactory { private static final ExceptionMapper MAPPER = ReflectiveExceptionMapper.create("resolve sources", SchemaResolutionException.class); private static final Logger LOG = LoggerFactory.getLogger(SharedSchemaContextFactory.class); @@ -87,7 +90,7 @@ final class SharedSchemaContextFactory implements SchemaContextFactory { final Map asts = Maps.transformValues(srcs, ASTSchemaSource.GET_AST); - final Map> namespaceContext = BuilderUtils.createYangNamespaceContext( + final Map> namespaceContext = BuilderUtils.createYangNamespaceContext( asts.values(), Optional.absent()); final ParseTreeWalker walker = new ParseTreeWalker(); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractStatementSupport.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractStatementSupport.java index b0c23ea3c5..583c0d821e 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractStatementSupport.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractStatementSupport.java @@ -81,7 +81,7 @@ public abstract class AbstractStatementSupport * */ @Override - public void onLinkageDeclared(StmtContext.Mutable stmt) throws InferenceException, SourceException { + public void onLinkageDeclared(StmtContext.Mutable stmt) throws SourceException { // NOOP for most implementations } @@ -95,8 +95,7 @@ public abstract class AbstractStatementSupport * */ @Override - public void onStatementDefinitionDeclared(StmtContext.Mutable stmt) throws InferenceException, - SourceException { + public void onStatementDefinitionDeclared(StmtContext.Mutable stmt) throws SourceException { // NOOP for most implementations } @@ -110,7 +109,7 @@ public abstract class AbstractStatementSupport * */ @Override - public void onFullDefinitionDeclared(StmtContext.Mutable stmt) throws InferenceException, SourceException { + public void onFullDefinitionDeclared(StmtContext.Mutable stmt) throws SourceException { // NOOP for most implementations } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/NamespaceBehaviour.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/NamespaceBehaviour.java index 129110d853..6522af9227 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/NamespaceBehaviour.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/NamespaceBehaviour.java @@ -46,8 +46,6 @@ public abstract class NamespaceBehaviour> V getFromLocalStorage(Class type, K key); - //> Map getAllFromLocalStorage(Class type); - @Nullable > void addToLocalStorage(Class type, K key, V value); } @@ -103,8 +101,6 @@ public abstract class NamespaceBehaviour getAllFrom(NamespaceStorageNode storage); - public abstract void addTo(NamespaceStorageNode storage,K key,V value); @Override @@ -116,10 +112,6 @@ public abstract class NamespaceBehaviour getAllFromLocalStorage(NamespaceStorageNode storage) { -// return storage.getAllFromLocalStorage(getIdentifier()); -// } - protected final void addToStorage(NamespaceStorageNode storage,K key,V value) { storage.addToLocalStorage(getIdentifier(),key,value); } @@ -142,15 +134,6 @@ public abstract class NamespaceBehaviour getAllFrom(final NamespaceStorageNode storage) { -// NamespaceStorageNode current = storage; -// while(current.getStorageNodeType() != storageType) { -// current = current.getParentNamespaceStorage(); -// } -// return getAllFromLocalStorage(current); -// } - @Override public void addTo(NamespaceBehaviour.NamespaceStorageNode storage, K key, V value) { NamespaceStorageNode current = storage; diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupport.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupport.java index e270f806a9..f240105a09 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupport.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupport.java @@ -69,8 +69,7 @@ public interface StatementSupport, E extends E * @param stmt * Context of added statement. */ - void onLinkageDeclared(StmtContext.Mutable stmt) throws InferenceException, - SourceException; + void onLinkageDeclared(StmtContext.Mutable stmt) throws SourceException; /** * @@ -89,8 +88,7 @@ public interface StatementSupport, E extends E * Context of added statement. Argument and statement parent is * accessible. */ - void onStatementDefinitionDeclared(StmtContext.Mutable stmt) throws InferenceException, - SourceException; + void onStatementDefinitionDeclared(StmtContext.Mutable stmt) throws SourceException; /** * @@ -110,7 +108,6 @@ public interface StatementSupport, E extends E * Context of added statement. Argument and statement parent is * accessible. */ - void onFullDefinitionDeclared(StmtContext.Mutable stmt) throws InferenceException, - SourceException; + void onFullDefinitionDeclared(StmtContext.Mutable stmt) throws SourceException; } \ No newline at end of file diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupportBundle.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupportBundle.java index 0143560033..f137faf667 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupportBundle.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupportBundle.java @@ -23,18 +23,18 @@ public final class StatementSupportBundle implements Immutable,NamespaceBehaviou private final ImmutableMap> definitions; private final ImmutableMap, NamespaceBehaviour> namespaceDefinitions; - public ImmutableMap> getDefinitions() { - return definitions; - } - private StatementSupportBundle(StatementSupportBundle parent, - ImmutableMap> statements, - ImmutableMap, NamespaceBehaviour> namespaces) { + ImmutableMap> statements, + ImmutableMap, NamespaceBehaviour> namespaces) { this.parent = parent; this.definitions = statements; this.namespaceDefinitions = namespaces; } + public ImmutableMap> getDefinitions() { + return definitions; + } + public static Builder builder() { return new Builder(EMPTY); } @@ -54,9 +54,7 @@ public final class StatementSupportBundle implements Immutable,NamespaceBehaviou * Safe cast, previous checkState checks equivalence of key from * which type argument are derived */ - @SuppressWarnings("unchecked") - NamespaceBehaviour casted = (NamespaceBehaviour) potential; - return casted; + return (NamespaceBehaviour) potential; } if (parent != null) { return parent.getNamespaceBehaviour(namespace); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StmtContextUtils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StmtContextUtils.java index 1f86de80d7..eefd87f9a9 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StmtContextUtils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StmtContextUtils.java @@ -81,8 +81,9 @@ public final class StmtContextUtils { public static final StmtContext findFirstDeclaredSubstatement( StmtContext stmtContext, int startIndex, Class>... types) { - if (startIndex >= types.length) + if (startIndex >= types.length) { return null; + } Collection> declaredSubstatements = stmtContext .declaredSubstatements(); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/BuildGlobalContext.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/BuildGlobalContext.java index cb0dd2c343..ad6d70a823 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/BuildGlobalContext.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/BuildGlobalContext.java @@ -103,9 +103,7 @@ class BuildGlobalContext extends NamespaceStorageSupport implements NamespaceBeh * Safe cast, previous checkState checks equivalence of key from * which type argument are derived */ - @SuppressWarnings("unchecked") - NamespaceBehaviourWithListeners casted = (NamespaceBehaviourWithListeners) potential; - return casted; + return (NamespaceBehaviourWithListeners) potential; } throw new NamespaceNotAvailableException("Namespace " + type + "is not available in phase " + currentPhase); } @@ -185,7 +183,7 @@ class BuildGlobalContext extends NamespaceStorageSupport implements NamespaceBeh private void completePhaseActions() throws ReactorException { Preconditions.checkState(currentPhase != null); - ArrayList sourcesToProgress = Lists.newArrayList(sources); + List sourcesToProgress = Lists.newArrayList(sources); try { boolean progressing = true; while(progressing) { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ModifierImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ModifierImpl.java index 638952cf3d..225ce47110 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ModifierImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ModifierImpl.java @@ -65,7 +65,8 @@ class ModifierImpl implements ModelActionBuilder { private void tryToResolve() throws InferenceException { if(action == null) { - return; // Action was not yet defined + // Action was not yet defined + return; } if(removeSatisfied()) { applyAction(); @@ -77,7 +78,8 @@ class ModifierImpl implements ModelActionBuilder { boolean allSatisfied = true; while(prereq.hasNext()) { if(prereq.next().isDone()) { - prereq.remove(); // We are removing current prerequisite from list. + // We are removing current prerequisite from list. + prereq.remove(); } else { allSatisfied = false; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java index 2fe7f01138..695251f369 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java @@ -99,9 +99,7 @@ class RootStatementContext, E extends Effectiv public StatementContextBase createCopy(QNameModule newQNameModule, StatementContextBase newParent) throws SourceException { - StatementContextBase copy = new RootStatementContext( - this, newQNameModule); - return copy; + return new RootStatementContext<>(this, newQNameModule); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java index 94f29a3cca..43692ff0da 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java @@ -17,6 +17,7 @@ import java.util.Collections; import java.util.EventListener; import java.util.Iterator; import java.util.LinkedHashMap; +import java.util.Map; import javax.annotation.Nonnull; import org.opendaylight.yangtools.concepts.Identifiable; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; @@ -101,7 +102,7 @@ public abstract class StatementContextBase, E private final StatementIdentifier identifier; private final StatementSourceReference statementDeclSource; - private LinkedHashMap > substatements = new LinkedHashMap<>(); + private Map > substatements = new LinkedHashMap<>(); private Collection> declared = new ArrayList<>(); private Collection> effective = new ArrayList<>(); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementDefinitionContext.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementDefinitionContext.java index 2e78e75ed2..7fd1442691 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementDefinitionContext.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementDefinitionContext.java @@ -13,7 +13,6 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace; import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition; import org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase; -import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceNotAvailableException; import org.opendaylight.yangtools.yang.parser.spi.meta.StatementFactory; import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; @@ -36,7 +35,7 @@ public class StatementDefinitionContext,E exten } - public void checkNamespaceAllowed(Class> namespace) throws NamespaceNotAvailableException { + public void checkNamespaceAllowed(Class> namespace) { // Noop } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java index 29cac6ead5..808518d9d8 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java @@ -107,8 +107,7 @@ class SubstatementContext, E extends EffectiveS @Override public StatementContextBase createCopy(QNameModule newQNameModule, StatementContextBase newParent) throws SourceException { - StatementContextBase copy = new SubstatementContext(this,newQNameModule, newParent); - return copy; + return new SubstatementContext<>(this,newQNameModule, newParent); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/AugmentUtils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/AugmentUtils.java index d4d59d630d..373ec1f40e 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/AugmentUtils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/AugmentUtils.java @@ -32,12 +32,12 @@ import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase; public final class AugmentUtils { - private AugmentUtils() { - } - private static final String REGEX_PATH_REL1 = "\\.\\.?\\s*/(.+)"; private static final String REGEX_PATH_REL2 = "//.*"; + private AugmentUtils() { + } + public static Iterable parseAugmentPath(StmtContext ctx, String path) { if (path.matches(REGEX_PATH_REL1) || path.matches(REGEX_PATH_REL2)) { @@ -111,19 +111,17 @@ public final class AugmentUtils { noCopyDefSet.add(Rfc6020Mapping.USES); StatementDefinition def = stmtContext.getPublicDefinition(); - return (!noCopyDefSet.contains(def)); + return !noCopyDefSet.contains(def); } public static boolean isReusedByAugment(StmtContext stmtContext) { - HashSet reusedDefSet = new HashSet<>(); + Set reusedDefSet = new HashSet<>(); reusedDefSet.add(Rfc6020Mapping.TYPEDEF); StatementDefinition def = stmtContext.getPublicDefinition(); - if (reusedDefSet.contains(def)) - return true; - else - return false; + + return reusedDefSet.contains(def); } public static StatementContextBase getAugmentTargetCtx( diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/CaseStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/CaseStatementImpl.java index 3160131603..2aca8a1c80 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/CaseStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/CaseStatementImpl.java @@ -7,9 +7,11 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.CaseEffectiveStatementImpl; +import java.util.Collection; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.PresenceEffectiveStatementImpl; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; @@ -24,9 +26,7 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.Collection; +import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.CaseEffectiveStatementImpl; public class CaseStatementImpl extends AbstractDeclaredStatement implements CaseStatement { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/GroupingStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/GroupingStatementImpl.java index 4f2a7ce735..30d6ef0769 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/GroupingStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/GroupingStatementImpl.java @@ -7,25 +7,24 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.GroupingEffectiveStatementImpl; - -import org.opendaylight.yangtools.yang.parser.spi.GroupingNamespace; -import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException; -import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import java.util.Collection; + import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement; import org.opendaylight.yangtools.yang.model.api.stmt.DataDefinitionStatement; import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement; import org.opendaylight.yangtools.yang.model.api.stmt.StatusStatement; import org.opendaylight.yangtools.yang.model.api.stmt.TypedefStatement; +import org.opendaylight.yangtools.yang.parser.spi.GroupingNamespace; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; +import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable; +import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; +import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.GroupingEffectiveStatementImpl; public class GroupingStatementImpl extends AbstractDeclaredStatement implements GroupingStatement { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/GroupingUtils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/GroupingUtils.java index 131ac39f84..c1194deec5 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/GroupingUtils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/GroupingUtils.java @@ -87,8 +87,7 @@ public final class GroupingUtils { if (targetQNameModule.equals(sourceQNameModule)) { return null; - } - else { + } else { return targetQNameModule; } } else { @@ -109,7 +108,7 @@ public final class GroupingUtils { noCopyDefSet.add(Rfc6020Mapping.USES); StatementDefinition def = stmtContext.getPublicDefinition(); - return (!noCopyDefSet.contains(def)); + return !noCopyDefSet.contains(def); } public static boolean isReusedByUses(StmtContext stmtContext) { @@ -118,7 +117,7 @@ public final class GroupingUtils { reusedDefSet.add(Rfc6020Mapping.TYPEDEF); StatementDefinition def = stmtContext.getPublicDefinition(); - return (reusedDefSet.contains(def)); + return reusedDefSet.contains(def); } public static void resolveUsesNode( @@ -134,7 +133,9 @@ public final class GroupingUtils { if (StmtContextUtils.producesDeclared(subStmtCtx, RefineStatement.class)) { // :TODO resolve and perform refine statement } - + if (StmtContextUtils.producesDeclared(subStmtCtx, AugmentStatement.class)) { + // :TODO find target node and perform augmentation + } // :TODO resolve other uses substatements } } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ModuleStatementSupport.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ModuleStatementSupport.java index e2c6b531db..963737a7de 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ModuleStatementSupport.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ModuleStatementSupport.java @@ -9,32 +9,32 @@ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.firstAttributeOf; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ModuleEffectiveStatementImpl; - -import org.opendaylight.yangtools.yang.parser.spi.source.ModuleQNameToModuleName; -import org.opendaylight.yangtools.yang.parser.spi.source.ModuleNameToModuleQName; -import org.opendaylight.yangtools.yang.parser.spi.source.ImpPrefixToModuleIdentifier; -import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier; -import org.opendaylight.yangtools.yang.parser.spi.source.ModuleIdentifierToModuleQName; -import org.opendaylight.yangtools.yang.parser.spi.source.PrefixToModule; -import org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.RevisionStatement; -import com.google.common.base.Optional; import java.net.URI; import java.util.Date; + import org.opendaylight.yangtools.yang.common.QNameModule; +import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier; import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement; import org.opendaylight.yangtools.yang.model.api.stmt.NamespaceStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.RevisionStatement; import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleIdentifierImpl; import org.opendaylight.yangtools.yang.parser.spi.ModuleNamespace; import org.opendaylight.yangtools.yang.parser.spi.NamespaceToModule; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport; -import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable; +import org.opendaylight.yangtools.yang.parser.spi.source.ImpPrefixToModuleIdentifier; +import org.opendaylight.yangtools.yang.parser.spi.source.ModuleIdentifierToModuleQName; +import org.opendaylight.yangtools.yang.parser.spi.source.ModuleNameToModuleQName; +import org.opendaylight.yangtools.yang.parser.spi.source.ModuleQNameToModuleName; +import org.opendaylight.yangtools.yang.parser.spi.source.PrefixToModule; import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; +import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ModuleEffectiveStatementImpl; + +import com.google.common.base.Optional; public class ModuleStatementSupport extends AbstractStatementSupport> { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/PrefixStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/PrefixStatementImpl.java index 02e9462191..16dc0071c1 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/PrefixStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/PrefixStatementImpl.java @@ -26,7 +26,7 @@ public class PrefixStatementImpl extends AbstractDeclaredStatement imple @Override public String parseArgumentValue(StmtContext ctx, String value) { - return (value); + return value; } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/SubmoduleStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/SubmoduleStatementImpl.java index 7349082ec5..ff306a55e4 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/SubmoduleStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/SubmoduleStatementImpl.java @@ -7,29 +7,29 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; -import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.firstAttributeOf; import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.findFirstDeclaredSubstatement; +import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.firstAttributeOf; -import org.opendaylight.yangtools.yang.parser.spi.source.BelongsToPrefixToModuleName; - -import org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement; -import org.opendaylight.yangtools.yang.parser.spi.SubmoduleNamespace; -import com.google.common.base.Optional; import java.net.URI; import java.util.Date; + import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier; import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement; import org.opendaylight.yangtools.yang.model.api.stmt.RevisionStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.YangVersionStatement; import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleIdentifierImpl; +import org.opendaylight.yangtools.yang.parser.spi.SubmoduleNamespace; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport; -import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException; +import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable; +import org.opendaylight.yangtools.yang.parser.spi.source.BelongsToPrefixToModuleName; import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; -import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.YangVersionStatement; -import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; + +import com.google.common.base.Optional; public class SubmoduleStatementImpl extends AbstractRootStatement implements SubmoduleStatement { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/UsesStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/UsesStatementImpl.java index 8a0a8290d8..102ad007ff 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/UsesStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/UsesStatementImpl.java @@ -10,15 +10,10 @@ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; import static org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase.FULL_DECLARATION; import java.util.Collection; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping; -import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition; -import org.opendaylight.yangtools.yang.model.api.meta.StatementSource; import org.opendaylight.yangtools.yang.model.api.stmt.AugmentStatement; import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement; import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureStatement; @@ -38,6 +33,8 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.UsesEffectiveStatementImpl; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class UsesStatementImpl extends AbstractDeclaredStatement implements UsesStatement { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/Utils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/Utils.java index 980abfef60..99ca6c126c 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/Utils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/Utils.java @@ -52,9 +52,6 @@ import org.slf4j.LoggerFactory; public final class Utils { - private Utils() { - } - private static final Logger LOG = LoggerFactory.getLogger(Utils.class); private static final CharMatcher DOUBLE_QUOTE_MATCHER = CharMatcher.is('"'); private static final CharMatcher SINGLE_QUOTE_MATCHER = CharMatcher.is('\''); @@ -63,6 +60,9 @@ public final class Utils { private static final String REGEX_PATH_ABS = "/[^/].*"; + private Utils() { + } + public static List splitPathToNodeNames(String path) { Splitter keySplitter = Splitter.on(SEPARATOR_NODENAME).omitEmptyStrings().trimResults(); @@ -141,7 +141,7 @@ public final class Utils { public static String stringFromStringContext(final YangStatementParser.ArgumentContext context) { StringBuilder sb = new StringBuilder(); List strings = context.STRING(); - if (strings.size() == 0) { + if (strings.isEmpty()) { strings = Arrays.asList(context.IDENTIFIER()); } for (TerminalNode stringNode : strings) { @@ -163,7 +163,7 @@ public final class Utils { public static QName qNameFromArgument(StmtContext ctx, String value) { - String prefix = null; + String prefix; QNameModule qNameModule = null; try { qNameModule = QNameModule.create(new URI(""), new Date(0)); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveDocumentedDataNodeContainer.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveDocumentedDataNodeContainer.java index 484cd548c8..9bd91b6619 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveDocumentedDataNodeContainer.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveDocumentedDataNodeContainer.java @@ -17,6 +17,8 @@ import java.util.Map; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +import java.util.Map; import java.util.Set; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveSchemaContext.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveSchemaContext.java index e84af21131..a4a94111a4 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveSchemaContext.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveSchemaContext.java @@ -19,6 +19,7 @@ import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.NavigableSet; import java.util.Set; import java.util.TreeSet; import org.opendaylight.yangtools.yang.common.QName; @@ -40,9 +41,9 @@ import org.opendaylight.yangtools.yang.model.api.UsesNode; public abstract class AbstractEffectiveSchemaContext implements SchemaContext { - protected static final Supplier> MODULE_SET_SUPPLIER = new Supplier>() { + protected static final Supplier> MODULE_SET_SUPPLIER = new Supplier>() { @Override - public TreeSet get() { + public NavigableSet get() { return new TreeSet<>(REVISION_COMPARATOR); } }; diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AnyXmlEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AnyXmlEffectiveStatementImpl.java index ff417e0e1d..85a5e63d3e 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AnyXmlEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AnyXmlEffectiveStatementImpl.java @@ -49,16 +49,16 @@ public class AnyXmlEffectiveStatementImpl extends private void initSubstatementCollections() { Collection> effectiveSubstatements = effectiveSubstatements(); - LinkedList unknownNodes = new LinkedList(); + List unknownNodesInit = new LinkedList<>(); for (EffectiveStatement effectiveStatement : effectiveSubstatements) { if (effectiveStatement instanceof UnknownSchemaNode) { UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; - unknownNodes.add(unknownNode); + unknownNodesInit.add(unknownNode); } } - this.unknownNodes = ImmutableList.copyOf(unknownNodes); + this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AugmentEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AugmentEffectiveStatementImpl.java index 0d3f3741f7..39e51d1f97 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AugmentEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AugmentEffectiveStatementImpl.java @@ -60,16 +60,16 @@ public class AugmentEffectiveStatementImpl private void initSubstatementCollections() { Collection> effectiveSubstatements = effectiveSubstatements(); - LinkedList unknownNodes = new LinkedList(); + List unknownNodesInit = new LinkedList<>(); for (EffectiveStatement effectiveStatement : effectiveSubstatements) { if (effectiveStatement instanceof UnknownSchemaNode) { UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; - unknownNodes.add(unknownNode); + unknownNodesInit.add(unknownNode); } } - this.unknownNodes = ImmutableList.copyOf(unknownNodes); + this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); } public void setCopyOf(final AugmentationSchema build) { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/CaseEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/CaseEffectiveStatementImpl.java index e406e61097..e748a3e9ee 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/CaseEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/CaseEffectiveStatementImpl.java @@ -55,22 +55,22 @@ public class CaseEffectiveStatementImpl extends private void initSubstatementCollections() { Collection> effectiveSubstatements = effectiveSubstatements(); - LinkedList unknownNodes = new LinkedList(); - HashSet augmentations = new HashSet(); + List unknownNodesInit = new LinkedList<>(); + Set augmentationsInit = new HashSet<>(); for (EffectiveStatement effectiveStatement : effectiveSubstatements) { if (effectiveStatement instanceof UnknownSchemaNode) { UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; - unknownNodes.add(unknownNode); + unknownNodesInit.add(unknownNode); } if (effectiveStatement instanceof AugmentationSchema) { AugmentationSchema augmentationSchema = (AugmentationSchema) effectiveStatement; - augmentations.add(augmentationSchema); + augmentationsInit.add(augmentationSchema); } } - this.unknownNodes = ImmutableList.copyOf(unknownNodes); - this.augmentations = ImmutableSet.copyOf(augmentations); + this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); + this.augmentations = ImmutableSet.copyOf(augmentationsInit); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ChoiceEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ChoiceEffectiveStatementImpl.java index 00262b5070..d74600e37d 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ChoiceEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ChoiceEffectiveStatementImpl.java @@ -58,28 +58,28 @@ public class ChoiceEffectiveStatementImpl extends AbstractEffectiveDocumentedNod private void initSubstatementCollections() { Collection> effectiveSubstatements = effectiveSubstatements(); - LinkedList unknownNodes = new LinkedList(); - HashSet augmentations = new HashSet(); - HashSet cases = new HashSet(); + List unknownNodesInit = new LinkedList<>(); + Set augmentationsInit = new HashSet<>(); + Set casesInit = new HashSet<>(); for (EffectiveStatement effectiveStatement : effectiveSubstatements) { if (effectiveStatement instanceof UnknownSchemaNode) { UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; - unknownNodes.add(unknownNode); + unknownNodesInit.add(unknownNode); } if (effectiveStatement instanceof AugmentationSchema) { AugmentationSchema augmentationSchema = (AugmentationSchema) effectiveStatement; - augmentations.add(augmentationSchema); + augmentationsInit.add(augmentationSchema); } if (effectiveStatement instanceof ChoiceCaseNode) { ChoiceCaseNode choiceCaseNode = (ChoiceCaseNode) effectiveStatement; - cases.add(choiceCaseNode); + casesInit.add(choiceCaseNode); } } - this.unknownNodes = ImmutableList.copyOf(unknownNodes); - this.augmentations = ImmutableSet.copyOf(augmentations); - this.cases = ImmutableSet.copyOf(cases); + this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); + this.augmentations = ImmutableSet.copyOf(augmentationsInit); + this.cases = ImmutableSet.copyOf(casesInit); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ContainerEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ContainerEffectiveStatementImpl.java index d7a70c4a66..b9501f7c1e 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ContainerEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ContainerEffectiveStatementImpl.java @@ -60,22 +60,22 @@ public class ContainerEffectiveStatementImpl extends private void initSubstatementCollections() { Collection> effectiveSubstatements = effectiveSubstatements(); - LinkedList unknownNodes = new LinkedList(); - HashSet augmentations = new HashSet(); + List unknownNodesInit = new LinkedList<>(); + Set augmentationsInit = new HashSet<>(); for (EffectiveStatement effectiveStatement : effectiveSubstatements) { if (effectiveStatement instanceof UnknownSchemaNode) { UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; - unknownNodes.add(unknownNode); + unknownNodesInit.add(unknownNode); } if (effectiveStatement instanceof AugmentationSchema) { AugmentationSchema augmentationSchema = (AugmentationSchema) effectiveStatement; - augmentations.add(augmentationSchema); + augmentationsInit.add(augmentationSchema); } } - this.unknownNodes = ImmutableList.copyOf(unknownNodes); - this.augmentations = ImmutableSet.copyOf(augmentations); + this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); + this.augmentations = ImmutableSet.copyOf(augmentationsInit); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/EffectiveSchemaContext.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/EffectiveSchemaContext.java index cc837626ed..4cedda12fa 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/EffectiveSchemaContext.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/EffectiveSchemaContext.java @@ -42,21 +42,21 @@ public class EffectiveSchemaContext extends AbstractEffectiveSchemaContext { this.rootEffectiveStatements = ImmutableList .copyOf(rootEffectiveStatements); - HashSet modules = new HashSet(); + Set modulesInit = new HashSet<>(); for (EffectiveStatement rootEffectiveStatement : rootEffectiveStatements) { if (rootEffectiveStatement instanceof Module) { Module module = (Module) rootEffectiveStatement; - modules.add(module); + modulesInit.add(module); } } - this.modules = ImmutableSet.copyOf(modules); + this.modules = ImmutableSet.copyOf(modulesInit); final SetMultimap nsMap = Multimaps.newSetMultimap( new TreeMap>(), MODULE_SET_SUPPLIER); final SetMultimap nameMap = Multimaps.newSetMultimap( new TreeMap>(), MODULE_SET_SUPPLIER); - for (Module m : modules) { + for (Module m : modulesInit) { nameMap.put(m.getName(), m); nsMap.put(m.getNamespace(), m); } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/EffectiveStatementBase.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/EffectiveStatementBase.java index 804be7bd02..fd269a1f16 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/EffectiveStatementBase.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/EffectiveStatementBase.java @@ -51,11 +51,11 @@ abstract public class EffectiveStatementBase> Collection> effectiveSubstatements = ctx .effectiveSubstatements(); - Collection> substatements = new LinkedList>(); - substatements.addAll(declaredSubstatements); - substatements.addAll(effectiveSubstatements); + Collection> substatementsInit = new LinkedList<>(); + substatementsInit.addAll(declaredSubstatements); + substatementsInit.addAll(effectiveSubstatements); - this.substatements = FluentIterable.from(substatements) + this.substatements = FluentIterable.from(substatementsInit) .transform(StmtContextUtils.buildEffective()).toList(); } @@ -127,7 +127,7 @@ abstract public class EffectiveStatementBase> result = Collection.class.cast(Collections2.filter(substatements, Predicates.instanceOf(type))); } catch (NoSuchElementException e) { - result = Collections.EMPTY_LIST; + result = Collections.emptyList(); } return result; } @@ -152,7 +152,7 @@ abstract public class EffectiveStatementBase> result = Collection.class.cast(Collections2.filter(substatements, Predicates.instanceOf(type))); } catch (NoSuchElementException e) { - result = Collections.EMPTY_LIST; + result = Collections.emptyList(); } return result; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ExtensionEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ExtensionEffectiveStatementImpl.java index df925dd16b..f9f1d80665 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ExtensionEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ExtensionEffectiveStatementImpl.java @@ -55,7 +55,7 @@ public class ExtensionEffectiveStatementImpl extends if (yinElement != null) { this.yin = yinElement.argument(); } else { - yin = false; + this.yin = false; } } @@ -63,16 +63,16 @@ public class ExtensionEffectiveStatementImpl extends private void initSubstatementCollections() { Collection> effectiveSubstatements = effectiveSubstatements(); - LinkedList unknownNodes = new LinkedList(); + List unknownNodesInit = new LinkedList<>(); for (EffectiveStatement effectiveStatement : effectiveSubstatements) { if (effectiveStatement instanceof UnknownSchemaNode) { UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; - unknownNodes.add(unknownNode); + unknownNodesInit.add(unknownNode); } } - this.unknownNodes = ImmutableList.copyOf(unknownNodes); + this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/IdentityEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/IdentityEffectiveStatementImpl.java index 38c982ff61..8ee820a7ba 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/IdentityEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/IdentityEffectiveStatementImpl.java @@ -49,16 +49,16 @@ public class IdentityEffectiveStatementImpl extends private void initSubstatementCollections() { Collection> effectiveSubstatements = effectiveSubstatements(); - LinkedList unknownNodes = new LinkedList(); + List unknownNodesInit = new LinkedList<>(); for (EffectiveStatement effectiveStatement : effectiveSubstatements) { if (effectiveStatement instanceof UnknownSchemaNode) { UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; - unknownNodes.add(unknownNode); + unknownNodesInit.add(unknownNode); } } - this.unknownNodes = ImmutableList.copyOf(unknownNodes); + this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/InputEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/InputEffectiveStatementImpl.java index 54e2f10b24..e0ded9ec84 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/InputEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/InputEffectiveStatementImpl.java @@ -59,22 +59,22 @@ public class InputEffectiveStatementImpl extends private void initSubstatementCollections() { Collection> effectiveSubstatements = effectiveSubstatements(); - LinkedList unknownNodes = new LinkedList(); - HashSet augmentations = new HashSet(); + List unknownNodesInit = new LinkedList<>(); + Set augmentationsInit = new HashSet<>(); for (EffectiveStatement effectiveStatement : effectiveSubstatements) { if (effectiveStatement instanceof UnknownSchemaNode) { UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; - unknownNodes.add(unknownNode); + unknownNodesInit.add(unknownNode); } if (effectiveStatement instanceof AugmentationSchema) { AugmentationSchema augmentationSchema = (AugmentationSchema) effectiveStatement; - augmentations.add(augmentationSchema); + augmentationsInit.add(augmentationSchema); } } - this.unknownNodes = ImmutableList.copyOf(unknownNodes); - this.augmentations = ImmutableSet.copyOf(augmentations); + this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); + this.augmentations = ImmutableSet.copyOf(augmentationsInit); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/LeafEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/LeafEffectiveStatementImpl.java index 45ecda59e1..3d59091cc5 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/LeafEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/LeafEffectiveStatementImpl.java @@ -55,16 +55,16 @@ public class LeafEffectiveStatementImpl extends private void initSubstatementCollections() { Collection> effectiveSubstatements = effectiveSubstatements(); - LinkedList unknownNodes = new LinkedList(); + List unknownNodesInit = new LinkedList<>(); for (EffectiveStatement effectiveStatement : effectiveSubstatements) { if (effectiveStatement instanceof UnknownSchemaNode) { UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; - unknownNodes.add(unknownNode); + unknownNodesInit.add(unknownNode); } } - this.unknownNodes = ImmutableList.copyOf(unknownNodes); + this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/LeafListEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/LeafListEffectiveStatementImpl.java index 768a99e084..77487441e4 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/LeafListEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/LeafListEffectiveStatementImpl.java @@ -51,16 +51,16 @@ public class LeafListEffectiveStatementImpl extends AbstractEffectiveDocumentedN private void initSubstatementCollections() { Collection> effectiveSubstatements = effectiveSubstatements(); - LinkedList unknownNodes = new LinkedList(); + List unknownNodesInit = new LinkedList<>(); for (EffectiveStatement effectiveStatement : effectiveSubstatements) { if (effectiveStatement instanceof UnknownSchemaNode) { UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; - unknownNodes.add(unknownNode); + unknownNodesInit.add(unknownNode); } } - this.unknownNodes = ImmutableList.copyOf(unknownNodes); + this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ListEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ListEffectiveStatementImpl.java index 30ba7d425b..f9629a114c 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ListEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ListEffectiveStatementImpl.java @@ -54,38 +54,38 @@ public class ListEffectiveStatementImpl extends * */ private void initKeyDefinition() { - List keyDefinition = new LinkedList(); + List keyDefinitionInit = new LinkedList(); KeyEffectiveStatementImpl key = firstEffective(KeyEffectiveStatementImpl.class); if (key != null) { Collection keyParts = key.argument(); for (SchemaNodeIdentifier keyPart : keyParts) { - keyDefinition.add(keyPart.getLastComponent()); + keyDefinitionInit.add(keyPart.getLastComponent()); } } - this.keyDefinition = ImmutableList.copyOf(keyDefinition); + this.keyDefinition = ImmutableList.copyOf(keyDefinitionInit); } private void initSubstatementCollections() { Collection> effectiveSubstatements = effectiveSubstatements(); - LinkedList unknownNodes = new LinkedList(); - HashSet augmentations = new HashSet(); + List unknownNodesInit = new LinkedList(); + Set augmentationsInit = new HashSet(); for (EffectiveStatement effectiveStatement : effectiveSubstatements) { if (effectiveStatement instanceof UnknownSchemaNode) { UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; - unknownNodes.add(unknownNode); + unknownNodesInit.add(unknownNode); } if (effectiveStatement instanceof AugmentationSchema) { AugmentationSchema augmentationSchema = (AugmentationSchema) effectiveStatement; - augmentations.add(augmentationSchema); + augmentationsInit.add(augmentationSchema); } } - this.unknownNodes = ImmutableList.copyOf(unknownNodes); - this.augmentations = ImmutableSet.copyOf(augmentations); + this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); + this.augmentations = ImmutableSet.copyOf(augmentationsInit); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ModuleEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ModuleEffectiveStatementImpl.java index 1e6d51cf8b..390769b356 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ModuleEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ModuleEffectiveStatementImpl.java @@ -73,22 +73,22 @@ public class ModuleEffectiveStatementImpl extends private void initSubstatementCollections() { Collection> effectiveSubstatements = effectiveSubstatements(); - LinkedList unknownNodes = new LinkedList(); - HashSet augmentations = new HashSet(); + List unknownNodesInit = new LinkedList<>(); + Set augmentationsInit = new HashSet<>(); for (EffectiveStatement effectiveStatement : effectiveSubstatements) { if (effectiveStatement instanceof UnknownSchemaNode) { UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; - unknownNodes.add(unknownNode); + unknownNodesInit.add(unknownNode); } if (effectiveStatement instanceof AugmentationSchema) { AugmentationSchema augmentationSchema = (AugmentationSchema) effectiveStatement; - augmentations.add(augmentationSchema); + augmentationsInit.add(augmentationSchema); } } - this.unknownNodes = ImmutableList.copyOf(unknownNodes); - this.augmentations = ImmutableSet.copyOf(augmentations); + this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); + this.augmentations = ImmutableSet.copyOf(augmentationsInit); // :TODO other substatement collections ... } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/NotificationEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/NotificationEffectiveStatementImpl.java index 4afe4f4dcf..b53772ae92 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/NotificationEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/NotificationEffectiveStatementImpl.java @@ -46,22 +46,22 @@ public class NotificationEffectiveStatementImpl private void initSubstatementCollections() { Collection> effectiveSubstatements = effectiveSubstatements(); - LinkedList unknownNodes = new LinkedList(); - HashSet augmentations = new HashSet(); + List unknownNodesInit = new LinkedList<>(); + Set augmentationsInit = new HashSet<>(); for (EffectiveStatement effectiveStatement : effectiveSubstatements) { if (effectiveStatement instanceof UnknownSchemaNode) { UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; - unknownNodes.add(unknownNode); + unknownNodesInit.add(unknownNode); } if (effectiveStatement instanceof AugmentationSchema) { AugmentationSchema augmentationSchema = (AugmentationSchema) effectiveStatement; - augmentations.add(augmentationSchema); + augmentationsInit.add(augmentationSchema); } } - this.unknownNodes = ImmutableList.copyOf(unknownNodes); - this.augmentations = ImmutableSet.copyOf(augmentations); + this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); + this.augmentations = ImmutableSet.copyOf(augmentationsInit); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/OutputEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/OutputEffectiveStatementImpl.java index e35efd9948..c6d21e86a7 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/OutputEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/OutputEffectiveStatementImpl.java @@ -59,22 +59,22 @@ public class OutputEffectiveStatementImpl extends private void initSubstatementCollections() { Collection> effectiveSubstatements = effectiveSubstatements(); - LinkedList unknownNodes = new LinkedList(); - HashSet augmentations = new HashSet(); + List unknownNodesInit = new LinkedList<>(); + Set augmentationsInit = new HashSet<>(); for (EffectiveStatement effectiveStatement : effectiveSubstatements) { if (effectiveStatement instanceof UnknownSchemaNode) { UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; - unknownNodes.add(unknownNode); + unknownNodesInit.add(unknownNode); } if (effectiveStatement instanceof AugmentationSchema) { AugmentationSchema augmentationSchema = (AugmentationSchema) effectiveStatement; - augmentations.add(augmentationSchema); + augmentationsInit.add(augmentationSchema); } } - this.unknownNodes = ImmutableList.copyOf(unknownNodes); - this.augmentations = ImmutableSet.copyOf(augmentations); + this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); + this.augmentations = ImmutableSet.copyOf(augmentationsInit); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/RpcEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/RpcEffectiveStatementImpl.java index a0d1ad1229..1fcecde23e 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/RpcEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/RpcEffectiveStatementImpl.java @@ -49,22 +49,22 @@ public class RpcEffectiveStatementImpl extends AbstractEffectiveDocumentedNode> effectiveSubstatements = effectiveSubstatements(); - LinkedList unknownNodes = new LinkedList(); - HashSet groupings = new HashSet(); - HashSet> typeDefinitions = new HashSet>(); + List unknownNodesInit = new LinkedList<>(); + Set groupingsInit = new HashSet<>(); + Set> typeDefinitionsInit = new HashSet<>(); for (EffectiveStatement effectiveStatement : effectiveSubstatements) { if (effectiveStatement instanceof UnknownSchemaNode) { UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; - unknownNodes.add(unknownNode); + unknownNodesInit.add(unknownNode); } if (effectiveStatement instanceof GroupingDefinition) { GroupingDefinition groupingDefinition = (GroupingDefinition) effectiveStatement; - groupings.add(groupingDefinition); + groupingsInit.add(groupingDefinition); } if (effectiveStatement instanceof TypeDefinition) { TypeDefinition typeDefinition = (TypeDefinition) effectiveStatement; - typeDefinitions.add(typeDefinition); + typeDefinitionsInit.add(typeDefinition); } if (this.input == null && effectiveStatement instanceof InputEffectiveStatementImpl) { this.input = (InputEffectiveStatementImpl) effectiveStatement; @@ -74,9 +74,9 @@ public class RpcEffectiveStatementImpl extends AbstractEffectiveDocumentedNode getDependentNodes(Set nodes) { Set dependentNodes = Sets.newHashSet(); for (Node n : nodes) { - if (n.getOutEdges().size() == 0) { + if (n.getOutEdges().isEmpty()) { dependentNodes.add(n); } } @@ -108,6 +108,11 @@ public final class TopologicalSort { private final Set inEdges; private final Set outEdges; + public NodeImpl() { + inEdges = Sets.newHashSet(); + outEdges = Sets.newHashSet(); + } + @Override public Set getInEdges() { return inEdges; @@ -123,11 +128,6 @@ public final class TopologicalSort { outEdges.add(e); to.getInEdges().add(e); } - - public NodeImpl() { - inEdges = Sets.newHashSet(); - outEdges = Sets.newHashSet(); - } } /** @@ -137,6 +137,11 @@ public final class TopologicalSort { private final Node from; private final Node to; + public EdgeImpl(Node from, Node to) { + this.from = from; + this.to = to; + } + @Override public Node getFrom() { return from; @@ -147,12 +152,6 @@ public final class TopologicalSort { return to; } - public EdgeImpl(Node from, Node to) { - this.from = from; - this.to = to; - - } - @Override public int hashCode() { final int prime = 31; diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/builder/impl/BuilderUtilsTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/builder/impl/BuilderUtilsTest.java index 2ea1099399..74d38ae920 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/builder/impl/BuilderUtilsTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/builder/impl/BuilderUtilsTest.java @@ -6,22 +6,45 @@ */ package org.opendaylight.yangtools.yang.parser.builder.impl; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; -import com.google.common.base.Optional; import java.net.URI; import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.NavigableMap; +import java.util.TreeMap; + import org.junit.Before; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.*; +import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition; +import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; +import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; +import org.opendaylight.yangtools.yang.model.api.SchemaContext; +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.model.util.Uint16; -import org.opendaylight.yangtools.yang.parser.builder.api.*; +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.SchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; import org.opendaylight.yangtools.yang.parser.util.YangParseException; +import com.google.common.base.Optional; + /** * Test suite for increasing of test coverage of BuilderUtils implementation. * @@ -67,7 +90,7 @@ public class BuilderUtilsTest { @Test public void testFindModuleFromBuildersWithNullPrefix() throws Exception { - final Map> testModules = initModuleBuildersForTest(); + final Map> testModules = initModuleBuildersForTest(); ModuleBuilder result = BuilderUtils.findModuleFromBuilders(testModules, masterModule, null, 12); assertEquals(masterModule, result); @@ -79,8 +102,8 @@ public class BuilderUtilsTest { assertEquals(dependentModule, result); } - private Map> initModuleBuildersForTest() throws Exception { - final Map> modules = new HashMap<>(); + private Map> initModuleBuildersForTest() throws Exception { + final Map> modules = new HashMap<>(); final String module3Name = "Module3"; ModuleBuilder module3 = new ModuleBuilder(module3Name, "test/module/path/module3.yang"); @@ -92,13 +115,13 @@ public class BuilderUtilsTest { dependentModule.addModuleImport(module3.getModuleName(), module3.getRevision(), "ter"); - final TreeMap module1Map = new TreeMap<>(); + final NavigableMap module1Map = new TreeMap<>(); module1Map.put(masterModule.getRevision(), masterModule); - final TreeMap module2Map = new TreeMap<>(); + final NavigableMap module2Map = new TreeMap<>(); module2Map.put(dependentModule.getRevision(), dependentModule); - final TreeMap module3Map = new TreeMap<>(); + final NavigableMap module3Map = new TreeMap<>(); module3Map.put(module3.getRevision(), module3); modules.put(masterModule.getName(), module1Map); @@ -110,7 +133,7 @@ public class BuilderUtilsTest { @Test(expected = YangParseException.class) public void testFindModuleFromBuildersWithNoImportedModule() throws Exception { - final Map> testModules = initModuleBuildersForTest(); + final Map> testModules = initModuleBuildersForTest(); BuilderUtils.findModuleFromBuilders(testModules, masterModule, "eth", 12); } @@ -379,8 +402,8 @@ public class BuilderUtilsTest { @Test public void testFindModule() { - final Map> modules = new HashMap<>(1); - final TreeMap masterModuleMap = new TreeMap<>(); + final Map> modules = new HashMap<>(1); + final NavigableMap masterModuleMap = new TreeMap<>(); masterModuleMap.put(masterModule.getRevision(), masterModule); modules.put(masterModule.getNamespace(), masterModuleMap); -- 2.36.6