Refactor tests for TopicResource class
[dmaap/dbcapi.git] / src / main / java / org / onap / dmaap / dbcapi / model / Topic.java
index bfd948b..b715a24 100644 (file)
@@ -20,6 +20,7 @@
 
 package org.onap.dmaap.dbcapi.model;
 
+import com.google.common.base.Objects;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Date;
@@ -30,6 +31,8 @@ import javax.xml.bind.annotation.XmlRootElement;
 
 import org.onap.dmaap.dbcapi.util.DmaapConfig;
 
+import io.swagger.annotations.ApiModelProperty;
+
 import org.onap.dmaap.dbcapi.service.DmaapService;
 import org.onap.dmaap.dbcapi.service.TopicService;
 
@@ -37,22 +40,36 @@ import org.onap.dmaap.dbcapi.service.TopicService;
 @XmlRootElement
 public class Topic extends DmaapObject  {
 
+       @ApiModelProperty( value="Fully Qualified Topic Name constructed by dbcapi, following the rules for `fqtnStyle`")
        private String fqtn;
+       @ApiModelProperty( value="the short name used by humans, and utilized to construct the `FQTN`")
        private String topicName;
+       @ApiModelProperty( value="a description of what this Topic is used for")
        private String  topicDescription;
        private String  tnxEnabled;
+       @ApiModelProperty( value="a label used to identify who requested this `Topic` to be provisioned.  In the future this "
+                       + "may be an AAF Identity.")
        private String  owner;
+       @ApiModelProperty( value="a reference to an identifier that describes a data format used for this `Topic`")
        private String  formatUuid;
+       @ApiModelProperty( value="An indicator for how this `Topic` should be replicated when there are more than one `MR_Cluster` instances")
        private ReplicationType replicationCase;  
+       @ApiModelProperty( value="the URL of an outside MR instance")
        private String  globalMrURL;            // optional: URL of global MR to replicate to/from
+       @ApiModelProperty( value="the construction rule for the `fqtn` field")
        private FqtnType  fqtnStyle;
-       private String  version;        
+       @ApiModelProperty( value="a hook for any versioning needed for managing a `Topic` over time")
+       private String  version;
+       @ApiModelProperty( value="the kafka attribute for specifying the number of partitions")
        private String  partitionCount;
+       @ApiModelProperty( value="the kafka attribute for specifying replication within an `MR_Cluster` instance")
        private String  replicationCount;
+       @ApiModelProperty( value="a value generated by dbcapi, this AAF Role has permission to publish to this `Topic`")
        private String  publisherRole;
+       @ApiModelProperty( value="a value generated by dbcapi, this AAF Role has permission to subscribe to this `Topic`")
        private String  subscriberRole;
 
-
+       @ApiModelProperty( value="an array of `MR_Client` objects associated to this `Topic`")
        private ArrayList<MR_Client> clients;
 
 
@@ -112,7 +129,7 @@ public class Topic extends DmaapObject  {
 
        public Topic() {
                super();
-               this.clients = new ArrayList<MR_Client>();
+               this.clients = new ArrayList<>();
                this.lastMod = new Date();
                this.replicationCase = ReplicationType.Validator("none");
                this.setLastMod();
@@ -124,7 +141,6 @@ public class Topic extends DmaapObject  {
                this.fqtn = fqtn;
                this.topicName = topicName;
                this.topicDescription = topicDescription;
-               //this.dcaeLocationName = dcaeLocationName;
                this.tnxEnabled = tnxEnabled;
                this.owner = owner;
                this.init();
@@ -162,7 +178,6 @@ public class Topic extends DmaapObject  {
                this.setTopicName( (String) jsonObj.get( "topicName" ) );
                this.setTopicDescription( (String) jsonObj.get( "topicDescription" ));
                this.setOwner( (String) jsonObj.get( "owner" ) );
-               //this.setLastMod();
                this.setStatus( (String) jsonObj.get( "status" ) );
                this.setReplicationCase( ReplicationType.Validator( (String) jsonObj.get( "replicationCase" ) ));
                this.setFqtnStyle( FqtnType.Validator( (String) jsonObj.get( "fqtnStyle" ) ) );
@@ -222,6 +237,7 @@ public class Topic extends DmaapObject  {
                return clients;
        }
 
+       @ApiModelProperty( hidden=true )
        public int getNumClients() {
                if ( this.clients == null ) {
                        return 0;
@@ -311,8 +327,29 @@ public class Topic extends DmaapObject  {
                logger.info( str.toString() );
                return str.toString();
        }
-       
+       @ApiModelProperty( hidden=true )
        public byte[] getBytes() {
                return toProvJSON().getBytes(StandardCharsets.UTF_8);
        }
+
+
+       @Override
+       public boolean equals(Object o) {
+               if (this == o) {
+                       return true;
+               }
+               if (o == null || getClass() != o.getClass()) {
+                       return false;
+               }
+               Topic topic = (Topic) o;
+               return Objects.equal(fqtn, topic.fqtn) &&
+                       Objects.equal(topicName, topic.topicName) &&
+                       Objects.equal(tnxEnabled, topic.tnxEnabled) &&
+                       Objects.equal(owner, topic.owner);
+       }
+
+       @Override
+       public int hashCode() {
+               return Objects.hashCode(fqtn, topicName, tnxEnabled, owner);
+       }
 }