import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
-import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementDefinitionContext;
/**
* Support for processing concrete YANG statement.
* @return Optional of unknown statement form of a regular yang statement or
* Optional.empty() if it is not supported by this statement support
*/
- default Optional<StatementDefinitionContext<?, ?, ?>> getUnknownStatementDefinitionOf(
- final StatementDefinitionContext<?, ?, ?> yangStmtDef) {
+ default Optional<StatementSupport<?, ?, ?>> getUnknownStatementDefinitionOf(final StatementDefinition yangStmtDef) {
return Optional.empty();
}
StatementDefinitionContext<?, ?, ?> getAsUnknownStatementDefinition(
final StatementDefinitionContext<?, ?, ?> yangStmtDef) {
- if (unknownStmtDefsOfYangStmts == null) {
+ if (unknownStmtDefsOfYangStmts != null) {
+ final StatementDefinitionContext<?, ?, ?> existing = unknownStmtDefsOfYangStmts.get(yangStmtDef);
+ if (existing != null) {
+ return existing;
+ }
+ } else {
unknownStmtDefsOfYangStmts = new HashMap<>();
}
- StatementDefinitionContext<?, ?, ?> ret = unknownStmtDefsOfYangStmts.get(yangStmtDef);
- if (ret != null) {
- return ret;
- }
-
- ret = support.getUnknownStatementDefinitionOf(yangStmtDef).orElse(null);
-
+ @SuppressWarnings("unchecked")
+ final StatementDefinitionContext<?, ?, ?> ret = support.getUnknownStatementDefinitionOf(
+ yangStmtDef.getPublicView()).map(StatementDefinitionContext::new).orElse(null);
if (ret != null) {
unknownStmtDefsOfYangStmts.put(yangStmtDef, ret);
}
import java.util.Optional;
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.stmt.UnknownStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
-import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementDefinitionContext;
/**
* StatementSupport for statements defined via YANG extensions. This is implemented by piggy-backing
@Override
public EffectiveStatement<String, UnknownStatement<String>> createEffective(
- final StmtContext<String, UnknownStatement<String>, EffectiveStatement<String, UnknownStatement<String>>> ctx) {
+ final StmtContext<String, UnknownStatement<String>,
+ EffectiveStatement<String, UnknownStatement<String>>> ctx) {
return definition.createEffective(ctx);
}
@Override
- public String parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) throws SourceException {
+ public String parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
return definition.parseArgumentValue(ctx, value);
}
}
@Override
- public Optional<StatementDefinitionContext<?, ?, ?>> getUnknownStatementDefinitionOf(
- final StatementDefinitionContext<?, ?, ?> yangStmtDef) {
+ public Optional<StatementSupport<?, ?, ?>> getUnknownStatementDefinitionOf(final StatementDefinition yangStmtDef) {
return definition.getUnknownStatementDefinitionOf(yangStmtDef);
}
}
import org.opendaylight.yangtools.yang.model.api.stmt.UnrecognizedStatement;
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.StatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementDefinitionContext;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.UnknownEffectiveStatementImpl;
public class UnknownStatementImpl extends AbstractDeclaredStatement<String> implements UnrecognizedStatement {
}
@Override
- public Optional<StatementDefinitionContext<?, ?, ?>> getUnknownStatementDefinitionOf(
- final StatementDefinitionContext<?, ?, ?> yangStmtDef) {
+ public Optional<StatementSupport<?, ?, ?>> getUnknownStatementDefinitionOf(
+ final StatementDefinition yangStmtDef) {
final QName baseQName = getStatementName();
- return Optional.of(new StatementDefinitionContext<>(
- new ModelDefinedStatementSupport(new ModelDefinedStatementDefinition(
- QName.create(baseQName, yangStmtDef.getStatementName().getLocalName()),
- yangStmtDef.hasArgument()
- ? QName.create(baseQName, yangStmtDef.getArgumentName().getLocalName()) : null,
- yangStmtDef.isArgumentYinElement()))));
+ final QName argumentName = yangStmtDef.getArgumentName();
+ return Optional.of(new ModelDefinedStatementSupport(new ModelDefinedStatementDefinition(
+ QName.create(baseQName, yangStmtDef.getStatementName().getLocalName()),
+ argumentName != null ? QName.create(baseQName, argumentName.getLocalName()) : null,
+ yangStmtDef.isArgumentYinElement())));
}
}