/** * See {@link StatementSupport#getPublicView()}. */ @Override public StatementDefinition getPublicDefinition() { return definition().getPublicView(); }
StatementDefinitionContext<?, ?, ?> getAsUnknownStatementDefinition( final StatementDefinitionContext<?, ?, ?> yangStmtDef) { if (unknownStmtDefsOfYangStmts != null) { final StatementDefinitionContext<?, ?, ?> existing = unknownStmtDefsOfYangStmts.get(yangStmtDef); if (existing != null) { return existing; } } else { unknownStmtDefsOfYangStmts = new HashMap<>(); } @SuppressWarnings("unchecked") final StatementDefinitionContext<?, ?, ?> ret = support.getUnknownStatementDefinitionOf( yangStmtDef.getPublicView()).map(StatementDefinitionContext::new).orElse(null); if (ret != null) { unknownStmtDefsOfYangStmts.put(yangStmtDef, ret); } return ret; }
/** * Create a new substatement at the specified offset. * * @param offset Substatement offset * @param def definition context * @param ref source reference * @param argument statement argument * @param <X> new substatement argument type * @param <Y> new substatement declared type * @param <Z> new substatement effective type * @return A new substatement */ @SuppressWarnings("checkstyle:methodTypeParameterName") public final <X, Y extends DeclaredStatement<X>, Z extends EffectiveStatement<X, Y>> StatementContextBase<X, Y, Z> createSubstatement(final int offset, final StatementDefinitionContext<X, Y, Z> def, final StatementSourceReference ref, final String argument) { final ModelProcessingPhase inProgressPhase = getRoot().getSourceContext().getInProgressPhase(); checkState(inProgressPhase != ModelProcessingPhase.EFFECTIVE_MODEL, "Declared statement cannot be added in effective phase at: %s", getStatementSourceReference()); final Optional<StatementSupport<?, ?, ?>> implicitParent = definition.getImplicitParentFor(def.getPublicView()); if (implicitParent.isPresent()) { return createImplicitParent(offset, implicitParent.get(), ref, argument).createSubstatement(offset, def, ref, argument); } final StatementContextBase<X, Y, Z> ret = new SubstatementContext<>(this, def, ref, argument); substatements = substatements.put(offset, ret); def.onStatementAdded(ret); return ret; }