Clean up code and activate enforcement.
Change-Id: I66669e0ff80aefa6f3b187337d84efe73b10b320
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
</dependency>
</dependencies>
- <!--
- Maven Site Configuration
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-checkstyle-plugin</artifactId>
+ <configuration>
+ <propertyExpansion>checkstyle.violationSeverity=error</propertyExpansion>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
- The following configuration is necessary for maven-site-plugin to
- correctly identify the correct deployment path for OpenDaylight Maven
- sites.
- -->
- <url>${odl.site.url}/${project.groupId}/${stream}/${project.artifactId}/</url>
+ <!--
+ Maven Site Configuration
- <distributionManagement>
- <site>
- <id>opendaylight-site</id>
- <url>${nexus.site.url}/${project.artifactId}/</url>
- </site>
- </distributionManagement>
+ The following configuration is necessary for maven-site-plugin to
+ correctly identify the correct deployment path for OpenDaylight Maven
+ sites.
+ -->
+ <url>${odl.site.url}/${project.groupId}/${stream}/${project.artifactId}/</url>
+
+ <distributionManagement>
+ <site>
+ <id>opendaylight-site</id>
+ <url>${nexus.site.url}/${project.artifactId}/</url>
+ </site>
+ </distributionManagement>
</project>
}
@Override
+ @SuppressWarnings("checkstyle:equalsHashCode")
public boolean equals(final Object obj) {
if (!super.equals(obj)) {
return false;
}
@Override
+ @SuppressWarnings("checkstyle:equalsHashCode")
public boolean equals(final Object obj) {
if (!super.equals(obj)) {
return false;
</dependency>
</dependencies>
- <!--
- Maven Site Configuration
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-checkstyle-plugin</artifactId>
+ <configuration>
+ <propertyExpansion>checkstyle.violationSeverity=error</propertyExpansion>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
- The following configuration is necessary for maven-site-plugin to
- correctly identify the correct deployment path for OpenDaylight Maven
- sites.
- -->
- <url>${odl.site.url}/${project.groupId}/${stream}/${project.artifactId}/</url>
+ <!--
+ Maven Site Configuration
+
+ The following configuration is necessary for maven-site-plugin to
+ correctly identify the correct deployment path for OpenDaylight Maven
+ sites.
+ -->
+ <url>${odl.site.url}/${project.groupId}/${stream}/${project.artifactId}/</url>
<distributionManagement>
<site>
package org.opendaylight.yangtools.yang.model.api;
import com.google.common.annotations.Beta;
-import java.util.Set;
/**
- * Represents YANG action statement
+ * Represents YANG action statement.
*
+ * <p>
* The "action" statement is used to define an operation connected to a
* specific container or list data node. It takes one argument, which
* is an identifier, followed by a block of substatements that holds
import java.util.Set;
/**
- * Node which can contain action nodes
+ * Node which can contain action nodes.
*/
@Beta
public interface ActionNodeContainer {
-
/**
* All implementations should override this method.
* The default definition of this method is used in YANG 1.0 (RFC6020) implementations of
* which do not allow action statements.
* These YANG statements have been changed in YANG 1.1 (RFC7950) and can now contain action statements.
*
+ * <p>
* The default definition is also used by implementations of ContainerSchemaNode which do not support
* action statements such as InputEffectiveStatementImpl, OutputEffectiveStatementImpl and SchemaContext.
*
* It takes one argument, which is an identifier, followed by a block of
* substatements that holds detailed anydata information.
*
+ * <p>
* The "anydata" statement is used to represent an unknown set of nodes
* that can be modeled with YANG, except anyxml, but for which the data
* model is not known at module design time. It is possible, though not
*/
@Beta
public interface AnyDataSchemaNode extends DataSchemaNode {
-
/**
+ * Schema of XML data.
+ *
* @return schema of contained XML data or null if it is not provided
*/
@Nullable ContainerSchemaNode getSchemaOfAnyData();
* from a grouping in a "uses" statement.
*/
public interface AugmentationSchema extends DataNodeContainer, NotificationNodeContainer, ActionNodeContainer {
-
/**
- * Returns when statement
+ * Returns when statement.
*
+ * <p>
* If when condition is present node defined by the parent data definition
* statement is only valid when the returned XPath
* expression conceptually evaluates to "true"
RevisionAwareXPath getWhenCondition();
/**
+ * Returns description text.
+ *
* @return textual description of this augment.
*/
String getDescription();
/**
+ * Returns reference text.
+ *
* @return textual cross-reference to an external document that provides
* additional information relevant to this node.
*/
String getReference();
/**
+ * Returns status of this node.
+ *
* @return actual status of this node.
*/
Status getStatus();
/**
+ * Returns augmentation schema path.
+ *
* @return SchemaPath that identifies a node in the schema tree. This node
* is called the augment's target node. The target node MUST be
* either a container, list, choice, case, input, output, or
SchemaPath getTargetPath();
/**
+ * Returns unknown schema node children.
+ *
* @return collection of all unknown nodes defined in this augmentation
*/
List<UnknownSchemaNode> getUnknownSchemaNodes();
* input, output, or notification node.
*/
public interface AugmentationTarget {
-
/**
+ * Returns augmentations targeting this element.
+ *
* @return set of augmentations targeting this element.
*/
Set<AugmentationSchema> getAvailableAugmentations();
-
}
Set<ChoiceCaseNode> getCases();
/**
- *
* Returns the concrete case according to specified Q name.
*
* @param name
ChoiceCaseNode getCaseNodeByName(String name);
/**
- *
- * Returns name of case which is in the choice specified as default
+ * Returns name of case which is in the choice specified as default.
*
* @return string with the name of case which is specified in the argument
* of the YANG <code>default</code> substatement of
* Specifies the rules which the node which contains <code>must</code> YANG
* substatement has to match.
*
- *
* @return set of <code>MustDefinition</code> (XPath) instances which
* represents the concrete data constraints
*/
* Expreses if the presence of the data element for which this constraint is
* specified is|isn't required.
*
+ * <p>
* Contains the value of the <b>mandatory</b> YANG substatement.
- *
* It is used with YANG statements leaf, choice, anyxml, deviate.
*
* @return boolean value:
* Returns the minimum required number of data elements for node where this
* constraint is specified.
*
+ * <p>
* The returning value equals to value of the argument of the
* <b>min-elements</b> YANG substatement.
- *
* It is used with YANG statements leaf-list, list, deviate.
*
* @return integer with minimal number of elements, or null if no minimum is defined
* Returns the maximum admissible number of data elements for node where
* this constraint is specified.
*
+ * <p>
* The returning value equals to value of the argument of the
* <b>max-elements</b> YANG substatement.
- *
* It is used with YANG statements leaf-list, list, deviate.
*
* @return integer with maximum number of elements, or null if no maximum is defined
*/
public interface ContainerSchemaNode extends DataNodeContainer,
AugmentationTarget, DataSchemaNode, NotificationNodeContainer, ActionNodeContainer {
-
/**
+ * Returns true if this container is marked as presence.
+ *
* @return true, if presence of this container has an explicit meaning,
* false otherwise
*/
Set<GroupingDefinition> getGroupings();
/**
+ * Returns the child node corresponding to the specified name.
+ *
* @param name
- * QName of seeked child
+ * QName of child
* @return child node of this DataNodeContainer if child with given name is
* present, null otherwise
*/
DataSchemaNode getDataChildByName(QName name);
/**
+ * Returns grouping nodes used ny this container.
+ *
* @return Set of all uses nodes defined within this DataNodeContainer
*/
Set<UsesNode> getUses();
package org.opendaylight.yangtools.yang.model.api;
/**
- *
* Data Schema Node represents abstract supertype from which all data tree
* definitions are derived.
*
+ * <p>
* Contains the method which are used for getting metadata from the schema nodes
* which contains data.
*
* @see LeafSchemaNode
* @see AnyXmlSchemaNode
* @see AnyDataSchemaNode
- *
- *
*/
public interface DataSchemaNode extends SchemaNode {
-
/**
* Returns <code>true</code> if the data node was added by augmentation,
- * otherwise returns <code>false</code>
+ * otherwise returns <code>false</code>.
*
* @return <code>true</code> if the data node was added by augmentation,
* otherwise returns <code>false</code>
/**
* Returns <code>true</code> if the data node was added by uses statement,
- * otherwise returns <code>false</code>
+ * otherwise returns <code>false</code>.
*
* @return <code>true</code> if the data node was added by uses statement,
* otherwise returns <code>false</code>
/**
* Returns <code>true</code> if the data represents configuration data,
- * otherwise returns <code>false</code>
+ * otherwise returns <code>false</code>.
*
* @return <code>true</code> if the data represents configuration data,
* otherwise returns <code>false</code>
boolean isConfiguration();
/**
- * Returns the constraints associated with Data Schema Node
+ * Returns the constraints associated with Data Schema Node.
*
* @return the constraints associated with Data Schema Node
*/
import java.util.Set;
/**
- * Interface describing YANG 'deviate' statement
+ * Interface describing YANG 'deviate' statement.
*
+ * <p>
* The 'deviate' statement defines how the device's implementation of
* the target node deviates from its original definition.
* The argument is one of the strings "not-supported", "add", "replace", or "delete".
*/
@Beta
public interface DeviateDefinition {
-
/**
+ * Return deviation kind.
*
* @return enum which describes the type of this deviate statement
*/
DeviateKind getDeviateType();
/**
+ * Returns deviated config value.
*
* @return value of the deviated config statement or null if it is not deviated
*/
Boolean getDeviatedConfig();
/**
+ * Returns deviated default value.
*
* @return value of the deviated default statement or null if it is not deviated
*/
String getDeviatedDefault();
/**
+ * Returns deviated mandatory value.
*
* @return value of the deviated mandatory statement or null if it is not deviated
*/
Boolean getDeviatedMandatory();
/**
+ * Returns deviated max-elements.
*
* @return value of the deviated max-elements statement or null if it is not deviated
*/
Integer getDeviatedMaxElements();
/**
+ * Returns deviated min-elements.
*
* @return value of the deviated min-elements statement or null if it is not deviated
*/
Integer getDeviatedMinElements();
/**
+ * Returns deviated must statements.
*
* @return set of the deviated must statements
*/
Set<MustDefinition> getDeviatedMusts();
/**
+ * Returns deviated type statement.
*
* @return deviated type statement or null if it is not deviated
*/
TypeDefinition<?> getDeviatedType();
/**
+ * Returns deviated unique statements.
*
* @return collection of the deviated unique statements
*/
Collection<UniqueConstraint> getDeviatedUniques();
/**
+ * Returns deviated units statement.
*
* @return value of the deviated units statement or null if it is not deviated
*/
}
/**
+ * Returns the YANG keyword corresponding to this object.
+ *
* @return String that corresponds to the yang keyword.
*/
public String getKeyword() {
/**
* Interface describing YANG 'deviation' statement.
+ *
* <p>
* The 'deviation' statement defines a hierarchy of a module that the device
* does not implement faithfully. Deviations define the way a device deviate
* from a standard.
- * </p>
*/
public interface Deviation {
/**
+ * Returns target schema path.
+ *
* @return SchemaPath that identifies the node in the schema tree where a
* deviation from the module occurs.
*/
SchemaPath getTargetPath();
/**
+ * Returns deviate children.
*
* @return List of all deviate statements defined in this deviation
*/
List<DeviateDefinition> getDeviates();
/**
+ * Returns the description text.
*
* @return textual description of this deviation
*/
String getDescription();
/**
+ * Returns reference.
+ *
* @return textual cross-reference to an external document that provides
* additional information relevant to this node.
*/
String getReference();
/**
+ * Returns unknown schema node children.
+ *
* @return collection of all unknown nodes defined under this schema node.
*/
List<UnknownSchemaNode> getUnknownSchemaNodes();
* Node which can have documentation assigned.
*/
public interface DocumentedNode {
-
/**
* All implementations should override this method.
* The default definition of this method is used only in YANG 1.0 (RFC6020) implementations of
}
interface WithStatus extends DocumentedNode {
-
/**
- * Returns status of the instance of the type <code>SchemaNode</code>
+ * Returns status of the instance of the type <code>SchemaNode</code>.
*
* @return status of this node which represents the argument of the YANG
* <code>status</code> substatement
package org.opendaylight.yangtools.yang.model.api;
/**
- *
* Contains the methods for getting the data which are part of the YANG
* <code>extensoion</code> statement.
- *
*/
public interface ExtensionDefinition extends SchemaNode {
-
/**
* Returns the <code>String</code> that is the name of argument to the
* Keyword. If no argument statement is present the method will return
* yin-element statement the return value is by default set to
* <code>false</code>
*
- * <br>
- * <br>
+ * <p>
* For more specific definition please look into <a
* href="https://tools.ietf.org/html/rfc6020#section-7.17.2.2">[RFC-6020]
* The yin-element Statement</a>
/**
* Interface describing YANG 'grouping' statement.
+ *
* <p>
* It is used to define a reusable block of nodes, which may be used locally in
- * the module, in modules that include it, and by other modules that import from
- * it.
- * </p>
+ * the module, in modules that include it, and by other modules that import from it.
*/
-public interface GroupingDefinition extends DataNodeContainer, SchemaNode, NotificationNodeContainer, ActionNodeContainer {
-
+public interface GroupingDefinition extends DataNodeContainer, SchemaNode, NotificationNodeContainer,
+ ActionNodeContainer {
/**
* Returns <code>true</code> if the data node was added by uses statement,
- * otherwise returns <code>false</code>
+ * otherwise returns <code>false</code>.
*
* @return <code>true</code> if the data node was added by uses statement,
* otherwise returns <code>false</code>
*/
boolean isAddedByUses();
-
}
/**
* Interface describing YANG 'identity' statement.
+ *
* <p>
* The 'identity' statement is used to define a new globally unique, abstract,
* and untyped identity. Its only purpose is to denote its name, semantics, and
* existence. The built-in datatype "identityref" can be used to reference
* identities within a data model.
- * </p>
*/
public interface IdentitySchemaNode extends SchemaNode {
-
/**
- * @deprecated use {@link #getBaseIdentities()} instead
+ * Return the base identity.
+ * @deprecated use {@link #getBaseIdentities()} instead.
*
* @return an existing identity, from which the new identity is derived or
* null, if the identity is defined from scratch.
*/
public interface ListSchemaNode extends DataNodeContainer, AugmentationTarget, DataSchemaNode,
NotificationNodeContainer, ActionNodeContainer {
-
/**
+ * Returns the list of leaf identifiers.
+ *
* @return List of QNames of leaf identifiers of this list
*/
List<QName> getKeyDefinition();
boolean isUserOrdered();
/**
+ * Returns unique constraints.
+ *
* @return Collection of unique constraints of this list schema node
*/
@Nonnull
{@link #getDescription() <b><font color="#b8860b">description</font></b>} "description test";<br>
{@link #getReference() <b><font color="#008b8b">reference</font></b>} "reference test";<br><br>
- {@link #getOrganization() <b><font color="#606060">organization</font></b>} "John Doe, john.doe@email.com";<br>
- {@link #getContact() <b><font color="#FF9900">contact</font></b>} "http://www.opendaylight.org/";<br><br>
+ {@link #getOrganization() <b><font color="#606060">organization</font></b>}
+ "John Doe, john.doe@email.com";<br>
+ {@link #getContact() <b><font color="#FF9900">contact</font></b>} "http://www.opendaylight.org/";<br>
+ <br>
{@link #getFeatures() <b><font color="#8b0000">feature</font></b>} feature-test{<br>
description "description of some feature";<br>
SemVer DEFAULT_SEMANTIC_VERSION = SemVer.create(0, 0, 0);
/**
- * Returns the prefix of the module
+ * Returns the prefix of the module.
*
* @return string with the module prefix which is specified as argument of
* YANG {@link Module <b><font color="#0000FF">prefix</font></b>}
String getPrefix();
/**
- * Returns the YANG version.
- *
- * Default value is 1.
+ * Returns the YANG version. Default value is 1.
*
* @return string with the module YANG version which is specified as
* argument of YANG {@link Module <b> <font
/**
* Returns the module contact.
*
+ * <p>
* The contact represents the person or persons to whom technical queries
* concerning this module should be sent, such as their name, postal
* address, telephone number, and electronic mail address.
* Returns <code>FeatureDefinition</code> instances which contain data from
* <b>feature</b> statements defined in the module.
*
+ * <p>
* The feature is used to define a mechanism by which portions of the schema
* are marked as conditional.
*
* Get YANG source.
*
* @return YANG text of this module, or null if the source is not available.
- * @deprecated Use {@link org.opendaylight.yangtools.yang.model.repo.api.SchemaRepository#getSchemaSource(org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier, Class)}
- * instead.
+ * @deprecated Use {@link org.opendaylight.yangtools.yang.model.repo.api.SchemaRepository#getSchemaSource(
+ * org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier, Class)} instead.
*/
@Deprecated
@Nullable String getSource();
/**
* Returns the name of the module which is specified as argument of YANG
- * {@link Module <b><font color="#FF0000">module</font></b>} keyword
+ * {@link Module <b><font color="#FF0000">module</font></b>} keyword.
*
* @return string with the name of the module
*/
/**
* Returns the semantic version of yang module.
*
+ * <p>
* If the semantic version is not specified, default semantic version of
* module is returned.
*
/**
* Interface describing YANG 'import' statement.
+ *
* <p>
* The import statement makes definitions from one module available inside
* another module or submodule.
- * </p>
*/
public interface ModuleImport extends DocumentedNode {
-
/**
+ * Returns the name of the module to import.
+ *
* @return Name of the module to import
*/
String getModuleName();
/**
+ * Returns the module revision to import. May be null.
+ *
* @return Revision of module to import
*/
Date getRevision();
/**
+ * Returns the semantic version to import.
+ *
* @return Semantic version of module to import
*/
default SemVer getSemanticVersion() {
}
/**
+ * Returns the prefix associated with the imported module.
+ *
* @return Prefix used to point to imported module
*/
String getPrefix();
package org.opendaylight.yangtools.yang.model.api;
/**
- *
* Contains methods for accessing constraint declaration for valid data in form
* of XPath expressions.<br>
* <br>
public interface NamespaceRevisionAware {
URI getNamespace();
+
Date getRevision();
}
* which do not allow notification statements.
* These YANG statements have been changed in YANG 1.1 (RFC7950) and can now contain notification statements.
*
+ * <p>
* The default definition is also used by implementations of ContainerSchemaNode which do not support
* notification statements such as InputEffectiveStatementImpl and OutputEffectiveStatementImpl.
*
import java.util.Set;
/**
- * Common interface for an operation
+ * Common interface for an operation.
*/
@Beta
public interface OperationDefinition extends SchemaNode {
-
/**
+ * Returns the set of type definitions declared under this operation.
+ *
* @return Set of type definitions declared under this operation.
*/
Set<TypeDefinition<?>> getTypeDefinitions();
/**
+ * Returns the set of grouping statements declared under this operation.
+ *
* @return Set of grouping statements declared under this operation.
*/
Set<GroupingDefinition> getGroupings();
/**
+ * Returns definition of input parameters for this operation.
+ *
* @return Definition of input parameters for this operation.
* The substatements of input define nodes under the operation's input node.
*/
ContainerSchemaNode getInput();
/**
+ * Returns definition of output parameters for this operation.
+ *
* @return Definition of output parameters for this operation. The
* substatements of output define nodes under the operation's output node.
*/
/**
* Returns extencion definition instances which are defined as the direct
- * subelements in all YANG modules in the context
+ * subelements in all YANG modules in the context.
*
* @return set of <code>ExtensionDefinition</code> instances which
* represents nodes defined via <code>extension</code> YANG keyword
Module findModuleByName(final String name, final Date revision);
/**
- *
* Returns module instance (from the context) with concrete namespace.
*
* @param namespace
* Returns module instance based on given namespace and revision. If
* revision is not specified, returns module with newest revision.
*
- * @param namespace
- * @param revision
+ * @param namespace Module namespace, may be null
+ * @param revision Module revision, may be null
* @return Matching module or null if a match is not found
*/
default Module findModuleByNamespaceAndRevision(final URI namespace, final Date revision) {
/**
* Get yang source code represented as string for matching
* {@link org.opendaylight.yangtools.yang.model.api.ModuleIdentifier}.
+ *
* @param moduleIdentifier must provide a non-null
- * {@link org.opendaylight.yangtools.yang.model.api.ModuleIdentifier#getName()},
- * other methods might return null.
+ * {@link org.opendaylight.yangtools.yang.model.api.ModuleIdentifier#getName()}, other methods might return
+ * null.
* @return value iif matching module is found in schema context.
*/
Optional<String> getModuleSource(ModuleIdentifier moduleIdentifier);
* Get all module and submodule identifiers.
*/
Set<ModuleIdentifier> getAllModuleIdentifiers();
-
}
this.parent = parent;
this.qname = qname;
- int h = Objects.hashCode(parent);
+ int tmp = Objects.hashCode(parent);
if (qname != null) {
- h = h * 31 + qname.hashCode();
+ tmp = tmp * 31 + qname.hashCode();
}
- hash = h;
+ hash = tmp;
}
private ImmutableList<QName> getLegacyPath() {
package org.opendaylight.yangtools.yang.model.api;
/**
+ * Allows access to module source.
+ *
* @deprecated This interface is a violation of the effective model contract. To look up the source of a particular
* module use a {@link org.opendaylight.yangtools.yang.model.repo.api.SchemaRepository} or a similar
* lookup table.
package org.opendaylight.yangtools.yang.model.api;
/**
- *
* YANG statement <code>typedef</code> contains also substatements
* <ul>
* <li><code>default</code> - default value which is compatible with
* is included in the instance of this type
*/
public interface TypeDefinition<T extends TypeDefinition<?>> extends SchemaNode {
-
/**
* Returns the base type from which this type is derived. If this is yang
* built-in type, returns null.
/**
* Interface describing YANG 'unique' constraint.
*
+ * <p>
* The 'unique' constraint specifies that the combined values of all the leaf
* instances specified in the argument string, including leafs with default
* values, MUST be unique within all list entry instances in which all
import org.opendaylight.yangtools.yang.common.QName;
/**
- *
* Contains the methods for getting the details about the unknown node.
- *
*/
public interface UnknownSchemaNode extends SchemaNode {
-
/**
* Returns QName instance with the name of the unknown node.
*
String getNodeParameter();
/**
- *
* Describes whether the node was added through <code>uses</code> YANG
* keyword.
*
boolean isAddedByUses();
/**
- *
* Describes whether the node was added through <code>augment</code> YANG
* statement.
*
boolean isAddedByAugmentation();
/**
- * Get extension definition which identifies this node
+ * Get extension definition which identifies this node.
*
* @return extension definition if exists, null otherwise
*/
ExtensionDefinition getExtensionDefinition();
-
}
@Nonnull SchemaPath getGroupingPath();
/**
- *
* Returns augmentations which were specified in this uses node.
*
* @return Set of augment statements defined under this uses node
/**
* Returns <code>true</code> if the data node was added by augmentation,
- * otherwise returns <code>false</code>
+ * otherwise returns <code>false</code>.
*
* @return <code>true</code> if the data node was added by augmentation,
* otherwise returns <code>false</code>
/**
* Returns <code>true</code> if the data node was added by uses statement,
- * otherwise returns <code>false</code>
+ * otherwise returns <code>false</code>.
*
* @return <code>true</code> if the data node was added by uses statement,
* otherwise returns <code>false</code>
@Nonnull Map<SchemaPath, SchemaNode> getRefines();
/**
- * Returns when statement
+ * Returns when statement.
*
+ * <p>
* If when condition is present node defined by the parent data definition
* statement is only valid when the returned XPath expression conceptually
* evaluates to "true" for a particular instance, then the node defined by
* This interface was modeled according to definition in <a
* href="https://tools.ietf.org/html/rfc6020#section-7.10">[RFC-6020] The anyxml
* Statement</a>
- *
- *
*/
@Beta
public interface YangModeledAnyXmlSchemaNode extends AnyXmlSchemaNode {
/**
+ * Returns the root schema node of the data in this anyxml node.
+ *
* @return DataSchemaNode - schema of contained XML data
*/
@Nonnull
import javax.annotation.Nullable;
/**
- * Represents declared statement
+ * Represents declared statement.
*
* @param <A> Argument type ({@link Void} if statement does not have argument.)
*/
S getDeclared();
/**
- * Returns value associated with supplied identifier
+ * Returns value associated with supplied identifier.
*
* @param <K>
* Identifier type
*/
public interface IdentifierNamespace<K,V> {
/**
- * Returns value associated with supplied identifier
+ * Returns value associated with supplied identifier.
*
* @param identifier Identifier of value
* @return value or null, if identifier is not present in namespace.
import javax.annotation.Nullable;
/**
- * Model statement
- *
- * There are two base types of model statements:
+ * Model statement. There are two base types of model statements:
* <ul>
* <li>{@link DeclaredStatement} - Statement representation as was defined in original
* source. This representation could be used during computation of effective model
@Nonnull StatementDefinition statementDefinition();
/**
- * Returns statement argument
+ * Returns statement argument.
*
* @return statement argument or null if statement does not have argument.
*/
import org.opendaylight.yangtools.yang.common.QName;
/**
- * Definition / model of YANG {@link DeclaredStatement} and
- * {@link EffectiveStatement}.
+ * Definition / model of YANG {@link DeclaredStatement} and {@link EffectiveStatement}.
*
+ * <p>
* Statement concept is defined in RFC6020 section 6.3: <blockquote> A YANG
* module contains a sequence of statements. Each statement starts with a
* keyword, followed by zero or one argument </blockquote>
*
+ * <p>
* Source: <a href="https://tools.ietf.org/html/rfc6020#section-6.3"> </a>
*/
public interface StatementDefinition extends Immutable {
/**
- * Returns name of the statement
+ * Returns name of the statement.
*
* @return Name of the statement
*/
* Returns class which represents declared version of statement associated
* with this definition.
*
+ * <p>
* This class should be interface, which provides convenience access to
* declared substatements.
*
/**
* Returns class which represents derived behaviour from supplied statement.
*
+ * <p>
* This class should be interface, which defines convenience access to
* statement properties, namespace items and substatements.
*
* element. If argument of statement is represented as argument of yin
* element, returns false.
*
- *
* @return returns true, if statement argument is represented as value of
* yin element, otherwise returns false.
*/
package org.opendaylight.yangtools.yang.model.api.meta;
/**
- * Origin of statement
- *
+ * Origin of statement.
* Represents origin of statement - if it was explicitly present
* in model representation or if it was inferred from context.
*/
public enum StatementSource {
/**
- * Statement was explicitly declared by author
- * of the supplied model.
+ * Statement was explicitly declared by author of the supplied model.
*/
DECLARATION,
* Statement was derived from context of YANG model / statement
* and represents effective model.
*
+ * <p>
* Effective context nodes are derived from applicable {@link #DECLARATION}
* statements by interpreting their semantic meaning in context
* of current statement.
* YANG source is defined as sequence of statement in
* <a href="https://tools.ietf.org/html/rfc6020#section-6.3">RFC6020, Section 6.3</a>.
* this model is also correct for YIN, which is XML serialisation of YANG source.
+ *
* <p>
- * Statements are represented as instances / subclasses of {@link org.opendaylight.yangtools.yang.model.api.meta.ModelStatement}
- * concept and its two subconcepts which are:
+ * Statements are represented as instances / subclasses of
+ * {@link org.opendaylight.yangtools.yang.model.api.meta.ModelStatement} concept and its two subconcepts which are:
* <ul>
* <li>
* {@link org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement} - this contains navigable
* present in YANG specification and/or was introduced in form of extensions.
* </li>
* </ul>
+ *
* <p>
* Clear separation of declared / effective model is needed, since statement definition also
* contains information how effective model is computed and there is no one to one mapping
* <h2>Identifiers and Namespaces</h2>
* Effective model of YANG has several identifier types and namespaces, which behaves differently
* and are mostly used during processing data and/or during computing effective (semantic) model.
+ *
* <p>
- * Common abstraction for various types of namespaces is {@link org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace}
+ * Common abstraction for various types of namespaces is
+ * {@link org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace}
* from which concrete effective model namespaces are derived.
- *
*/
-package org.opendaylight.yangtools.yang.model.api.meta;
\ No newline at end of file
+package org.opendaylight.yangtools.yang.model.api.meta;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
/**
- * Represents YANG action statement
+ * Represents YANG action statement.
*
+ * <p>
* The "action" statement is used to define an operation connected to a
* specific container or list data node. It takes one argument, which
* is an identifier, followed by a block of substatements that holds
import javax.annotation.Nonnull;
/**
- * Statement which can contain action statements
+ * Statement which can contain action statements.
*/
@Beta
public interface ActionStatementContainer {
* It takes one argument, which is an identifier, followed by a block of
* substatements that holds detailed anydata information.
*
+ * <p>
* The "anydata" statement is used to represent an unknown set of nodes
* that can be modeled with YANG, except anyxml, but for which the data
* model is not known at module design time. It is possible, though not
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
-public interface CaseStatement extends DeclaredStatement<QName>, DataDefinitionContainer, DocumentationGroup.WithStatus, ConditionalDataDefinition {
+public interface CaseStatement extends DeclaredStatement<QName>, DataDefinitionContainer,
+ DocumentationGroup.WithStatus, ConditionalDataDefinition {
@Nonnull QName getName();
}
/**
* Statement that defines new data nodes.
- *
* One of container, leaf, leaf-list, list, choice, case,
* augment, uses, anyxml and anydata.
*
+ * <p>
* Defined in: <a href="https://tools.ietf.org/html/rfc6020#section-3">RFC6020, Section 3</a>
*/
@Rfc6020AbnfRule("data-def-stmt")
-public interface DataDefinitionStatement extends DeclaredStatement<QName>, DocumentationGroup.WithStatus, ConditionalDataDefinition {
+public interface DataDefinitionStatement extends DeclaredStatement<QName>, DocumentationGroup.WithStatus,
+ ConditionalDataDefinition {
@Nonnull QName getName();
}
@Nonnull QName getName();
/**
+ * Returns the base identity.
* @deprecated use {@link #getBases()} instead
*
* @return base statement
*/
- @Deprecated @Nullable BaseStatement getBase();
+ @Deprecated
+ @Nullable
+ BaseStatement getBase();
// FIXME: version 2.0.0: make this method non-default
@Nonnull default Collection<? extends BaseStatement> getBases() {
/**
* Represents YANG if-feature statement.
- *
* The "if-feature" statement makes its parent statement conditional.
*/
public interface IfFeatureStatement extends DeclaredStatement<Predicate<Set<QName>>> {
@Beta
@Nonnull
Predicate<Set<QName>> getIfFeaturePredicate();
-}
\ No newline at end of file
+}
/**
* Represents YANG modifier statement.
*
+ * <p>
* The "modifier" statement, which is an optional substatement
* to the "pattern" statement, takes as an argument the string "invert-match".
* If a pattern has the "invert-match" modifier present, the type is
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
-public interface NotificationStatement extends DeclaredStatement<QName>, DataDefinitionContainer.WithReusableDefinitions, DocumentationGroup.WithStatus {
+public interface NotificationStatement extends DeclaredStatement<QName>,
+ DataDefinitionContainer.WithReusableDefinitions, DocumentationGroup.WithStatus {
@Nonnull QName getName();
import org.opendaylight.yangtools.yang.common.QName;
/**
- * Common interface for action and rpc statements
+ * Common interface for action and rpc statements.
*/
@Beta
public interface OperationGroup extends DocumentationGroup.WithStatus {
import javax.annotation.Nullable;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
-public interface RefineStatement extends DeclaredStatement<SchemaNodeIdentifier>, DocumentationGroup, ConditionalFeature {
+public interface RefineStatement extends DeclaredStatement<SchemaNodeIdentifier>, DocumentationGroup,
+ ConditionalFeature {
String getTargetNode();
interface RefineContainerStatement extends RefineStatement {
this.parent = parent;
this.qname = qname;
- int h = Objects.hashCode(parent);
+ int tmp = Objects.hashCode(parent);
if (qname != null) {
- h = h * 31 + qname.hashCode();
+ tmp = tmp * 31 + qname.hashCode();
}
- hash = h;
+ hash = tmp;
}
private ImmutableList<QName> getLegacyPath() {
*/
package org.opendaylight.yangtools.yang.model.api.stmt;
-import org.opendaylight.yangtools.yang.model.api.Status;
-
import javax.annotation.Nonnull;
+import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
public interface StatusStatement extends DeclaredStatement<Status> {
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
-public interface TypeEffectiveStatement<T extends TypeStatement> extends EffectiveStatement<String, T>, TypeDefinitionAware {
+public interface TypeEffectiveStatement<T extends TypeStatement> extends EffectiveStatement<String, T>,
+ TypeDefinitionAware {
}
interface IdentityRefSpecification extends TypeStatement {
/**
+ * Returns the base identity.
* @deprecated use {@link #getBases()} instead
*
* @return base statement
*/
- @Deprecated @Nonnull BaseStatement getBase();
+ @Deprecated
+ @Nonnull BaseStatement getBase();
/**
- * @return collection of base statements (in YANG 1.1 models) or a collection containing just one base statement
- * (in YANG 1.0 models)
+ * Returns the base statements.
+ *
+ * @return collection of base statements (in YANG 1.1 models) or a collection containing just one base
+ * statement (in YANG 1.0 models)
*/
@Nonnull Collection<? extends BaseStatement> getBases();
}
* Built-In Type</a>
*/
public interface BinaryTypeDefinition extends TypeDefinition<BinaryTypeDefinition> {
-
/**
- * Returns List of number of octets that binary value contains. These are the effective constraints, e.g. they include
- * any range constraints imposed by base types.
+ * Returns List of number of octets that binary value contains. These are the effective constraints, e.g. they
+ * include any range constraints imposed by base types.
*
* @return List of number of octets that binary value contains.
*
@Nonnull List<Bit> getBits();
/**
- *
* Contains the methods for accessing the data about the individual bit of
* <code>bits</code> YANG type.
*/
* substatement for <code>decimal64</code> built-in type.
*/
public interface DecimalTypeDefinition extends TypeDefinition<DecimalTypeDefinition> {
-
/**
* Returns range constraints for instance of this type.
*
@Nonnull List<RangeConstraint> getRangeConstraints();
/**
- * Returns integer between 1 and 18 inclusively. <br>
- * <br>
+ * Returns integer between 1 and 18 inclusively.
*
+ * <p>
* The "fraction-digits" statement controls the size of the minimum
* difference between values of a decimal64 type, by restricting the value
* space to numbers that are expressible as "i x 10^-n" where n is the
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
/**
- *
* Contains the method for getting the details about YANG <code>identity</code>.
*/
public interface IdentityTypeDefinition extends TypeDefinition<IdentityTypeDefinition> {
-
/**
- * Returns the name of the YANG identity
+ * Returns the name of the YANG identity.
*
* @return QName of the YANG identity
*/
IdentitySchemaNode getIdentity();
/**
+ * Returns the set of identities this reference points to.
+ *
* @return set of identities to which the instance of this type refers (in YANG 1.1 models) or a set containing
* just one identity (in YANG 1.0 models)
*/
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
/**
- * IntegerTypeDefinition is interface which represents SIGNED Integer values defined in Yang language. <br>
- * The integer built-in types in Yang are int8, int16, int32, int64. They represent signed integers of different sizes: <br>
+ * IntegerTypeDefinition is interface which represents SIGNED Integer values defined in Yang language.<br>
+ * The integer built-in types in Yang are int8, int16, int32, int64. They represent signed integers of different
+ * sizes:<br>
* <ul>
* <li>int8 represents integer values between -128 and 127, inclusively.</li>
* <li>int16 represents integer values between -32768 and 32767, inclusively.</li>
* <li>int64 represents integer values between -9223372036854775808 and 9223372036854775807, inclusively.</li>
* </ul>
*
+ * <p>
* The Integer Built-In Types are defined in <a href="https://tools.ietf.org/html/rfc6020#section-9.2"> [RFC-6020]</a>
*/
public interface IntegerTypeDefinition extends TypeDefinition<IntegerTypeDefinition> {
-
/**
* Returns Range Constraints defined for given Integer Type. These are the effective constraints, e.g. they include
* any range constraints imposed by base types.
/**
* Enum describing the effect of a YANG modifier statement.
*
+ * <p>
* As of YANG 1.1 (RFC7950) there is only one modifier value available and that
* is "invert-match". If there are more possible values added in the future,
* this enum can be extended with more enum constants.
private final String keyword;
- private ModifierKind(final String keyword) {
+ ModifierKind(final String keyword) {
this.keyword = Preconditions.checkNotNull(keyword);
}
/**
- * @return String that corresponds to the yang keyword.
+ * YANG keyword of this modifier.
+ *
+ * @return String that corresponds to the YANG keyword.
*/
public @Nonnull String getKeyword() {
return keyword;
}
/**
- * Returns ModifierKind based on supplied Yang keyword
+ * Returns ModifierKind based on supplied Yang keyword.
*
* @param keyword
* Yang keyword in string form
- * @return ModifierKind based on supplied Yang keyword
+ * @return ModifierKind based on supplied YANG keyword
* @throws NullPointerException if keyword is null
*/
public static Optional<ModifierKind> parse(final String keyword) {
/**
* Contains the method for getting detail data about unsigned integer.
- *
* Specifically it is the method for getting the range value.
*/
public interface UnsignedIntegerTypeDefinition extends TypeDefinition<UnsignedIntegerTypeDefinition> {
this(message, id, null);
}
- public MissingSchemaSourceException(final String s, final SourceIdentifier id, final Throwable t) {
- super(s, t);
+ public MissingSchemaSourceException(final String message, final SourceIdentifier id, final Throwable cause) {
+ super(message, cause);
this.id = Preconditions.checkNotNull(id);
}
import java.util.Objects;
/**
- * YANG Schema revision source identifier
+ * YANG Schema revision source identifier.
*
+ * <p>
* Simple transfer object represents revision identifier of source for YANG
* schema (module or submodule), which consists of
* <ul>
* <li>Module revision (optional) ({link {@link #getRevision()})
* </ul>
*
+ * <p>
* Revision source identifier is designated to be carry only necessary
* information to look-up YANG model source and to be used by various
* SchemaSourceProviders.
*
+ * <p>
* <b>Note:</b>On source retrieval layer it is impossible to distinguish between
* YANG module and/or submodule unless source is present.
*
private static final long serialVersionUID = 1L;
/**
- *
* Creates new YANG Schema revision source identifier for sources without
* a revision.
*
}
/**
- *
* Creates new YANG Schema revision source identifier.
*
* @param name
}
/**
- *
* Creates new YANG Schema revision source identifier.
*
* @param moduleName
*/
SchemaContextFactory createSchemaContextFactory(@Nonnull SchemaSourceFilter filter);
- <T extends SchemaSourceRepresentation> CheckedFuture<T, SchemaSourceException> getSchemaSource(@Nonnull SourceIdentifier id, @Nonnull Class<T> represetation);
+ <T extends SchemaSourceRepresentation> CheckedFuture<T, SchemaSourceException> getSchemaSource(
+ @Nonnull SourceIdentifier id, @Nonnull Class<T> represetation);
}
}
/**
- * Return YANG schema source identifier consisting of name and revision of the module which caused this exception
+ * Return YANG schema source identifier consisting of name and revision of the module which caused this exception.
*
* @return YANG schema source identifier
*/
@Override
public final String toString() {
- return addToStringAttributes(MoreObjects.toStringHelper(this).add("unsatisfiedImports", unsatisfiedImports)).toString();
+ return addToStringAttributes(MoreObjects.toStringHelper(this).add("unsatisfiedImports", unsatisfiedImports))
+ .toString();
}
protected ToStringHelper addToStringAttributes(final ToStringHelper toStringHelper) {
/**
* Common interface for schema source representations.
*
+ * <p>
* A schema source is an atomic piece of the overall schema context. In YANG terms,
* a schema source is semantically equivalent to a single YANG text file, be it a
* module or a submodule.
*
+ * <p>
* A schema source can exist in various forms, which we call representations. Again,
* in YANG terms, each representation is semantically equivalent, but from
* implementation perspective certain operations on a schema source may require it
* applied. Such transformations are affected via instances of
* SchemaSourceTransformation.
*
+ * <p>
* Typical examples of a schema source representation include:
* <ul>
* <li>a {@link java.lang.String} - textual representation of source code
* <li>Parsed abstract syntax tree (AST), which is the result of a syntactic parser
* </ul>
*
- * Implementations of this interface expected to comply with the {@link Immutable}
- * contract.
+ * <p>
+ * Implementations of this interface expected to comply with the {@link Immutable} contract.
*/
@Beta
public interface SchemaSourceRepresentation extends Identifiable<SourceIdentifier>, Immutable {
- /**
- * {@inheritDoc}
- */
@Override
SourceIdentifier getIdentifier();
import org.opendaylight.yangtools.yang.model.api.Module;
/**
- * YANG Schema source identifier with specified semantic version
+ * YANG Schema source identifier with specified semantic version.
*
+ * <p>
* Simple transfer object represents identifier of source for YANG schema
* (module or submodule), which consists of
* <ul>
* <li>(Optional) Module revision ({link {@link #getRevision()}
* </ul>
*
+ * <p>
* Source identifier is designated to be carry only necessary information to
* look-up YANG model source and to be used by various SchemaSourceProviders.
*
+ * <p>
* <b>Note:</b>On source retrieval layer it is impossible to distinguish between
* YANG module and/or submodule unless source is present.
*
/**
* Base class of YANG Schema source identifiers.
*
+ * <p>
* Source identifiers are designated to be carry only necessary information to
* look-up YANG model source and to be used by various SchemaSourceProviders.
*
+ * <p>
* (For further reference see: http://tools.ietf.org/html/rfc6020#section-5.2
* and http://tools.ietf.org/html/rfc6022#section-3.1 ).
*/
/**
* Simplified compiled revision pattern in format YYYY-mm-dd, which checks
* only distribution of number elements.
+ *
* <p>
- * For checking if supplied string is real date, use
- * {@link SimpleDateFormatUtil} instead.
+ * For checking if supplied string is real date, use {@link SimpleDateFormatUtil} instead.
*/
public static final Pattern REVISION_PATTERN = Pattern.compile(REVISION_PATTERN_STR);
private final String name;
/**
- *
* Creates new YANG Schema source identifier for sources without revision.
*
* @param name
}
/**
- * Returns model name
+ * Returns model name.
*
* @return model name
*/
}
/**
- * <p>
* Since we've got two ways of model versioning (revision & semantic version),
* this method shouldn't be called directly anymore. Eventually, callers of this method
* should be notified before method gets deleted.
* <li>{@link SemVerSourceIdentifier#create(String, SemVer)}</li>
* <li>{@link SemVerSourceIdentifier#create(String, Optional, SemVer)}</li>
* <li>{@link SemVerSourceIdentifier#create(String, String, SemVer)}</li>
- * </ul>
- * or
+ * </ul>or
* <ul>
* <li>{@link RevisionSourceIdentifier#create(String)}</li>
* <li>{@link RevisionSourceIdentifier#create(String, String)}</li>
*
* @param moduleName
* Name of schema
-
* @param revision
* Revision of source in format YYYY-mm-dd. If not present,
* default value will be used.
- *
* @return particular SourceIdentifier instance
- *
*/
@Deprecated
public static SourceIdentifier create(final String moduleName, final Optional<String> revision) {
/**
* Returns filename for this YANG module as specified in RFC 6020.
*
- * Returns filename in format <code>name ['@' revision] '.yang'</code>
- * <p>
- * Where revision is date in format YYYY-mm-dd.
* <p>
+ * Returns filename in format <code>name ['@' revision] '.yang'</code>,
+ * where revision is date in format YYYY-mm-dd.
*
+ * <p>
* @see <a href="http://tools.ietf.org/html/rfc6020#section-5.2">RFC6020</a>
*
* @return Filename for this source identifier.
/**
* Returns filename for this YANG module as specified in RFC 6020.
*
- * Returns filename in format <code>moduleName ['@' revision] '.yang'</code>
- *
- * Where Where revision-date is in format YYYY-mm-dd.
+ * <p>
+ * Returns filename in format <code>moduleName ['@' revision] '.yang'</code>,
+ * where Where revision-date is in format YYYY-mm-dd.
*
* <p>
* See http://tools.ietf.org/html/rfc6020#section-5.2
final QName qname = QName.create(rootNs, root.getLocalName());
Preconditions.checkArgument(RFC6020_YIN_MODULE.equals(qname.getModule()),
"Root node namepsace %s does not match %s", rootNs, YangConstants.RFC6020_YIN_NAMESPACE);
- Preconditions.checkArgument(MODULE.getStatementName().equals(qname) ||
- SUBMODULE.getStatementName().equals(qname), "Root element %s is not a module nor a submodule", qname);
+ Preconditions.checkArgument(MODULE.getStatementName().equals(qname)
+ || SUBMODULE.getStatementName().equals(qname), "Root element %s is not a module nor a submodule", qname);
Preconditions.checkArgument(root instanceof Element, "Root node %s is not an element", root);
final Element element = (Element)root;
* @return A {@link YinDomSchemaSource} instance
* @throws TransformerException when the provided source fails to transform
*/
- @Nonnull public static YinDomSchemaSource transform(final YinXmlSchemaSource xmlSchemaSource) throws TransformerException {
+ @Nonnull public static YinDomSchemaSource transform(final YinXmlSchemaSource xmlSchemaSource)
+ throws TransformerException {
final YinDomSchemaSource cast = castSchemaSource(xmlSchemaSource);
return cast != null ? cast :
create(xmlSchemaSource.getIdentifier(), transformSource(xmlSchemaSource.getSource()));
return RevisionSourceIdentifier.create(parsed.getKey(), Optional.fromNullable(parsed.getValue()));
}
- /**
- * {@inheritDoc}
- */
@Override
public final SourceIdentifier getIdentifier() {
return identifier;
}
- /**
- * {@inheritDoc}
- */
@Nonnull
@Override
public Class<? extends YinTextSchemaSource> getType() {
* @param delegate Backing ByteSource instance
* @return A new YinTextSchemaSource
*/
- public static YinTextSchemaSource delegateForByteSource(final SourceIdentifier identifier, final ByteSource delegate) {
+ public static YinTextSchemaSource delegateForByteSource(final SourceIdentifier identifier,
+ final ByteSource delegate) {
return new DelegatedYinTextSchemaSource(identifier, delegate);
}
- private static final class DelegatedYinTextSchemaSource extends YinTextSchemaSource implements Delegator<ByteSource> {
+ private static final class DelegatedYinTextSchemaSource extends YinTextSchemaSource
+ implements Delegator<ByteSource> {
private final ByteSource delegate;
private DelegatedYinTextSchemaSource(final SourceIdentifier identifier, final ByteSource delegate) {
private final SourceIdentifier sourceIdentifier;
private final int cost;
- private PotentialSchemaSource(final SourceIdentifier sourceIdentifier, final Class<? extends T> representation, final int cost) {
+ private PotentialSchemaSource(final SourceIdentifier sourceIdentifier, final Class<? extends T> representation,
+ final int cost) {
this.representation = Preconditions.checkNotNull(representation);
this.sourceIdentifier = Preconditions.checkNotNull(sourceIdentifier);
Preconditions.checkArgument(cost >= 0, "cost has to be non-negative");
this.cost = cost;
}
- public static <T extends SchemaSourceRepresentation> PotentialSchemaSource<T> create(final SourceIdentifier sourceIdentifier, final Class<? extends T> representation, final int cost) {
+ public static <T extends SchemaSourceRepresentation> PotentialSchemaSource<T> create(
+ final SourceIdentifier sourceIdentifier, final Class<? extends T> representation, final int cost) {
return new PotentialSchemaSource<>(sourceIdentifier, representation, cost);
}
* the newest available revision, or throws {@link MissingSchemaSourceException}.
* </ul>
*
+ * <p>
* In either case the returned representation is required to report a non-null
* revision in the {@link SourceIdentifier} returned from
* {@link SchemaSourceRepresentation#getIdentifier()}.
*
+ * <p>
* Implementations are not required to provide constant behavior in time, notably
* this different invocation of this method may produce different results.
*
* Registration of a schema source.
*/
@Beta
-public interface SchemaSourceRegistration<T extends SchemaSourceRepresentation> extends ObjectRegistration<PotentialSchemaSource<T>> {
+public interface SchemaSourceRegistration<T extends SchemaSourceRepresentation>
+ extends ObjectRegistration<PotentialSchemaSource<T>> {
@Override
void close();
}
* @return A registration handle. Invoking {@link SchemaSourceRegistration#close()}
* will cancel the registration.
*/
- <T extends SchemaSourceRepresentation> SchemaSourceRegistration<T> registerSchemaSource(SchemaSourceProvider<? super T> provider, PotentialSchemaSource<T> source);
+ <T extends SchemaSourceRepresentation> SchemaSourceRegistration<T> registerSchemaSource(
+ SchemaSourceProvider<? super T> provider, PotentialSchemaSource<T> source);
/**
* Register a schema source listener. The listener will be notified as new