--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.model.api;
+
+import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
+import org.opendaylight.yangtools.yang.model.api.stmt.UnknownEffectiveStatement;
+
+@Beta
+public interface AugmentIdentifierEffectiveStatement
+ extends UnknownEffectiveStatement<String, AugmentIdentifierStatement> {
+ @Override
+ default StatementDefinition statementDefinition() {
+ return OpenDaylightExtensionsStatements.AUGMENT_IDENTIFIER;
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.model.api;
+
+import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
+import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
+
+@Beta
+public interface AugmentIdentifierStatement extends UnknownStatement<String> {
+ @Override
+ default StatementDefinition statementDefinition() {
+ return OpenDaylightExtensionsStatements.AUGMENT_IDENTIFIER;
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.model.api;
+
+import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
+import org.opendaylight.yangtools.yang.model.api.stmt.UnknownEffectiveStatement;
+
+@Beta
+public interface ContextInstanceEffectiveStatement
+ extends UnknownEffectiveStatement<String, ContextInstanceStatement> {
+ @Override
+ default StatementDefinition statementDefinition() {
+ return OpenDaylightExtensionsStatements.CONTEXT_INSTANCE;
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.model.api;
+
+import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
+import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
+
+@Beta
+public interface ContextInstanceStatement extends UnknownStatement<String> {
+ @Override
+ default StatementDefinition statementDefinition() {
+ return OpenDaylightExtensionsStatements.CONTEXT_INSTANCE;
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.model.api;
+
+import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
+import org.opendaylight.yangtools.yang.model.api.stmt.UnknownEffectiveStatement;
+
+@Beta
+public interface ContextReferenceEffectiveStatement
+ extends UnknownEffectiveStatement<String, ContextReferenceStatement> {
+ @Override
+ default StatementDefinition statementDefinition() {
+ return OpenDaylightExtensionsStatements.CONTEXT_REFERENCE;
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.model.api;
+
+import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
+import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
+
+@Beta
+public interface ContextReferenceStatement extends UnknownStatement<String> {
+ @Override
+ default StatementDefinition statementDefinition() {
+ return OpenDaylightExtensionsStatements.CONTEXT_REFERENCE;
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.model.api;
+
+import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
+import org.opendaylight.yangtools.yang.model.api.stmt.UnknownEffectiveStatement;
+
+@Beta
+public interface InstanceTargetEffectiveStatement
+ extends UnknownEffectiveStatement<String, InstanceTargetStatement> {
+ @Override
+ default StatementDefinition statementDefinition() {
+ return OpenDaylightExtensionsStatements.INSTANCE_TARGET;
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.model.api;
+
+import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
+import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
+
+@Beta
+public interface InstanceTargetStatement extends UnknownStatement<String> {
+ @Override
+ default StatementDefinition statementDefinition() {
+ return OpenDaylightExtensionsStatements.INSTANCE_TARGET;
+ }
+}
public enum OpenDaylightExtensionsStatements implements StatementDefinition {
// FIXME: this extension is not present in yang-ext.yang as published by mdsal
ANYXML_SCHEMA_LOCATION(QName.create(OpenDaylightExtensionsConstants.ORIGINAL_MODULE, "anyxml-schema-location"),
- "target-node", AnyxmlSchemaLocationStatement.class, AnyxmlSchemaLocationEffectiveStatement.class);
- // FIXME: add augment-identifier
- // FIXME: add rpc-context-instance
- // FIXME: add context-reference
- // FIXME: add context-instance
- // FIXME: add instance-target
+ "target-node", AnyxmlSchemaLocationStatement.class, AnyxmlSchemaLocationEffectiveStatement.class),
+ // Binding codegen support
+ AUGMENT_IDENTIFIER(QName.create(OpenDaylightExtensionsConstants.ORIGINAL_MODULE, "augment-identifier"),
+ "identifier", AugmentIdentifierStatement.class, AugmentIdentifierEffectiveStatement.class),
+
+ // Context-aware RPCs
+ CONTEXT_INSTANCE(QName.create(OpenDaylightExtensionsConstants.ORIGINAL_MODULE, "context-instance"),
+ "context-type", ContextInstanceStatement.class, ContextInstanceEffectiveStatement.class),
+ CONTEXT_REFERENCE(QName.create(OpenDaylightExtensionsConstants.ORIGINAL_MODULE, "context-reference"),
+ "context-type", ContextReferenceStatement.class, ContextReferenceEffectiveStatement.class),
+ INSTANCE_TARGET(QName.create(OpenDaylightExtensionsConstants.ORIGINAL_MODULE, "instance-target"),
+ "path", InstanceTargetStatement.class, InstanceTargetEffectiveStatement.class),
+ RPC_CONTEXT_REFERENCE(QName.create(OpenDaylightExtensionsConstants.ORIGINAL_MODULE, "rpc-context-reference"),
+ "context-type", RpcContextReferenceStatement.class, RpcContextReferenceEffectiveStatement.class);
private final Class<? extends EffectiveStatement<?, ?>> effectiveRepresentation;
private final Class<? extends DeclaredStatement<?>> declaredRepresentation;
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.model.api;
+
+import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
+import org.opendaylight.yangtools.yang.model.api.stmt.UnknownEffectiveStatement;
+
+@Beta
+public interface RpcContextReferenceEffectiveStatement
+ extends UnknownEffectiveStatement<String, RpcContextReferenceStatement> {
+ @Override
+ default StatementDefinition statementDefinition() {
+ return OpenDaylightExtensionsStatements.RPC_CONTEXT_REFERENCE;
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.model.api;
+
+import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
+import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
+
+@Beta
+public interface RpcContextReferenceStatement extends UnknownStatement<String> {
+ @Override
+ default StatementDefinition statementDefinition() {
+ return OpenDaylightExtensionsStatements.RPC_CONTEXT_REFERENCE;
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.parser;
+
+import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.odlext.model.api.AugmentIdentifierEffectiveStatement;
+import org.opendaylight.yangtools.odlext.model.api.AugmentIdentifierStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultArgument.WithSubstatements;
+
+final class AugmentIdentifierEffectiveStatementImpl extends WithSubstatements<String, AugmentIdentifierStatement>
+ implements AugmentIdentifierEffectiveStatement {
+ AugmentIdentifierEffectiveStatementImpl(final AugmentIdentifierStatement declared,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ super(declared, substatements);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.parser;
+
+import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.odlext.model.api.AugmentIdentifierStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement.WithRawStringArgument.WithSubstatements;
+
+final class AugmentIdentifierStatementImpl extends WithSubstatements implements AugmentIdentifierStatement {
+ AugmentIdentifierStatementImpl(final String argument,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ super(argument, substatements);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.parser;
+
+import com.google.common.annotations.Beta;
+import com.google.common.collect.ImmutableList;
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.odlext.model.api.AugmentIdentifierEffectiveStatement;
+import org.opendaylight.yangtools.odlext.model.api.AugmentIdentifierStatement;
+import org.opendaylight.yangtools.odlext.model.api.OpenDaylightExtensionsStatements;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStringStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
+
+@Beta
+public final class AugmentIdentifierStatementSupport
+ extends AbstractStringStatementSupport<AugmentIdentifierStatement, AugmentIdentifierEffectiveStatement> {
+ public static final @NonNull AugmentIdentifierStatementSupport INSTANCE = new AugmentIdentifierStatementSupport();
+
+ private static final SubstatementValidator VALIDATOR =
+ SubstatementValidator.builder(OpenDaylightExtensionsStatements.AUGMENT_IDENTIFIER).build();
+
+ private AugmentIdentifierStatementSupport() {
+ super(OpenDaylightExtensionsStatements.AUGMENT_IDENTIFIER, StatementPolicy.contextIndependent());
+ }
+
+ @Override
+ protected SubstatementValidator getSubstatementValidator() {
+ return VALIDATOR;
+ }
+
+ @Override
+ protected AugmentIdentifierStatement createDeclared(final StmtContext<String, AugmentIdentifierStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new AugmentIdentifierStatementImpl(ctx.getArgument(), substatements);
+ }
+
+ @Override
+ protected AugmentIdentifierEffectiveStatement createEffective(
+ final Current<String, AugmentIdentifierStatement> stmt,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return new AugmentIdentifierEffectiveStatementImpl(stmt.declared(), substatements);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.parser;
+
+import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.odlext.model.api.ContextInstanceEffectiveStatement;
+import org.opendaylight.yangtools.odlext.model.api.ContextInstanceStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultArgument.WithSubstatements;
+
+final class ContextInstanceEffectiveStatementImpl extends WithSubstatements<String, ContextInstanceStatement>
+ implements ContextInstanceEffectiveStatement {
+ ContextInstanceEffectiveStatementImpl(final ContextInstanceStatement declared,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ super(declared, substatements);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.parser;
+
+import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.odlext.model.api.ContextInstanceStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement.WithRawStringArgument.WithSubstatements;
+
+final class ContextInstanceStatementImpl extends WithSubstatements implements ContextInstanceStatement {
+ ContextInstanceStatementImpl(final String argument,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ super(argument, substatements);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.parser;
+
+import com.google.common.annotations.Beta;
+import com.google.common.collect.ImmutableList;
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.odlext.model.api.ContextInstanceEffectiveStatement;
+import org.opendaylight.yangtools.odlext.model.api.ContextInstanceStatement;
+import org.opendaylight.yangtools.odlext.model.api.OpenDaylightExtensionsStatements;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStringStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
+
+@Beta
+public final class ContextInstanceStatementSupport
+ extends AbstractStringStatementSupport<ContextInstanceStatement, ContextInstanceEffectiveStatement> {
+ public static final @NonNull ContextInstanceStatementSupport INSTANCE = new ContextInstanceStatementSupport();
+
+ private static final SubstatementValidator VALIDATOR =
+ SubstatementValidator.builder(OpenDaylightExtensionsStatements.CONTEXT_INSTANCE).build();
+
+ private ContextInstanceStatementSupport() {
+ super(OpenDaylightExtensionsStatements.CONTEXT_INSTANCE, StatementPolicy.contextIndependent());
+ }
+
+ @Override
+ protected SubstatementValidator getSubstatementValidator() {
+ return VALIDATOR;
+ }
+
+ @Override
+ protected ContextInstanceStatement createDeclared(final StmtContext<String, ContextInstanceStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new ContextInstanceStatementImpl(ctx.getArgument(), substatements);
+ }
+
+ @Override
+ protected ContextInstanceEffectiveStatement createEffective(final Current<String, ContextInstanceStatement> stmt,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return new ContextInstanceEffectiveStatementImpl(stmt.declared(), substatements);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.parser;
+
+import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.odlext.model.api.ContextReferenceEffectiveStatement;
+import org.opendaylight.yangtools.odlext.model.api.ContextReferenceStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultArgument.WithSubstatements;
+
+final class ContextReferenceEffectiveStatementImpl extends WithSubstatements<String, ContextReferenceStatement>
+ implements ContextReferenceEffectiveStatement {
+ ContextReferenceEffectiveStatementImpl(final ContextReferenceStatement declared,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ super(declared, substatements);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.parser;
+
+import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.odlext.model.api.ContextReferenceStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement.WithRawStringArgument.WithSubstatements;
+
+final class ContextReferenceStatementImpl extends WithSubstatements implements ContextReferenceStatement {
+ ContextReferenceStatementImpl(final String argument,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ super(argument, substatements);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.parser;
+
+import com.google.common.annotations.Beta;
+import com.google.common.collect.ImmutableList;
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.odlext.model.api.ContextReferenceEffectiveStatement;
+import org.opendaylight.yangtools.odlext.model.api.ContextReferenceStatement;
+import org.opendaylight.yangtools.odlext.model.api.OpenDaylightExtensionsStatements;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStringStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
+
+@Beta
+public final class ContextReferenceStatementSupport
+ extends AbstractStringStatementSupport<ContextReferenceStatement, ContextReferenceEffectiveStatement> {
+ public static final @NonNull ContextReferenceStatementSupport INSTANCE = new ContextReferenceStatementSupport();
+
+ private static final SubstatementValidator VALIDATOR =
+ SubstatementValidator.builder(OpenDaylightExtensionsStatements.CONTEXT_REFERENCE).build();
+
+ private ContextReferenceStatementSupport() {
+ super(OpenDaylightExtensionsStatements.CONTEXT_REFERENCE, StatementPolicy.contextIndependent());
+ }
+
+ @Override
+ protected SubstatementValidator getSubstatementValidator() {
+ return VALIDATOR;
+ }
+
+ @Override
+ protected ContextReferenceStatement createDeclared(final StmtContext<String, ContextReferenceStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new ContextReferenceStatementImpl(ctx.getArgument(), substatements);
+ }
+
+ @Override
+ protected ContextReferenceEffectiveStatement createEffective(final Current<String, ContextReferenceStatement> stmt,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return new ContextReferenceEffectiveStatementImpl(stmt.declared(), substatements);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.parser;
+
+import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.odlext.model.api.InstanceTargetEffectiveStatement;
+import org.opendaylight.yangtools.odlext.model.api.InstanceTargetStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultArgument.WithSubstatements;
+
+final class InstanceTargetEffectiveStatementImpl extends WithSubstatements<String, InstanceTargetStatement>
+ implements InstanceTargetEffectiveStatement {
+ InstanceTargetEffectiveStatementImpl(final InstanceTargetStatement declared,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ super(declared, substatements);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.parser;
+
+import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.odlext.model.api.InstanceTargetStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement.WithRawStringArgument.WithSubstatements;
+
+final class InstanceTargetStatementImpl extends WithSubstatements implements InstanceTargetStatement {
+ InstanceTargetStatementImpl(final String argument,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ super(argument, substatements);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.parser;
+
+import com.google.common.annotations.Beta;
+import com.google.common.collect.ImmutableList;
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.odlext.model.api.InstanceTargetEffectiveStatement;
+import org.opendaylight.yangtools.odlext.model.api.InstanceTargetStatement;
+import org.opendaylight.yangtools.odlext.model.api.OpenDaylightExtensionsStatements;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStringStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
+
+@Beta
+public final class InstanceTargetStatementSupport
+ extends AbstractStringStatementSupport<InstanceTargetStatement, InstanceTargetEffectiveStatement> {
+ public static final @NonNull InstanceTargetStatementSupport INSTANCE = new InstanceTargetStatementSupport();
+
+ private static final SubstatementValidator VALIDATOR =
+ SubstatementValidator.builder(OpenDaylightExtensionsStatements.INSTANCE_TARGET).build();
+
+ private InstanceTargetStatementSupport() {
+ super(OpenDaylightExtensionsStatements.INSTANCE_TARGET, StatementPolicy.contextIndependent());
+ }
+
+ @Override
+ protected SubstatementValidator getSubstatementValidator() {
+ return VALIDATOR;
+ }
+
+ @Override
+ protected InstanceTargetStatement createDeclared(final StmtContext<String, InstanceTargetStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new InstanceTargetStatementImpl(ctx.getArgument(), substatements);
+ }
+
+ @Override
+ protected InstanceTargetEffectiveStatement createEffective(final Current<String, InstanceTargetStatement> stmt,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return new InstanceTargetEffectiveStatementImpl(stmt.declared(), substatements);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.parser;
+
+import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.odlext.model.api.RpcContextReferenceEffectiveStatement;
+import org.opendaylight.yangtools.odlext.model.api.RpcContextReferenceStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultArgument.WithSubstatements;
+
+final class RpcContextReferenceEffectiveStatementImpl extends WithSubstatements<String, RpcContextReferenceStatement>
+ implements RpcContextReferenceEffectiveStatement {
+ RpcContextReferenceEffectiveStatementImpl(final RpcContextReferenceStatement declared,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ super(declared, substatements);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.parser;
+
+import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.odlext.model.api.RpcContextReferenceStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement.WithRawStringArgument.WithSubstatements;
+
+final class RpcContextReferenceStatementImpl extends WithSubstatements implements RpcContextReferenceStatement {
+ RpcContextReferenceStatementImpl(final String argument,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ super(argument, substatements);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 PANTHEON.tech, 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.odlext.parser;
+
+import com.google.common.annotations.Beta;
+import com.google.common.collect.ImmutableList;
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.odlext.model.api.OpenDaylightExtensionsStatements;
+import org.opendaylight.yangtools.odlext.model.api.RpcContextReferenceEffectiveStatement;
+import org.opendaylight.yangtools.odlext.model.api.RpcContextReferenceStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStringStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
+
+@Beta
+public final class RpcContextReferenceStatementSupport
+ extends AbstractStringStatementSupport<RpcContextReferenceStatement, RpcContextReferenceEffectiveStatement> {
+ public static final @NonNull RpcContextReferenceStatementSupport INSTANCE =
+ new RpcContextReferenceStatementSupport();
+
+ private static final SubstatementValidator VALIDATOR =
+ SubstatementValidator.builder(OpenDaylightExtensionsStatements.RPC_CONTEXT_REFERENCE).build();
+
+ private RpcContextReferenceStatementSupport() {
+ super(OpenDaylightExtensionsStatements.RPC_CONTEXT_REFERENCE, StatementPolicy.contextIndependent());
+ }
+
+ @Override
+ protected SubstatementValidator getSubstatementValidator() {
+ return VALIDATOR;
+ }
+
+ @Override
+ protected RpcContextReferenceStatement createDeclared(
+ final StmtContext<String, RpcContextReferenceStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new RpcContextReferenceStatementImpl(ctx.getArgument(), substatements);
+ }
+
+ @Override
+ protected RpcContextReferenceEffectiveStatement createEffective(
+ final Current<String, RpcContextReferenceStatement> stmt,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return new RpcContextReferenceEffectiveStatementImpl(stmt.declared(), substatements);
+ }
+}
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.odlext.parser.AnyxmlSchemaLocationNamespace;
import org.opendaylight.yangtools.odlext.parser.AnyxmlSchemaLocationStatementSupport;
+import org.opendaylight.yangtools.odlext.parser.AugmentIdentifierStatementSupport;
+import org.opendaylight.yangtools.odlext.parser.ContextInstanceStatementSupport;
+import org.opendaylight.yangtools.odlext.parser.ContextReferenceStatementSupport;
+import org.opendaylight.yangtools.odlext.parser.InstanceTargetStatementSupport;
+import org.opendaylight.yangtools.odlext.parser.RpcContextReferenceStatementSupport;
import org.opendaylight.yangtools.openconfig.parser.EncryptedValueStatementSupport;
import org.opendaylight.yangtools.openconfig.parser.HashedValueStatementSupport;
import org.opendaylight.yangtools.rfc6241.parser.GetFilterElementAttributesStatementSupport;
private static @NonNull CustomCrossSourceStatementReactorBuilder addExtensions(
final @NonNull CustomCrossSourceStatementReactorBuilder builder) {
return builder
- // AnyxmlSchemaLocation support
+ // OpenDaylight extensions
.addStatementSupport(ModelProcessingPhase.FULL_DECLARATION,
AnyxmlSchemaLocationStatementSupport.getInstance())
.addNamespaceSupport(ModelProcessingPhase.FULL_DECLARATION, AnyxmlSchemaLocationNamespace.BEHAVIOUR)
+ .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, AugmentIdentifierStatementSupport.INSTANCE)
+ .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, ContextInstanceStatementSupport.INSTANCE)
+ .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, ContextReferenceStatementSupport.INSTANCE)
+ .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, InstanceTargetStatementSupport.INSTANCE)
+ .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION,
+ RpcContextReferenceStatementSupport.INSTANCE)
// RFC6241 get-filter-element-attributes support
.addStatementSupport(ModelProcessingPhase.FULL_DECLARATION,