killbill-memoizeit

jaxrs: add isControlTag to TagDefinitionJson Signed-off-by:

8/21/2012 1:52:07 PM

Details

diff --git a/api/src/main/java/com/ning/billing/util/tag/TagDefinition.java b/api/src/main/java/com/ning/billing/util/tag/TagDefinition.java
index b00c46b..9471734 100644
--- a/api/src/main/java/com/ning/billing/util/tag/TagDefinition.java
+++ b/api/src/main/java/com/ning/billing/util/tag/TagDefinition.java
@@ -19,7 +19,7 @@ package com.ning.billing.util.tag;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import com.ning.billing.util.entity.Entity;
 
-// TODO: needs to surface created date, created by, isControlTag
+// TODO: needs to surface created date, created by
 
 @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
 public interface TagDefinition extends Entity {
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/TagDefinitionJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/TagDefinitionJson.java
index 86ce645..d9cf279 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/TagDefinitionJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/TagDefinitionJson.java
@@ -26,26 +26,34 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 public class TagDefinitionJson {
 
     private final String id;
+    private final Boolean isControlTag;
     private final String name;
     private final String description;
 
     @JsonCreator
     public TagDefinitionJson(@JsonProperty("id") final String id,
+                             @JsonProperty("isControlTag") final Boolean isControlTag,
                              @JsonProperty("name") final String name,
                              @JsonProperty("description") @Nullable final String description) {
         this.id = id;
+        this.isControlTag = isControlTag;
         this.name = name;
         this.description = description;
     }
 
     public TagDefinitionJson(final TagDefinition tagDefinition) {
-        this(tagDefinition.getId().toString(), tagDefinition.getName(), tagDefinition.getDescription());
+        this(tagDefinition.getId().toString(), tagDefinition.isControlTag(), tagDefinition.getName(), tagDefinition.getDescription());
     }
 
     public String getId() {
         return id;
     }
 
+    @JsonProperty("isControlTag")
+    public Boolean isControlTag() {
+        return isControlTag;
+    }
+
     public String getName() {
         return name;
     }
@@ -55,49 +63,58 @@ public class TagDefinitionJson {
     }
 
     @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result
-                 + ((description == null) ? 0 : description.hashCode());
-        result = prime * result + ((name == null) ? 0 : name.hashCode());
-        result = prime * result
-                 + ((id == null) ? 0 : id.hashCode());
-        return result;
+    public String toString() {
+        final StringBuilder sb = new StringBuilder();
+        sb.append("TagDefinitionJson");
+        sb.append("{id='").append(id).append('\'');
+        sb.append(", isControlTag=").append(isControlTag);
+        sb.append(", name='").append(name).append('\'');
+        sb.append(", description='").append(description).append('\'');
+        sb.append('}');
+        return sb.toString();
     }
 
-    public boolean equalsNoId(Object obj) {
-        if (this == obj)
+    @Override
+    public boolean equals(final Object o) {
+        if (this == o) {
             return true;
-        if (obj == null)
-            return false;
-        if (getClass() != obj.getClass())
+        }
+        if (o == null || getClass() != o.getClass()) {
             return false;
-        TagDefinitionJson other = (TagDefinitionJson) obj;
-        if (description == null) {
-            if (other.description != null)
-                return false;
-        } else if (!description.equals(other.description))
+        }
+
+        final TagDefinitionJson that = (TagDefinitionJson) o;
+
+        if (!equalsNoId(that)) {
             return false;
-        if (name == null) {
-            if (other.name != null)
-                return false;
-        } else if (!name.equals(other.name))
+        }
+        if (id != null ? !id.equals(that.id) : that.id != null) {
             return false;
+        }
+
         return true;
     }
 
-    @Override
-    public boolean equals(Object obj) {
-        if (!equalsNoId(obj)) {
+    public boolean equalsNoId(final TagDefinitionJson that) {
+        if (description != null ? !description.equals(that.description) : that.description != null) {
+            return false;
+        }
+        if (isControlTag != null ? !isControlTag.equals(that.isControlTag) : that.isControlTag != null) {
             return false;
         }
-        TagDefinitionJson other = (TagDefinitionJson) obj;
-        if (id == null) {
-            if (other.id != null)
-                return false;
-        } else if (!id.equals(other.id))
+        if (name != null ? !name.equals(that.name) : that.name != null) {
             return false;
+        }
+
         return true;
     }
+
+    @Override
+    public int hashCode() {
+        int result = id != null ? id.hashCode() : 0;
+        result = 31 * result + (isControlTag != null ? isControlTag.hashCode() : 0);
+        result = 31 * result + (name != null ? name.hashCode() : 0);
+        result = 31 * result + (description != null ? description.hashCode() : 0);
+        return result;
+    }
 }
diff --git a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestTagDefinitionJson.java b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestTagDefinitionJson.java
index 01850a0..2bfe258 100644
--- a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestTagDefinitionJson.java
+++ b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestTagDefinitionJson.java
@@ -21,26 +21,27 @@ import java.util.UUID;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.ning.billing.jaxrs.JaxrsTestSuite;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+
 public class TestTagDefinitionJson extends JaxrsTestSuite {
+
     private static final ObjectMapper mapper = new ObjectMapper();
 
     @Test(groups = "fast")
     public void testJson() throws Exception {
         final String id = UUID.randomUUID().toString();
+        final Boolean isControlTag = true;
         final String name = UUID.randomUUID().toString();
         final String description = UUID.randomUUID().toString();
-        final TagDefinitionJson tagDefinitionJson = new TagDefinitionJson(id, name, description);
+        final TagDefinitionJson tagDefinitionJson = new TagDefinitionJson(id, isControlTag, name, description);
+        Assert.assertEquals(tagDefinitionJson.getId(), id);
+        Assert.assertEquals(tagDefinitionJson.isControlTag(), isControlTag);
         Assert.assertEquals(tagDefinitionJson.getName(), name);
         Assert.assertEquals(tagDefinitionJson.getDescription(), description);
 
         final String asJson = mapper.writeValueAsString(tagDefinitionJson);
-        Assert.assertEquals(asJson, "{\"id\":\"" + tagDefinitionJson.getId() + "\"," +
-                "\"name\":\"" + tagDefinitionJson.getName() + "\"," +
-                "\"description\":\"" + tagDefinitionJson.getDescription() + "\"}");
-
         final TagDefinitionJson fromJson = mapper.readValue(asJson, TagDefinitionJson.class);
         Assert.assertEquals(fromJson, tagDefinitionJson);
     }