import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.findFirstDeclaredSubstatement;
import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.firstAttributeOf;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+
import java.net.URI;
import java.util.Date;
-
import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.RevisionStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.YangVersionStatement;
import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleIdentifierImpl;
import org.opendaylight.yangtools.yang.parser.spi.source.BelongsToPrefixToModuleName;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.SubmoduleEffectiveStatementImpl;
-
import com.google.common.base.Optional;
-public class SubmoduleStatementImpl extends AbstractRootStatement<SubmoduleStatement> implements SubmoduleStatement {
+public class SubmoduleStatementImpl extends
+ AbstractRootStatement<SubmoduleStatement> implements SubmoduleStatement {
- protected SubmoduleStatementImpl(StmtContext<String, SubmoduleStatement, ?> context) {
+ protected SubmoduleStatementImpl(
+ StmtContext<String, SubmoduleStatement, ?> context) {
super(context);
}
- public static class Definition extends
+ public static class Definition
+ extends
AbstractStatementSupport<String, SubmoduleStatement, EffectiveStatement<String, SubmoduleStatement>> {
public Definition() {
}
@Override
- public SubmoduleStatement createDeclared(StmtContext<String, SubmoduleStatement, ?> ctx) {
+ public SubmoduleStatement createDeclared(
+ StmtContext<String, SubmoduleStatement, ?> ctx) {
return new SubmoduleStatementImpl(ctx);
}
Mutable<String, SubmoduleStatement, EffectiveStatement<String, SubmoduleStatement>> stmt)
throws SourceException {
- Optional<Date> revisionDate = Optional.fromNullable(firstAttributeOf(stmt.declaredSubstatements(),
- RevisionStatement.class));
+ Optional<Date> revisionDate = Optional.fromNullable(Utils.getLatestRevision(stmt.declaredSubstatements()));
+ if (!revisionDate.isPresent()) {
+ revisionDate = Optional.of(SimpleDateFormatUtil.DEFAULT_DATE_REV);
+ }
- ModuleIdentifier submoduleIdentifier = new ModuleIdentifierImpl(stmt.getStatementArgument(),
- Optional.<URI> absent(), revisionDate);
+ ModuleIdentifier submoduleIdentifier = new ModuleIdentifierImpl(
+ stmt.getStatementArgument(), Optional.<URI> absent(),
+ revisionDate);
stmt.addContext(SubmoduleNamespace.class, submoduleIdentifier, stmt);
- String belongsToModuleName = firstAttributeOf(stmt.declaredSubstatements(), BelongsToStatement.class);
- StmtContext<?, ?, ?> prefixSubStmtCtx = findFirstDeclaredSubstatement(stmt, 0, BelongsToStatement.class,
- PrefixStatement.class);
+ String belongsToModuleName = firstAttributeOf(
+ stmt.declaredSubstatements(), BelongsToStatement.class);
+ StmtContext<?, ?, ?> prefixSubStmtCtx = findFirstDeclaredSubstatement(
+ stmt, 0, BelongsToStatement.class, PrefixStatement.class);
if (prefixSubStmtCtx == null) {
- throw new IllegalArgumentException("Prefix of belongsTo statement is missing in submodule ["
- + stmt.getStatementArgument() + "].");
+ throw new IllegalArgumentException(
+ "Prefix of belongsTo statement is missing in submodule ["
+ + stmt.getStatementArgument() + "].");
}
String prefix = (String) prefixSubStmtCtx.getStatementArgument();
- stmt.addToNs(BelongsToPrefixToModuleName.class, prefix, belongsToModuleName);
+ stmt.addToNs(BelongsToPrefixToModuleName.class, prefix,
+ belongsToModuleName);
}
}