- final StmtContext<QName, ?, ?> baseStmt = StmtContextUtils.findFirstDeclaredSubstatement(stmt,
- BaseStatement.class);
- Preconditions.checkArgument(baseStmt != null, "The \"base\" statement, which is a substatement to the " +
- "\"type\"\n statement, MUST be present if the type is \"identityref\" in source '%s'", stmt
- .getStatementSourceReference());
- final QName baseIdentity = baseStmt.getStatementArgument();
- final StmtContext<?, IdentityStatement, EffectiveStatement<QName, IdentityStatement>> stmtCtx = stmt
- .getFromNamespace(IdentityNamespace.class, baseIdentity);
- Preconditions.checkArgument(stmtCtx != null, "Referenced base identity '%s' doesn't exist " +
- "in " + "given scope " + "(module, imported submodules), source: '%s'", baseIdentity
- .getLocalName(), stmt.getStatementSourceReference());
+ super.onFullDefinitionDeclared(stmt);
+
+ final Collection<StmtContext<QName, BaseStatement, ?>> baseStatements =
+ StmtContextUtils.<QName, BaseStatement>findAllDeclaredSubstatements(stmt, BaseStatement.class);
+ for (StmtContext<QName, BaseStatement, ?> baseStmt : baseStatements) {
+ final QName baseIdentity = baseStmt.getStatementArgument();
+ final StmtContext<?, ?, ?> stmtCtx = stmt.getFromNamespace(IdentityNamespace.class, baseIdentity);
+ InferenceException.throwIfNull(stmtCtx, stmt.getStatementSourceReference(),
+ "Referenced base identity '%s' doesn't exist in given scope (module, imported modules, submodules)",
+ baseIdentity.getLocalName());
+ }