X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Fspi%2Fmeta%2FAbstractStatementSupport.java;h=d20181a021b52913d2fa9ee9616c4d2056fae041;hb=ff2e82f6d14803a316c81f0ebf980435eb330976;hp=b891518f71c3bf1c0077278964ff852559e8ac05;hpb=9e5540fb30986583d69e51f9290dbb651338f4b0;p=yangtools.git
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 b891518f71..d20181a021 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
@@ -8,11 +8,16 @@
package org.opendaylight.yangtools.yang.parser.spi.meta;
import com.google.common.base.Preconditions;
+import java.util.Optional;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import org.opendaylight.yangtools.yang.common.QName;
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.parser.spi.source.SourceException;
+import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
+import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase;
+import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementDefinitionContext;
/**
*
@@ -33,11 +38,12 @@ public abstract class AbstractStatementSupport
private final StatementDefinition type;
- protected AbstractStatementSupport(StatementDefinition publicDefinition) {
+ protected AbstractStatementSupport(final StatementDefinition publicDefinition) {
Preconditions.checkArgument(publicDefinition != this);
this.type = Preconditions.checkNotNull(publicDefinition);
}
+ @Nonnull
@Override
public final QName getStatementName() {
return type.getStatementName();
@@ -48,13 +54,15 @@ public abstract class AbstractStatementSupport
return type.getArgumentName();
}
+ @Nonnull
@Override
public final Class extends DeclaredStatement>> getDeclaredRepresentationClass() {
return type.getDeclaredRepresentationClass();
}
+ @Nonnull
@Override
- public final Class extends DeclaredStatement>> getEffectiveRepresentationClass() {
+ public final Class extends EffectiveStatement,?>> getEffectiveRepresentationClass() {
return type.getEffectiveRepresentationClass();
}
@@ -64,54 +72,94 @@ public abstract class AbstractStatementSupport
}
@Override
- public abstract A parseArgumentValue(StmtContext, ?, ?> ctx, String value) throws SourceException;
+ public Optional> beforeSubStatementCreated(final StmtContext.Mutable, ?, ?> stmt,
+ final int offset, final StatementDefinitionContext, ?, ?> def, final StatementSourceReference ref,
+ final String argument) {
+ // NOOP for most implementations and also no implicit statements
+ return Optional.empty();
+ }
@Override
- public void onStatementAdded(StmtContext.Mutable stmt) {
+ public void onStatementAdded(final StmtContext.Mutable stmt) {
// NOOP for most implementations
- };
+ }
/**
- *
* {@inheritDoc}
*
* Subclasses of this class may override this method to perform actions on
* this event or register modification action using
* {@link StmtContext.Mutable#newInferenceAction(ModelProcessingPhase)}.
- *
*/
@Override
- public void onLinkageDeclared(StmtContext.Mutable stmt) throws InferenceException, SourceException {
+ public void onPreLinkageDeclared(final StmtContext.Mutable stmt) {
// NOOP for most implementations
}
/**
- *
* {@inheritDoc}
*
* Subclasses of this class may override this method to perform actions on
* this event or register modification action using
* {@link StmtContext.Mutable#newInferenceAction(ModelProcessingPhase)}.
- *
*/
@Override
- public void onStatementDefinitionDeclared(StmtContext.Mutable stmt) throws InferenceException,
- SourceException {
+ public void onLinkageDeclared(final StmtContext.Mutable stmt) {
// NOOP for most implementations
}
/**
- *
* {@inheritDoc}
*
* Subclasses of this class may override this method to perform actions on
* this event or register modification action using
* {@link StmtContext.Mutable#newInferenceAction(ModelProcessingPhase)}.
- *
*/
@Override
- public void onFullDefinitionDeclared(StmtContext.Mutable stmt) throws InferenceException, SourceException {
+ public void onStatementDefinitionDeclared(final StmtContext.Mutable stmt) {
// NOOP for most implementations
}
+ /**
+ * {@inheritDoc}
+ *
+ * Subclasses of this class may override this method to perform actions on
+ * this event or register modification action using
+ * {@link StmtContext.Mutable#newInferenceAction(ModelProcessingPhase)}.
+ */
+ @Override
+ public void onFullDefinitionDeclared(final StmtContext.Mutable stmt) {
+ final SubstatementValidator validator = getSubstatementValidator();
+ if (validator != null) {
+ validator.validate(stmt);
+ }
+ }
+
+ @Override
+ public boolean isArgumentYinElement() {
+ return getPublicView().isArgumentYinElement();
+ }
+
+ @Override
+ public boolean hasArgumentSpecificSupports() {
+ // Most of statement supports don't have any argument specific
+ // supports, so return 'false'.
+ return false;
+ }
+
+ @Override
+ public StatementSupport, ?, ?> getSupportSpecificForArgument(final String argument) {
+ // Most of statement supports don't have any argument specific
+ // supports, so return null.
+ return null;
+ }
+
+ /**
+ * Returns corresponding substatement validator of a statement support
+ *
+ * @return substatement validator or null, if substatement validator is not
+ * defined
+ */
+ @Nullable
+ protected abstract SubstatementValidator getSubstatementValidator();
}