X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-common-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fcommon%2Fapi%2Fclustering%2FEntity.java;h=2c79ff6803a54a17aaea7963b12670d26d5b676a;hb=refs%2Fchanges%2F54%2F57354%2F8;hp=93d001216afcb6a0218fdeb15247ddf2d52f2f61;hpb=a507f19b518f36065c74f4f88c9327ede28ff640;p=controller.git diff --git a/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/clustering/Entity.java b/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/clustering/Entity.java index 93d001216a..2c79ff6803 100644 --- a/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/clustering/Entity.java +++ b/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/clustering/Entity.java @@ -11,13 +11,13 @@ package org.opendaylight.controller.md.sal.common.api.clustering; import com.google.common.base.Preconditions; import java.io.Serializable; import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; /** - *

* A clustered Entity is something which is shared by multiple applications across a cluster. An Entity has a type * and an identifier. - *

+ * *

* The type describes the type of the Entity where examples of a type maybe "openflow" or "netconf" * etc. An Entity type could be tied to how exactly an application shares and "owns" an entity. For example we may want @@ -25,21 +25,32 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; * first served basis. On the other hand for netconf entity types we may want applications to gain ownership based on * a load balancing approach. While this mechanism of assigning a ownership acquisition strategy is not finalized the * intention is that the entity type will play a role in determining the strategy and thus should be put in place. - *

+ * *

* The identifier is a YangInstanceIdentifier. The reason for the choice of YangInstanceIdentifier is because it * can easily be used to represent a data node. For example an inventory node represents a shared entity and it is best - * referenced by the YangInstanceIdentifier if the inventory node stored in the data store. - *

+ * referenced by the YangInstanceIdentifier if the inventory node is stored in the data store. + * + *

+ * Note that an entity identifier must conform to a valid yang schema. If there is no existing yang schema to + * represent an entity, the general-entity yang model can be used. + * + * @deprecated Use org.opendaylight.mdsal.binding.api.clustering.Entity or + * org.opendaylight.mdsal.eos.dom.api.DOMEntity instead */ +@Deprecated public final class Entity implements Serializable { private static final long serialVersionUID = 1L; + private static final QName ENTITY_QNAME = + org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.general.entity.rev150820.Entity.QNAME; + private static final QName ENTITY_NAME = QName.create(ENTITY_QNAME, "name"); + private final String type; private final YangInstanceIdentifier id; /** - * Construct a new Entity + * Construct an Entity with a YangInstanceIdentifier. * * @param type the type of the entity * @param id the identifier of the entity @@ -49,6 +60,19 @@ public final class Entity implements Serializable { this.id = Preconditions.checkNotNull(id, "id should not be null"); } + /** + * Construct an Entity with an with a name. The general-entity schema is used to construct the + * YangInstanceIdentifier. + * + * @param type the type of the entity + * @param entityName the name of the entity used to construct a general-entity YangInstanceIdentifier + */ + public Entity(@Nonnull String type, @Nonnull String entityName) { + this.type = Preconditions.checkNotNull(type, "type should not be null"); + this.id = YangInstanceIdentifier.builder().node(ENTITY_QNAME).nodeWithKey(ENTITY_QNAME, ENTITY_NAME, + Preconditions.checkNotNull(entityName, "entityName should not be null")).build(); + } + /** * * @return id of entity @@ -97,10 +121,6 @@ public final class Entity implements Serializable { @Override public String toString() { - final StringBuilder sb = new StringBuilder("Entity{"); - sb.append("type='").append(type).append('\''); - sb.append(", id=").append(id); - sb.append('}'); - return sb.toString(); + return "Entity{" + "type='" + type + '\'' + ", id=" + id + '}'; } }