Interface StatementStreamSource

All Superinterfaces:
Identifiable<SourceIdentifier>
All Known Implementing Classes:
YangStatementStreamSource, YinStatementStreamSource

public interface StatementStreamSource extends Identifiable<SourceIdentifier>
Statement stream source, which is used for inference of effective model.

Statement stream source is required to emit its statements using supplied StatementWriter.

Since YANG allows language extensions defined in sources (which defines how source is serialized), instances of extensions present anywhere and forward references, each source needs to be processed in three steps, where each step uses different set of supported statements.

Steps (in order of invocation) are:

  1. writePreLinkage(StatementWriter, QNameToStatementDefinition) - Source MUST emit only statements related in pre-linkage, which are present in supplied statement definition map. This step is used as preparatory cross-source relationship resolution phase which collects available module names and namespaces. It is necessary in order to correct resolution of unknown statements used by linkage phase (e.g. semantic version of yang modules).
  2. writeLinkage(StatementWriter, QNameToStatementDefinition, PrefixResolver, YangVersion) - Source MUST emit only statements related in linkage, which are present in supplied statement definition map. This step is used to build cross-source linkage and visibility relationship, and to determine XMl namespaces and prefixes.
  3. writeLinkageAndStatementDefinitions(StatementWriter, QNameToStatementDefinition, PrefixResolver, YangVersion) - Source MUST emit only statements related to linkage and language extensions definitions, which are present in supplied statement definition map. This step is used to build statement definitions in order to fully processed source.
  4. writeFull(StatementWriter, QNameToStatementDefinition, PrefixResolver, YangVersion) - Source MUST emit all statements present in source. This step is used to build full declared statement model of source.
  • Method Details

    • writePreLinkage

      void writePreLinkage(StatementWriter writer, QNameToStatementDefinition stmtDef)
      Emits only pre-linkage-related statements to supplied writer.
      Parameters:
      writer - StatementWriter which should be used to emit statements.
      stmtDef - Map of available statement definitions. Only these statements may be written to statement writer, source MUST ignore and MUST NOT emit any other statements.
      Throws:
      SourceException - If source was is not valid, or provided statement writer failed to write statements.
    • writeLinkage

      void writeLinkage(StatementWriter writer, QNameToStatementDefinition stmtDef, PrefixResolver preLinkagePrefixes, YangVersion yangVersion)
      Emits only linkage-related statements to supplied writer based on specified YANG version. Default implementation does not make any differences between versions.
      Parameters:
      writer - StatementWriter which should be used to emit statements.
      stmtDef - Map of available statement definitions. Only these statements may be written to statement writer, source MUST ignore and MUST NOT emit any other statements.
      preLinkagePrefixes - Pre-linkage map of source-specific prefixes to namespaces
      yangVersion - yang version.
      Throws:
      SourceException - If source was is not valid, or provided statement writer failed to write statements.
    • writeLinkageAndStatementDefinitions

      void writeLinkageAndStatementDefinitions(StatementWriter writer, QNameToStatementDefinition stmtDef, PrefixResolver prefixes, YangVersion yangVersion)
      Emits only linkage and language extension statements to supplied writer based on specified YANG version. Default implementation does not make any differences between versions.
      Parameters:
      writer - StatementWriter which should be used to emit statements.
      stmtDef - Map of available statement definitions. Only these statements may be written to statement writer, source MUST ignore and MUST NOT emit any other statements.
      prefixes - Map of source-specific prefixes to namespaces
      yangVersion - YANG version.
      Throws:
      SourceException - If source was is not valid, or provided statement writer failed to write statements.
    • writeFull

      void writeFull(StatementWriter writer, QNameToStatementDefinition stmtDef, PrefixResolver prefixes, YangVersion yangVersion)
      Emits every statements present in this statement source to supplied writer based on specified yang version. Default implementation does not make any differences between versions.
      Parameters:
      writer - StatementWriter which should be used to emit statements.
      stmtDef - Map of available statement definitions.
      prefixes - Map of source-specific prefixes to namespaces
      yangVersion - yang version.
      Throws:
      SourceException - If source was is not valid, or provided statement writer failed to write statements.