private static void addOrReplaceNode(final Mutable<?, ?, ?> refineSubstatementCtx, final StatementContextBase<?, ?, ?> refineTargetNodeCtx) { final StatementDefinition refineSubstatementDef = refineSubstatementCtx.getPublicDefinition(); SourceException.throwIf(!isSupportedRefineTarget(refineSubstatementCtx, refineTargetNodeCtx), refineSubstatementCtx.getStatementSourceReference(), "Error in module '%s' in the refine of uses '%s': can not perform refine of '%s' for the target '%s'.", refineSubstatementCtx.getRoot().getStatementArgument(), refineSubstatementCtx.coerceParentContext().getStatementArgument(), refineSubstatementCtx.getPublicDefinition(), refineTargetNodeCtx.getPublicDefinition()); if (isAllowedToAddByRefine(refineSubstatementDef)) { refineTargetNodeCtx.addEffectiveSubstatement(refineSubstatementCtx); } else { refineTargetNodeCtx.removeStatementFromEffectiveSubstatements(refineSubstatementDef); refineTargetNodeCtx.addEffectiveSubstatement(refineSubstatementCtx); } }
@Override public void onStatementAdded(final Mutable<String, AnnotationStatement, AnnotationEffectiveStatement> stmt) { final StatementDefinition parentDef = stmt.coerceParentContext().getPublicDefinition(); SourceException.throwIf(YangStmtMapping.MODULE != parentDef && YangStmtMapping.SUBMODULE != parentDef, stmt.getStatementSourceReference(), "Annotations may only be defined at root of either a module or a submodule"); }
@Override public void onStatementAdded(final Mutable<QName, AnyxmlStatement, AnyxmlEffectiveStatement> stmt) { stmt.coerceParentContext().addToNs(ChildSchemaNodeNamespace.class, stmt.coerceStatementArgument(), stmt); }
@Override public final void onStatementAdded(final Mutable<QName, InputStatement, EffectiveStatement<QName, InputStatement>> stmt) { stmt.coerceParentContext().addToNs(ChildSchemaNodeNamespace.class, stmt.coerceStatementArgument(), stmt); }
@Override public final void onStatementAdded( final Mutable<QName, ListStatement, EffectiveStatement<QName, ListStatement>> stmt) { stmt.coerceParentContext().addToNs(ChildSchemaNodeNamespace.class, stmt.coerceStatementArgument(), stmt); }
@Override public final void onStatementAdded( final Mutable<QName, ChoiceStatement, EffectiveStatement<QName, ChoiceStatement>> stmt) { stmt.coerceParentContext().addToNs(ChildSchemaNodeNamespace.class, stmt.coerceStatementArgument(), stmt); }
@Override public void onFullDefinitionDeclared(final Mutable<SchemaNodeIdentifier, AnyxmlSchemaLocationStatement, EffectiveStatement<SchemaNodeIdentifier, AnyxmlSchemaLocationStatement>> stmt) { super.onFullDefinitionDeclared(stmt); stmt.coerceParentContext().addToNs(AnyxmlSchemaLocationNamespace.class, ANYXML_SCHEMA_LOCATION, stmt); }
@Override public final void onStatementAdded(final Mutable<QName, OutputStatement, EffectiveStatement<QName, OutputStatement>> stmt) { stmt.coerceParentContext().addToNs(ChildSchemaNodeNamespace.class, stmt.coerceStatementArgument(), stmt); }
@Override public void onStatementAdded(final Mutable<QName, AnydataStatement, EffectiveStatement<QName, AnydataStatement>> stmt) { stmt.coerceParentContext().addToNs(ChildSchemaNodeNamespace.class, stmt.coerceStatementArgument(), stmt); }
@Override public final void onStatementAdded( final Mutable<QName, LeafListStatement, EffectiveStatement<QName, LeafListStatement>> stmt) { stmt.coerceParentContext().addToNs(ChildSchemaNodeNamespace.class, stmt.coerceStatementArgument(), stmt); }
@Override public void onFullDefinitionDeclared(final Mutable<SchemaNodeIdentifier, AnyxmlSchemaLocationStatement, EffectiveStatement<SchemaNodeIdentifier, AnyxmlSchemaLocationStatement>> stmt) { super.onFullDefinitionDeclared(stmt); stmt.coerceParentContext().addToNs(AnyxmlSchemaLocationNamespace.class, ANYXML_SCHEMA_LOCATION, stmt); }
@Override public void onStatementAdded(final Mutable<QName, LeafStatement, EffectiveStatement<QName, LeafStatement>> stmt) { stmt.coerceParentContext().addToNs(ChildSchemaNodeNamespace.class, stmt.coerceStatementArgument(), stmt); }
@Override public void onFullDefinitionDeclared(final Mutable<String, YangDataStatement, EffectiveStatement<String, YangDataStatement>> ctx) { // as per https://tools.ietf.org/html/rfc8040#section-8, // yang-data is ignored unless it appears as a top-level statement if (ctx.coerceParentContext().getParentContext() != null) { ctx.setIsSupportedToBuildEffective(false); } }
@Override public final void onStatementAdded( final Mutable<QName, ContainerStatement, EffectiveStatement<QName, ContainerStatement>> stmt) { stmt.coerceParentContext().addToNs(ChildSchemaNodeNamespace.class, stmt.coerceStatementArgument(), stmt); }
@Override public void prerequisiteFailed(final Collection<? extends Prerequisite<?>> failed) { throw new InferenceException(deviateStmtCtx.coerceParentContext().getStatementSourceReference(), "Deviation target '%s' not found.", deviationTarget); } });
@Override public final void onStatementAdded( final Mutable<QName, CaseStatement, EffectiveStatement<QName, CaseStatement>> stmt) { stmt.coerceParentContext().addToNs(ChildSchemaNodeNamespace.class, stmt.coerceStatementArgument(), stmt); }
@Override public final void onStatementAdded( final Mutable<QName, RpcStatement, EffectiveStatement<QName, RpcStatement>> stmt) { stmt.coerceParentContext().addToNs(ChildSchemaNodeNamespace.class, stmt.coerceStatementArgument(), stmt); }
@Override public final void onStatementAdded( final Mutable<QName, NotificationStatement, EffectiveStatement<QName, NotificationStatement>> stmt) { stmt.coerceParentContext().addToNs(ChildSchemaNodeNamespace.class, stmt.coerceStatementArgument(), stmt); }
@Override public void onFullDefinitionDeclared(final Mutable<String, YangDataStatement, EffectiveStatement<String, YangDataStatement>> ctx) { // as per https://tools.ietf.org/html/rfc8040#section-8, // yang-data is ignored unless it appears as a top-level statement if (ctx.coerceParentContext().getParentContext() != null) { ctx.setIsSupportedToBuildEffective(false); } }
@Override public void onStatementAdded( final StmtContext.Mutable<QName, ActionStatement, EffectiveStatement<QName, ActionStatement>> stmt) { stmt.coerceParentContext().addToNs(ChildSchemaNodeNamespace.class, stmt.coerceStatementArgument(), stmt); }