<artifactId>openconfig-model-api</artifactId>
<version>2.0.0-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>openconfig-parser-support</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ </dependency>
<dependency>
<groupId>org.opendaylight.yangtools</groupId>
*/
public final class OpenConfigConstants {
private static final String MODULE_NAME = "yang-ext";
- private static final URI MODULE_NAMESPACE = URI.create("http://openconfig.net/yang/openconfig-ext");
+
+ // Package-visible, because openconfig-version applies across all known revisions and needs to bind to all of them
+ static final URI MODULE_NAMESPACE = URI.create("http://openconfig.net/yang/openconfig-ext");
// Initial revision, defining semantic-version
private static final Revision SEMVER_REVISION = Revision.of("2015-10-09");
--- /dev/null
+/*
+ * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.openconfig.model.api;
+
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+
+/**
+ * Effective statement corresponding to config's "openconfig-hashed-value" (new name) or "openconfig-encrypted-value"
+ * (old name).
+ *
+ * @author Robert Varga
+ */
+public interface OpenConfigHashedValueEffectiveStatement
+ extends EffectiveStatement<Void, OpenConfigHashedValueStatement> {
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.openconfig.model.api;
+
+import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.model.api.SchemaNode;
+import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
+
+/**
+ * SchemaNode presence in SchemaNode API space.
+ *
+ * @author Robert Varga
+ */
+@Beta
+public interface OpenConfigHashedValueSchemaNode extends UnknownSchemaNode {
+ /**
+ * Determine if specified SchemaNode is marked to report its value in hashed form.
+ *
+ * @param schemaNode schema node to examine
+ * @return True if specified node is marked, false otherwise
+ * @throws NullPointerException if schemaNode is null
+ */
+ static boolean isPresentIn(final SchemaNode schemaNode) {
+ return schemaNode.getUnknownSchemaNodes().stream().anyMatch(OpenConfigHashedValueSchemaNode.class::isInstance);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.openconfig.model.api;
+
+import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
+
+/**
+ * Declared statement corresponding to config's "openconfig-hashed-value" (new name) or "openconfig-encrypted-value"
+ * (old name).
+ *
+ * @author Robert Varga
+ */
+public interface OpenConfigHashedValueStatement extends UnknownStatement<Void> {
+
+}
@Beta
public enum OpenConfigStatements implements StatementDefinition {
- // FIXME: add support for hashed value
- OPENCONFIG_VERSION(QName.create(OpenConfigConstants.SEMVER_MODULE.getNamespace(), "openconfig-version"), "semver",
- OpenconfigVersionStatement.class, OpenconfigVersionEffectiveStatement.class);
+ OPENCONFIG_ENCRYPTED_VALUE(QName.create(OpenConfigConstants.ENCRYPTED_VALUE_MODULE, "openconfig-encrypted-value"),
+ null, OpenConfigHashedValueStatement.class, OpenConfigHashedValueEffectiveStatement.class),
+ OPENCONFIG_HASHED_VALUE(QName.create(OpenConfigConstants.HASHED_VALUE_MODULE, "openconfig-hashed-value"), null,
+ OpenConfigHashedValueStatement.class, OpenConfigHashedValueEffectiveStatement.class),
+ OPENCONFIG_VERSION(QName.create(OpenConfigConstants.MODULE_NAMESPACE, "openconfig-version"), "semver",
+ OpenConfigVersionStatement.class, OpenConfigVersionEffectiveStatement.class);
private final Class<? extends EffectiveStatement<?, ?>> effectiveRepresentation;
private final Class<? extends DeclaredStatement<?>> declaredRepresentation;
private final QName statementName;
private final QName argumentName;
- OpenConfigStatements(final QName statementName, final String argumentName,
+ OpenConfigStatements(final QName statementName, @Nullable final String argumentName,
final Class<? extends DeclaredStatement<?>> declaredRepresentation,
final Class<? extends EffectiveStatement<?, ?>> effectiveRepresentation) {
this.statementName = statementName.intern();
- this.argumentName = QName.create(statementName, argumentName);
+ this.argumentName = argumentName != null ? QName.create(statementName, argumentName) : null;
this.declaredRepresentation = requireNonNull(declaredRepresentation);
this.effectiveRepresentation = requireNonNull(effectiveRepresentation);
}
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@Beta
-public interface OpenconfigVersionEffectiveStatement extends EffectiveStatement<SemVer, OpenconfigVersionStatement> {
+public interface OpenConfigVersionEffectiveStatement extends EffectiveStatement<SemVer, OpenConfigVersionStatement> {
}
import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
@Beta
-public interface OpenconfigVersionStatement extends UnknownStatement<SemVer> {
+public interface OpenConfigVersionStatement extends UnknownStatement<SemVer> {
}
--- /dev/null
+/*
+ * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+/**
+ * YANG parser support for metamodel extensions defined in
+ * <a href="https://github.com/openconfig/public/blob/master/release/models/openconfig-extensions.yang">OpenConfig</a>.
+ *
+ * <p>
+ * The openconfig-version extension is integrated in the parser, as it supports the semantic version import resolution,
+ * for other extensions use
+ * {@link org.opendaylight.yangtools.openconfig.model.api.OpenConfigStatements}. SchemaNode world
+ * primary entry point is defined in
+ * {@link org.opendaylight.yangtools.openconfig.model.api.OpenConfigHashedValueSchemaNode#isPresentIn(
+ * org.opendaylight.yangtools.yang.model.api.SchemaNode)}.
+ *
+ * @author Robert Varga
+ */
+package org.opendaylight.yangtools.openconfig.model.api;
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<!--
+ Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <parent>
+ <groupId>org.opendaylight.odlparent</groupId>
+ <artifactId>bundle-parent</artifactId>
+ <version>2.0.5</version>
+ <relativePath/>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>openconfig-parser-support</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ <packaging>bundle</packaging>
+ <name>${project.artifactId}</name>
+ <description>OpenConfig extensions parser support</description>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yangtools-artifacts</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ <scope>import</scope>
+ <type>pom</type>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>concepts</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>yang-common</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>rfc7952-model-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <!-- FIXME: this needs to be trimmed down to the point of requiring only yang-parser-spi
+ and yang-parser-reactor -->
+ <artifactId>yang-parser-impl</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-checkstyle-plugin</artifactId>
+ <configuration>
+ <propertyExpansion>checkstyle.violationSeverity=error</propertyExpansion>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <!--
+ Maven Site Configuration
+
+ The following configuration is necessary for maven-site-plugin to
+ correctly identify the correct deployment path for OpenDaylight Maven
+ sites.
+ -->
+ <url>${odl.site.url}/${project.groupId}/${stream}/${project.artifactId}/</url>
+
+ <distributionManagement>
+ <site>
+ <id>opendaylight-site</id>
+ <url>${nexus.site.url}/${project.artifactId}/</url>
+ </site>
+ </distributionManagement>
+</project>
--- /dev/null
+/*
+ * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.openconfig.parser;
+
+import org.opendaylight.yangtools.openconfig.model.api.OpenConfigHashedValueEffectiveStatement;
+import org.opendaylight.yangtools.openconfig.model.api.OpenConfigHashedValueStatement;
+import org.opendaylight.yangtools.openconfig.model.api.OpenConfigStatements;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase;
+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.SubstatementValidator;
+
+final class HashedValue extends AbstractStatementSupport<Void, OpenConfigHashedValueStatement,
+ OpenConfigHashedValueEffectiveStatement> {
+
+ private static final class Declared extends AbstractDeclaredStatement<Void>
+ implements OpenConfigHashedValueStatement {
+ Declared(final StmtContext<Void, ?, ?> context) {
+ super(context);
+ }
+
+ @Override
+ public Void getArgument() {
+ return null;
+ }
+ }
+
+ private static final class Effective
+ extends UnknownEffectiveStatementBase<Void, OpenConfigHashedValueStatement>
+ implements OpenConfigHashedValueEffectiveStatement {
+
+ private final SchemaPath path;
+
+ Effective(final StmtContext<Void, OpenConfigHashedValueStatement, ?> ctx) {
+ super(ctx);
+ path = ctx.getParentContext().getSchemaPath().get().createChild(
+ ctx.getPublicDefinition().getStatementName());
+ }
+
+ @Override
+ public QName getQName() {
+ return path.getLastComponent();
+ }
+
+ @Override
+ public SchemaPath getPath() {
+ return path;
+ }
+ }
+
+ private static final HashedValue ENCRYPTED_INSTANCE =
+ new HashedValue(OpenConfigStatements.OPENCONFIG_ENCRYPTED_VALUE);
+ private static final HashedValue HASHED_INSTANCE = new HashedValue(OpenConfigStatements.OPENCONFIG_HASHED_VALUE);
+
+ private final SubstatementValidator validator;
+
+ HashedValue(final StatementDefinition definition) {
+ super(definition);
+ this.validator = SubstatementValidator.builder(definition).build();
+ }
+
+ static HashedValue getEncryptedInstance() {
+ return ENCRYPTED_INSTANCE;
+ }
+
+ static HashedValue getHashedInstance() {
+ return HASHED_INSTANCE;
+ }
+
+ @Override
+ public OpenConfigHashedValueStatement createDeclared(
+ final StmtContext<Void, OpenConfigHashedValueStatement, ?> ctx) {
+ return new Declared(ctx);
+ }
+
+ @Override
+ public OpenConfigHashedValueEffectiveStatement createEffective(
+ final StmtContext<Void, OpenConfigHashedValueStatement, OpenConfigHashedValueEffectiveStatement> ctx) {
+ return new Effective(ctx);
+ }
+
+ @Override
+ public Void parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
+ return null;
+ }
+
+ @Override
+ protected SubstatementValidator getSubstatementValidator() {
+ return validator;
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.openconfig.parser;
+
+import com.google.common.annotations.Beta;
+import com.google.common.collect.ImmutableList;
+import java.util.Collection;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport;
+
+/**
+ * Primary entry point into this implementation. Use {@link #getStatements()} to acquire a collection of
+ * {@link StatementSupport} instances, which need to be registered with the parser.
+ *
+ * @author Robert Varga
+ */
+@Beta
+public final class OpenConfig {
+
+ private OpenConfig() {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * Return a collection of statements which need to be added into parser reactor to enable support for OpenConfig
+ * YANG extensions.
+ *
+ * @return Collection of statements to be added.
+ */
+ public static Collection<StatementSupport<?, ?, ?>> getStatements() {
+ return ImmutableList.of(HashedValue.getHashedInstance(), HashedValue.getEncryptedInstance());
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+/**
+ * YANG parser support for metamodel extensions defined in
+ * <a href="https://github.com/openconfig/public/blob/master/release/models/openconfig-extensions.yang">OpenConfig</a>.
+ *
+ * <p>
+ * The openconfig-version extension is integrated in the parser, as it supports the semantic version import resoltion,
+ * for other extensions use {@link OpenConfig#getStatements()}.
+ *
+ * @author Robert Varga
+ */
+package org.opendaylight.yangtools.openconfig.parser;
<module>yang-model-validator</module>
<module>yang-test-util</module>
- <!-- OpenConfig (semantic version) metamodel support -->
+ <!-- OpenConfig (semantic version, hashed value) metamodel support -->
<module>openconfig-model-api</module>
+ <module>openconfig-parser-support</module>
<!-- OpenDaylight messy extensions -->
<module>odlext-model-api</module>
*/
/**
* YANG metamodel extensions to support metadata, as defined in
- * <a href="https://tools.ietf.org/html/rfc7952">RFC7952</a>.
+ * <a href="https://tools.ietf.org/html/rfc7952">RFC7952</a>. For SchemaNode world entry space is defined via
+ * {@link org.opendaylight.yangtools.rfc7952.model.api.AnnotationSchemaNode}'s static methods.
*
* @author Robert Varga
*/
import java.util.Objects;
import javax.annotation.Nonnull;
import org.opendaylight.yangtools.concepts.SemVer;
-import org.opendaylight.yangtools.openconfig.model.api.OpenconfigVersionEffectiveStatement;
-import org.opendaylight.yangtools.openconfig.model.api.OpenconfigVersionStatement;
+import org.opendaylight.yangtools.openconfig.model.api.OpenConfigVersionEffectiveStatement;
+import org.opendaylight.yangtools.openconfig.model.api.OpenConfigVersionStatement;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-final class OpenconfigVersionEffectiveStatementImpl extends
- UnknownEffectiveStatementBase<SemVer, OpenconfigVersionStatement>
- implements OpenconfigVersionEffectiveStatement {
+final class OpenConfigVersionEffectiveStatementImpl extends
+ UnknownEffectiveStatementBase<SemVer, OpenConfigVersionStatement>
+ implements OpenConfigVersionEffectiveStatement {
private final SchemaPath path;
- OpenconfigVersionEffectiveStatementImpl(final StmtContext<SemVer, OpenconfigVersionStatement, ?> ctx) {
+ OpenConfigVersionEffectiveStatementImpl(final StmtContext<SemVer, OpenConfigVersionStatement, ?> ctx) {
super(ctx);
path = ctx.getParentContext().getSchemaPath().get().createChild(getNodeType());
}
if (getClass() != obj.getClass()) {
return false;
}
- OpenconfigVersionEffectiveStatementImpl other = (OpenconfigVersionEffectiveStatementImpl) obj;
+ OpenConfigVersionEffectiveStatementImpl other = (OpenConfigVersionEffectiveStatementImpl) obj;
if (!Objects.equals(path, other.path)) {
return false;
}
package org.opendaylight.yangtools.yang.parser.openconfig.stmt;
import org.opendaylight.yangtools.concepts.SemVer;
-import org.opendaylight.yangtools.openconfig.model.api.OpenconfigVersionStatement;
+import org.opendaylight.yangtools.openconfig.model.api.OpenConfigVersionStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-final class OpenconfigVersionStatementImpl extends AbstractDeclaredStatement<SemVer>
- implements OpenconfigVersionStatement {
- OpenconfigVersionStatementImpl(final StmtContext<SemVer, OpenconfigVersionStatement, ?> context) {
+final class OpenConfigVersionStatementImpl extends AbstractDeclaredStatement<SemVer>
+ implements OpenConfigVersionStatement {
+ OpenConfigVersionStatementImpl(final StmtContext<SemVer, OpenConfigVersionStatement, ?> context) {
super(context);
}
import org.opendaylight.yangtools.concepts.SemVer;
import org.opendaylight.yangtools.openconfig.model.api.OpenConfigStatements;
-import org.opendaylight.yangtools.openconfig.model.api.OpenconfigVersionStatement;
+import org.opendaylight.yangtools.openconfig.model.api.OpenConfigVersionStatement;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.SemanticVersionNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-public final class OpenconfigVersionSupport extends AbstractStatementSupport<SemVer, OpenconfigVersionStatement,
- EffectiveStatement<SemVer, OpenconfigVersionStatement>> {
+public final class OpenConfigVersionSupport extends AbstractStatementSupport<SemVer, OpenConfigVersionStatement,
+ EffectiveStatement<SemVer, OpenConfigVersionStatement>> {
private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
OpenConfigStatements.OPENCONFIG_VERSION).build();
- private static final OpenconfigVersionSupport INSTANCE = new OpenconfigVersionSupport();
+ private static final OpenConfigVersionSupport INSTANCE = new OpenConfigVersionSupport();
- private OpenconfigVersionSupport() {
+ private OpenConfigVersionSupport() {
super(OpenConfigStatements.OPENCONFIG_VERSION);
}
- public static OpenconfigVersionSupport getInstance() {
+ public static OpenConfigVersionSupport getInstance() {
return INSTANCE;
}
}
@Override
- public void onLinkageDeclared(final Mutable<SemVer, OpenconfigVersionStatement,
- EffectiveStatement<SemVer, OpenconfigVersionStatement>> stmt) {
+ public void onLinkageDeclared(final Mutable<SemVer, OpenConfigVersionStatement,
+ EffectiveStatement<SemVer, OpenConfigVersionStatement>> stmt) {
stmt.addToNs(SemanticVersionNamespace.class, stmt.getParentContext(), stmt.getStatementArgument());
}
@Override
- public OpenconfigVersionStatement createDeclared(final StmtContext<SemVer, OpenconfigVersionStatement, ?> ctx) {
- return new OpenconfigVersionStatementImpl(ctx);
+ public OpenConfigVersionStatement createDeclared(final StmtContext<SemVer, OpenConfigVersionStatement, ?> ctx) {
+ return new OpenConfigVersionStatementImpl(ctx);
}
@Override
- public EffectiveStatement<SemVer, OpenconfigVersionStatement> createEffective(
- final StmtContext<SemVer, OpenconfigVersionStatement,
- EffectiveStatement<SemVer, OpenconfigVersionStatement>> ctx) {
- return new OpenconfigVersionEffectiveStatementImpl(ctx);
+ public EffectiveStatement<SemVer, OpenConfigVersionStatement> createEffective(
+ final StmtContext<SemVer, OpenConfigVersionStatement,
+ EffectiveStatement<SemVer, OpenConfigVersionStatement>> ctx) {
+ return new OpenConfigVersionEffectiveStatementImpl(ctx);
}
@Override
import javax.annotation.Nonnull;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.concepts.SemVer;
-import org.opendaylight.yangtools.openconfig.model.api.OpenconfigVersionEffectiveStatement;
+import org.opendaylight.yangtools.openconfig.model.api.OpenConfigVersionEffectiveStatement;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.common.YangVersion;
this.prefix = prefixStmt.get().argument();
this.yangVersion = findFirstEffectiveSubstatementArgument(YangVersionEffectiveStatement.class)
.orElse(YangVersion.VERSION_1);
- this.semanticVersion = findFirstEffectiveSubstatementArgument(OpenconfigVersionEffectiveStatement.class)
+ this.semanticVersion = findFirstEffectiveSubstatementArgument(OpenConfigVersionEffectiveStatement.class)
.orElse(null);
this.organization = findFirstEffectiveSubstatementArgument(OrganizationEffectiveStatement.class)
.orElse(null);
import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
import org.opendaylight.yangtools.yang.parser.odlext.namespace.AnyxmlSchemaLocationNamespace;
import org.opendaylight.yangtools.yang.parser.odlext.stmt.AnyxmlSchemaLocationSupport;
-import org.opendaylight.yangtools.yang.parser.openconfig.stmt.OpenconfigVersionSupport;
+import org.opendaylight.yangtools.yang.parser.openconfig.stmt.OpenConfigVersionSupport;
import org.opendaylight.yangtools.yang.parser.rfc7950.namespace.ChildSchemaNodeNamespace;
import org.opendaylight.yangtools.yang.parser.rfc7950.namespace.SchemaNodeIdentifierBuildNamespace;
import org.opendaylight.yangtools.yang.parser.rfc7950.namespace.URIStringToImportPrefix;
.addSupport(sourceLocal(BelongsToModuleContext.class))
.addSupport(sourceLocal(QNameToStatementDefinition.class))
.addSupport(sourceLocal(BelongsToPrefixToModuleName.class))
- .addSupport(OpenconfigVersionSupport.getInstance())
+ .addSupport(OpenConfigVersionSupport.getInstance())
.addSupport(global(SemanticVersionNamespace.class))
.addSupport(global(SemanticVersionModuleNamespace.class))
.addSupport(sourceLocal(ImportPrefixToSemVerSourceIdentifier.class))