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%2Fstmt%2Frfc6020%2FImportStatementDefinition.java;h=74fb2afd1bbaca846a058aae005f7d1a2dec2607;hb=cde047f709ab56c39012678faba8b56da458d05b;hp=f72c3ebe73562456e3ae249b1ff0653e72d22c27;hpb=701cd406113d239acfeacbc7ffbb99cbe1775a7f;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ImportStatementDefinition.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ImportStatementDefinition.java index f72c3ebe73..74fb2afd1b 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ImportStatementDefinition.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ImportStatementDefinition.java @@ -11,7 +11,6 @@ import static org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPha import static org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase.SOURCE_PRE_LINKAGE; import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.firstAttributeOf; -import com.google.common.base.Optional; import com.google.common.base.Verify; import java.net.URI; import java.util.Collection; @@ -19,18 +18,19 @@ import java.util.Date; import java.util.Map; import java.util.Map.Entry; import java.util.NavigableMap; +import java.util.Optional; import org.opendaylight.yangtools.concepts.SemVer; import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier; -import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping; +import org.opendaylight.yangtools.yang.model.api.YangStmtMapping; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ImportStatement; 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.RevisionDateStatement; -import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleIdentifierImpl; +import org.opendaylight.yangtools.yang.model.util.ModuleIdentifierImpl; import org.opendaylight.yangtools.yang.parser.spi.ModuleNamespace; import org.opendaylight.yangtools.yang.parser.spi.PreLinkageModuleNamespace; import org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator; @@ -49,19 +49,20 @@ import org.opendaylight.yangtools.yang.parser.spi.source.ImpPrefixToSemVerModule import org.opendaylight.yangtools.yang.parser.spi.source.ImportedModuleContext; import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleIdentifier; import org.opendaylight.yangtools.yang.parser.spi.source.ModuleNameToNamespace; +import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ImportEffectiveStatementImpl; public class ImportStatementDefinition extends AbstractStatementSupport> { private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator - .builder(Rfc6020Mapping.IMPORT) - .addMandatory(Rfc6020Mapping.PREFIX) - .addOptional(Rfc6020Mapping.REVISION_DATE) + .builder(YangStmtMapping.IMPORT) + .addMandatory(YangStmtMapping.PREFIX) + .addOptional(YangStmtMapping.REVISION_DATE) .addOptional(SupportedExtensionsMapping.SEMANTIC_VERSION) .build(); public ImportStatementDefinition() { - super(Rfc6020Mapping.IMPORT); + super(YangStmtMapping.IMPORT); } @Override @@ -80,13 +81,6 @@ public class ImportStatementDefinition extends return new ImportEffectiveStatementImpl(ctx); } - @Override - public void onFullDefinitionDeclared( - final Mutable> stmt) { - super.onFullDefinitionDeclared(stmt); - SUBSTATEMENT_VALIDATOR.validate(stmt); - } - @Override public void onPreLinkageDeclared(final Mutable> stmt) { final String moduleName = stmt.getStatementArgument(); @@ -104,8 +98,10 @@ public class ImportStatementDefinition extends final URI importedModuleNamespace = importedModuleContext.getFromNamespace(ModuleNameToNamespace.class, moduleName); Verify.verifyNotNull(importedModuleNamespace); - final String impPrefix = firstAttributeOf(stmt.declaredSubstatements(), PrefixStatement.class); - Verify.verifyNotNull(impPrefix); + final String impPrefix = SourceException.throwIfNull( + firstAttributeOf(stmt.declaredSubstatements(), PrefixStatement.class), + stmt.getStatementSourceReference(), "Missing prefix statement"); + stmt.addToNs(ImpPrefixToNamespace.class, impPrefix, importedModuleNamespace); } @@ -127,6 +123,11 @@ public class ImportStatementDefinition extends } } + @Override + protected SubstatementValidator getSubstatementValidator() { + return SUBSTATEMENT_VALIDATOR; + } + private static class RevisionImport { private RevisionImport() { @@ -207,8 +208,7 @@ public class ImportStatementDefinition extends revision = SimpleDateFormatUtil.DEFAULT_DATE_IMP; } - return new ModuleIdentifierImpl(stmt.getStatementArgument(), Optional.absent(), - Optional.of(revision)); + return ModuleIdentifierImpl.create(stmt.getStatementArgument(), Optional.empty(), Optional.of(revision)); } } @@ -292,14 +292,15 @@ public class ImportStatementDefinition extends } private static ModuleIdentifier getImportedModuleIdentifier(final Mutable impStmt) { - return new ModuleIdentifierImpl(impStmt.getStatementArgument(), Optional.absent(), + return ModuleIdentifierImpl.create(impStmt.getStatementArgument(), Optional.empty(), Optional.of(SimpleDateFormatUtil.DEFAULT_DATE_IMP)); } private static ModuleIdentifier createSemVerModuleIdentifier(final ModuleIdentifier importedModuleIdentifier, final SemVer semVer) { - return new ModuleIdentifierImpl(importedModuleIdentifier.getName(), Optional.fromNullable(importedModuleIdentifier - .getNamespace()), Optional.of(importedModuleIdentifier.getRevision()), semVer); + return ModuleIdentifierImpl.create(importedModuleIdentifier.getName(), + Optional.ofNullable(importedModuleIdentifier.getNamespace()), + Optional.of(importedModuleIdentifier.getRevision()), semVer); } } }