import org.opendaylight.yangtools.concepts.Identifier;
import org.opendaylight.yangtools.concepts.Immutable;
+import org.opendaylight.yangtools.objcache.ObjectCache;
+import org.opendaylight.yangtools.objcache.ObjectCacheFactory;
/**
* YANG Schema source identifier
*/
@Beta
public final class SourceIdentifier implements Identifier, Immutable {
+ /**
+ * Default revision for sources without specified revision.
+ * Marks the source as oldest.
+ */
+ public static final String NOT_PRESENT_FORMATTED_REVISION = "0000-00-00";
+
+ private static final ObjectCache CACHE = ObjectCacheFactory.getObjectCache(SourceIdentifier.class);
private static final long serialVersionUID = 1L;
private final String revision;
private final String name;
/**
- *
* Creates new YANG Schema source identifier.
*
* @param name Name of schema
* @param formattedRevision Revision of source in format YYYY-mm-dd
*/
- public SourceIdentifier(final String name, final Optional<String> formattedRevision) {
- super();
+ public SourceIdentifier(final String name, final String formattedRevision) {
this.name = Preconditions.checkNotNull(name);
- this.revision = formattedRevision.orNull();
+ this.revision = Preconditions.checkNotNull(formattedRevision);
+ }
+
+ /**
+ *
+ * Creates new YANG Schema source identifier.
+ *
+ * @param name Name of schema
+ * @param formattedRevision Revision of source in format YYYY-mm-dd. If not present, default value will be used.
+ */
+ public SourceIdentifier(final String name, final Optional<String> formattedRevision) {
+ this(name, formattedRevision.or(NOT_PRESENT_FORMATTED_REVISION));
+ }
+
+ /**
+ * Return a cached reference to an object equal to this object.
+ *
+ * @return A potentially shared reference, not guaranteed to be unique.
+ */
+ public SourceIdentifier cachedReference() {
+ return CACHE.getReference(this);
+ }
+
+ /**
+ *
+ * Creates new YANG Schema source identifier for sources without revision.
+ * {@link SourceIdentifier#NOT_PRESENT_FORMATTED_REVISION} as default revision.
+ *
+ * @param name Name of schema
+ */
+ public SourceIdentifier(final String name) {
+ this(name, NOT_PRESENT_FORMATTED_REVISION);
}
/**