Eliminate superfluous onFullDefinitionDeclared overrides
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / rfc6020 / ImportStatementDefinition.java
index f72c3ebe73562456e3ae249b1ff0653e72d22c27..74fb2afd1bbaca846a058aae005f7d1a2dec2607 100644 (file)
@@ -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<String, ImportStatement, EffectiveStatement<String, ImportStatement>> {
     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<String, ImportStatement, EffectiveStatement<String, ImportStatement>> stmt) {
-        super.onFullDefinitionDeclared(stmt);
-        SUBSTATEMENT_VALIDATOR.validate(stmt);
-    }
-
     @Override
     public void onPreLinkageDeclared(final Mutable<String, ImportStatement, EffectiveStatement<String, ImportStatement>> 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<String, ImportStatement, ?> 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);
         }
     }
 }