killbill-memoizeit

util: make tag events serializable This is for the persistent

6/13/2012 2:41:39 AM

Changes

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 d35e011..88f9f1a 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
@@ -16,9 +16,11 @@
 
 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
+@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
 public interface TagDefinition extends Entity {
     String getName();
 
diff --git a/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultControlTagCreationEvent.java b/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultControlTagCreationEvent.java
index 2e420ed..3f24ac4 100644
--- a/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultControlTagCreationEvent.java
+++ b/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultControlTagCreationEvent.java
@@ -18,6 +18,9 @@ package com.ning.billing.util.tag.api.user;
 
 import java.util.UUID;
 
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ning.billing.util.dao.ObjectType;
 import com.ning.billing.util.tag.TagDefinition;
 import com.ning.billing.util.tag.api.ControlTagCreationEvent;
@@ -29,7 +32,12 @@ public class DefaultControlTagCreationEvent implements ControlTagCreationEvent {
     private final TagDefinition tagDefinition;
     private final UUID userToken;
 
-    public DefaultControlTagCreationEvent(final UUID tagId, final UUID objectId, final ObjectType objectType, final TagDefinition tagDefinition, final UUID userToken) {
+    @JsonCreator
+    public DefaultControlTagCreationEvent(@JsonProperty("tagId") final UUID tagId,
+                                          @JsonProperty("objectId") final UUID objectId,
+                                          @JsonProperty("objectType") final ObjectType objectType,
+                                          @JsonProperty("tagDefinition") final TagDefinition tagDefinition,
+                                          @JsonProperty("userToken") final UUID userToken) {
         this.tagId = tagId;
         this.objectId = objectId;
         this.objectType = objectType;
@@ -57,6 +65,7 @@ public class DefaultControlTagCreationEvent implements ControlTagCreationEvent {
         return tagDefinition;
     }
 
+    @JsonIgnore
     @Override
     public BusEventType getBusEventType() {
         return BusEventType.CONTROL_TAG_CREATION;
diff --git a/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultControlTagDefinitionCreationEvent.java b/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultControlTagDefinitionCreationEvent.java
index b084ac5..f21db81 100644
--- a/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultControlTagDefinitionCreationEvent.java
+++ b/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultControlTagDefinitionCreationEvent.java
@@ -18,23 +18,29 @@ package com.ning.billing.util.tag.api.user;
 
 import java.util.UUID;
 
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ning.billing.util.tag.TagDefinition;
 import com.ning.billing.util.tag.api.ControlTagDefinitionCreationEvent;
 
 public class DefaultControlTagDefinitionCreationEvent implements ControlTagDefinitionCreationEvent {
-    private final UUID tagId;
+    private final UUID tagDefinitionId;
     private final TagDefinition tagDefinition;
     private final UUID userToken;
 
-    public DefaultControlTagDefinitionCreationEvent(final UUID tagId, final TagDefinition tagDefinition, final UUID userToken) {
-        this.tagId = tagId;
+    @JsonCreator
+    public DefaultControlTagDefinitionCreationEvent(@JsonProperty("tagDefinitionId") final UUID tagDefinitionId,
+                                                    @JsonProperty("tagDefinition") final TagDefinition tagDefinition,
+                                                    @JsonProperty("userToken") final UUID userToken) {
+        this.tagDefinitionId = tagDefinitionId;
         this.tagDefinition = tagDefinition;
         this.userToken = userToken;
     }
 
     @Override
     public UUID getTagDefinitionId() {
-        return tagId;
+        return tagDefinitionId;
     }
 
     @Override
@@ -42,6 +48,7 @@ public class DefaultControlTagDefinitionCreationEvent implements ControlTagDefin
         return tagDefinition;
     }
 
+    @JsonIgnore
     @Override
     public BusEventType getBusEventType() {
         return BusEventType.CONTROL_TAGDEFINITION_CREATION;
@@ -57,7 +64,7 @@ public class DefaultControlTagDefinitionCreationEvent implements ControlTagDefin
         final StringBuilder sb = new StringBuilder();
         sb.append("DefaultControlTagDefinitionCreationEvent");
         sb.append("{tagDefinition=").append(tagDefinition);
-        sb.append(", tagId=").append(tagId);
+        sb.append(", tagDefinitionId=").append(tagDefinitionId);
         sb.append(", userToken=").append(userToken);
         sb.append('}');
         return sb.toString();
@@ -77,7 +84,7 @@ public class DefaultControlTagDefinitionCreationEvent implements ControlTagDefin
         if (tagDefinition != null ? !tagDefinition.equals(that.tagDefinition) : that.tagDefinition != null) {
             return false;
         }
-        if (tagId != null ? !tagId.equals(that.tagId) : that.tagId != null) {
+        if (tagDefinitionId != null ? !tagDefinitionId.equals(that.tagDefinitionId) : that.tagDefinitionId != null) {
             return false;
         }
         if (userToken != null ? !userToken.equals(that.userToken) : that.userToken != null) {
@@ -89,7 +96,7 @@ public class DefaultControlTagDefinitionCreationEvent implements ControlTagDefin
 
     @Override
     public int hashCode() {
-        int result = tagId != null ? tagId.hashCode() : 0;
+        int result = tagDefinitionId != null ? tagDefinitionId.hashCode() : 0;
         result = 31 * result + (tagDefinition != null ? tagDefinition.hashCode() : 0);
         result = 31 * result + (userToken != null ? userToken.hashCode() : 0);
         return result;
diff --git a/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultControlTagDefinitionDeletionEvent.java b/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultControlTagDefinitionDeletionEvent.java
index 10de711..386b25b 100644
--- a/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultControlTagDefinitionDeletionEvent.java
+++ b/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultControlTagDefinitionDeletionEvent.java
@@ -18,23 +18,29 @@ package com.ning.billing.util.tag.api.user;
 
 import java.util.UUID;
 
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ning.billing.util.tag.TagDefinition;
 import com.ning.billing.util.tag.api.ControlTagDefinitionDeletionEvent;
 
 public class DefaultControlTagDefinitionDeletionEvent implements ControlTagDefinitionDeletionEvent {
-    private final UUID tagId;
+    private final UUID tagDefinitionId;
     private final TagDefinition tagDefinition;
     private final UUID userToken;
 
-    public DefaultControlTagDefinitionDeletionEvent(final UUID tagId, final TagDefinition tagDefinition, final UUID userToken) {
-        this.tagId = tagId;
+    @JsonCreator
+    public DefaultControlTagDefinitionDeletionEvent(@JsonProperty("tagDefinitionId") final UUID tagDefinitionId,
+                                                    @JsonProperty("tagDefinition") final TagDefinition tagDefinition,
+                                                    @JsonProperty("userToken") final UUID userToken) {
+        this.tagDefinitionId = tagDefinitionId;
         this.tagDefinition = tagDefinition;
         this.userToken = userToken;
     }
 
     @Override
     public UUID getTagDefinitionId() {
-        return tagId;
+        return tagDefinitionId;
     }
 
     @Override
@@ -42,6 +48,7 @@ public class DefaultControlTagDefinitionDeletionEvent implements ControlTagDefin
         return tagDefinition;
     }
 
+    @JsonIgnore
     @Override
     public BusEventType getBusEventType() {
         return BusEventType.CONTROL_TAGDEFINITION_DELETION;
@@ -57,7 +64,7 @@ public class DefaultControlTagDefinitionDeletionEvent implements ControlTagDefin
         final StringBuilder sb = new StringBuilder();
         sb.append("DefaultControlTagDefinitionDeletionEvent");
         sb.append("{tagDefinition=").append(tagDefinition);
-        sb.append(", tagId=").append(tagId);
+        sb.append(", tagDefinitionId=").append(tagDefinitionId);
         sb.append(", userToken=").append(userToken);
         sb.append('}');
         return sb.toString();
@@ -77,7 +84,7 @@ public class DefaultControlTagDefinitionDeletionEvent implements ControlTagDefin
         if (tagDefinition != null ? !tagDefinition.equals(that.tagDefinition) : that.tagDefinition != null) {
             return false;
         }
-        if (tagId != null ? !tagId.equals(that.tagId) : that.tagId != null) {
+        if (tagDefinitionId != null ? !tagDefinitionId.equals(that.tagDefinitionId) : that.tagDefinitionId != null) {
             return false;
         }
         if (userToken != null ? !userToken.equals(that.userToken) : that.userToken != null) {
@@ -89,7 +96,7 @@ public class DefaultControlTagDefinitionDeletionEvent implements ControlTagDefin
 
     @Override
     public int hashCode() {
-        int result = tagId != null ? tagId.hashCode() : 0;
+        int result = tagDefinitionId != null ? tagDefinitionId.hashCode() : 0;
         result = 31 * result + (tagDefinition != null ? tagDefinition.hashCode() : 0);
         result = 31 * result + (userToken != null ? userToken.hashCode() : 0);
         return result;
diff --git a/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultControlTagDeletionEvent.java b/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultControlTagDeletionEvent.java
index 79f97a9..326d50f 100644
--- a/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultControlTagDeletionEvent.java
+++ b/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultControlTagDeletionEvent.java
@@ -18,6 +18,9 @@ package com.ning.billing.util.tag.api.user;
 
 import java.util.UUID;
 
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ning.billing.util.dao.ObjectType;
 import com.ning.billing.util.tag.TagDefinition;
 import com.ning.billing.util.tag.api.ControlTagDeletionEvent;
@@ -29,7 +32,12 @@ public class DefaultControlTagDeletionEvent implements ControlTagDeletionEvent {
     final TagDefinition tagDefinition;
     final UUID userToken;
 
-    public DefaultControlTagDeletionEvent(final UUID tagId, final UUID objectId, final ObjectType objectType, final TagDefinition tagDefinition, final UUID userToken) {
+    @JsonCreator
+    public DefaultControlTagDeletionEvent(@JsonProperty("tagId") final UUID tagId,
+                                          @JsonProperty("objectId") final UUID objectId,
+                                          @JsonProperty("objectType") final ObjectType objectType,
+                                          @JsonProperty("tagDefinition") final TagDefinition tagDefinition,
+                                          @JsonProperty("userToken") final UUID userToken) {
         this.tagId = tagId;
         this.objectId = objectId;
         this.objectType = objectType;
@@ -57,6 +65,7 @@ public class DefaultControlTagDeletionEvent implements ControlTagDeletionEvent {
         return tagDefinition;
     }
 
+    @JsonIgnore
     @Override
     public BusEventType getBusEventType() {
         return BusEventType.CONTROL_TAG_DELETION;
diff --git a/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultUserTagCreationEvent.java b/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultUserTagCreationEvent.java
index 634addb..ae386f1 100644
--- a/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultUserTagCreationEvent.java
+++ b/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultUserTagCreationEvent.java
@@ -18,6 +18,9 @@ package com.ning.billing.util.tag.api.user;
 
 import java.util.UUID;
 
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ning.billing.util.dao.ObjectType;
 import com.ning.billing.util.tag.TagDefinition;
 import com.ning.billing.util.tag.api.UserTagCreationEvent;
@@ -29,7 +32,12 @@ public class DefaultUserTagCreationEvent implements UserTagCreationEvent {
     private final TagDefinition tagDefinition;
     private final UUID userToken;
 
-    public DefaultUserTagCreationEvent(final UUID tagId, final UUID objectId, final ObjectType objectType, final TagDefinition tagDefinition, final UUID userToken) {
+    @JsonCreator
+    public DefaultUserTagCreationEvent(@JsonProperty("tagId") final UUID tagId,
+                                       @JsonProperty("objectId") final UUID objectId,
+                                       @JsonProperty("objectType") final ObjectType objectType,
+                                       @JsonProperty("tagDefinition") final TagDefinition tagDefinition,
+                                       @JsonProperty("userToken") final UUID userToken) {
         this.tagId = tagId;
         this.objectId = objectId;
         this.objectType = objectType;
@@ -57,6 +65,7 @@ public class DefaultUserTagCreationEvent implements UserTagCreationEvent {
         return tagDefinition;
     }
 
+    @JsonIgnore
     @Override
     public BusEventType getBusEventType() {
         return BusEventType.USER_TAG_CREATION;
diff --git a/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultUserTagDefinitionCreationEvent.java b/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultUserTagDefinitionCreationEvent.java
index eaf2cae..5d86e4b 100644
--- a/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultUserTagDefinitionCreationEvent.java
+++ b/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultUserTagDefinitionCreationEvent.java
@@ -18,23 +18,29 @@ package com.ning.billing.util.tag.api.user;
 
 import java.util.UUID;
 
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ning.billing.util.tag.TagDefinition;
 import com.ning.billing.util.tag.api.UserTagDefinitionCreationEvent;
 
 public class DefaultUserTagDefinitionCreationEvent implements UserTagDefinitionCreationEvent {
-    private final UUID tagId;
+    private final UUID tagDefinitionId;
     private final TagDefinition tagDefinition;
     private final UUID userToken;
 
-    public DefaultUserTagDefinitionCreationEvent(final UUID tagDefinitionId, final TagDefinition tagDefinition, final UUID userToken) {
-        this.tagId = tagDefinitionId;
+    @JsonCreator
+    public DefaultUserTagDefinitionCreationEvent(@JsonProperty("tagDefinitionId") final UUID tagDefinitionId,
+                                                 @JsonProperty("tagDefinition") final TagDefinition tagDefinition,
+                                                 @JsonProperty("userToken") final UUID userToken) {
+        this.tagDefinitionId = tagDefinitionId;
         this.tagDefinition = tagDefinition;
         this.userToken = userToken;
     }
 
     @Override
     public UUID getTagDefinitionId() {
-        return tagId;
+        return tagDefinitionId;
     }
 
     @Override
@@ -42,6 +48,7 @@ public class DefaultUserTagDefinitionCreationEvent implements UserTagDefinitionC
         return tagDefinition;
     }
 
+    @JsonIgnore
     @Override
     public BusEventType getBusEventType() {
         return BusEventType.USER_TAGDEFINITION_CREATION;
@@ -57,7 +64,7 @@ public class DefaultUserTagDefinitionCreationEvent implements UserTagDefinitionC
         final StringBuilder sb = new StringBuilder();
         sb.append("DefaultUserTagDefinitionCreationEvent");
         sb.append("{tagDefinition=").append(tagDefinition);
-        sb.append(", tagId=").append(tagId);
+        sb.append(", tagDefinitionId=").append(tagDefinitionId);
         sb.append(", userToken=").append(userToken);
         sb.append('}');
         return sb.toString();
@@ -77,7 +84,7 @@ public class DefaultUserTagDefinitionCreationEvent implements UserTagDefinitionC
         if (tagDefinition != null ? !tagDefinition.equals(that.tagDefinition) : that.tagDefinition != null) {
             return false;
         }
-        if (tagId != null ? !tagId.equals(that.tagId) : that.tagId != null) {
+        if (tagDefinitionId != null ? !tagDefinitionId.equals(that.tagDefinitionId) : that.tagDefinitionId != null) {
             return false;
         }
         if (userToken != null ? !userToken.equals(that.userToken) : that.userToken != null) {
@@ -89,7 +96,7 @@ public class DefaultUserTagDefinitionCreationEvent implements UserTagDefinitionC
 
     @Override
     public int hashCode() {
-        int result = tagId != null ? tagId.hashCode() : 0;
+        int result = tagDefinitionId != null ? tagDefinitionId.hashCode() : 0;
         result = 31 * result + (tagDefinition != null ? tagDefinition.hashCode() : 0);
         result = 31 * result + (userToken != null ? userToken.hashCode() : 0);
         return result;
diff --git a/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultUserTagDefinitionDeletionEvent.java b/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultUserTagDefinitionDeletionEvent.java
index 391a099..a324d49 100644
--- a/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultUserTagDefinitionDeletionEvent.java
+++ b/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultUserTagDefinitionDeletionEvent.java
@@ -18,23 +18,29 @@ package com.ning.billing.util.tag.api.user;
 
 import java.util.UUID;
 
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ning.billing.util.tag.TagDefinition;
 import com.ning.billing.util.tag.api.UserTagDefinitionDeletionEvent;
 
 public class DefaultUserTagDefinitionDeletionEvent implements UserTagDefinitionDeletionEvent {
-    private final UUID tagId;
+    private final UUID tagDefinitionId;
     private final TagDefinition tagDefinition;
     private final UUID userToken;
 
-    public DefaultUserTagDefinitionDeletionEvent(final UUID tagDefinitionId, final TagDefinition tagDefinition, final UUID userToken) {
-        this.tagId = tagDefinitionId;
+    @JsonCreator
+    public DefaultUserTagDefinitionDeletionEvent(@JsonProperty("tagDefinitionId") final UUID tagDefinitionId,
+                                                 @JsonProperty("tagDefinition") final TagDefinition tagDefinition,
+                                                 @JsonProperty("userToken") final UUID userToken) {
+        this.tagDefinitionId = tagDefinitionId;
         this.tagDefinition = tagDefinition;
         this.userToken = userToken;
     }
 
     @Override
     public UUID getTagDefinitionId() {
-        return tagId;
+        return tagDefinitionId;
     }
 
     @Override
@@ -42,6 +48,7 @@ public class DefaultUserTagDefinitionDeletionEvent implements UserTagDefinitionD
         return tagDefinition;
     }
 
+    @JsonIgnore
     @Override
     public BusEventType getBusEventType() {
         return BusEventType.USER_TAGDEFINITION_DELETION;
@@ -57,7 +64,7 @@ public class DefaultUserTagDefinitionDeletionEvent implements UserTagDefinitionD
         final StringBuilder sb = new StringBuilder();
         sb.append("DefaultUserTagDefinitionDeletionEvent");
         sb.append("{tagDefinition=").append(tagDefinition);
-        sb.append(", tagId=").append(tagId);
+        sb.append(", tagDefinitionId=").append(tagDefinitionId);
         sb.append(", userToken=").append(userToken);
         sb.append('}');
         return sb.toString();
@@ -77,7 +84,7 @@ public class DefaultUserTagDefinitionDeletionEvent implements UserTagDefinitionD
         if (tagDefinition != null ? !tagDefinition.equals(that.tagDefinition) : that.tagDefinition != null) {
             return false;
         }
-        if (tagId != null ? !tagId.equals(that.tagId) : that.tagId != null) {
+        if (tagDefinitionId != null ? !tagDefinitionId.equals(that.tagDefinitionId) : that.tagDefinitionId != null) {
             return false;
         }
         if (userToken != null ? !userToken.equals(that.userToken) : that.userToken != null) {
@@ -89,7 +96,7 @@ public class DefaultUserTagDefinitionDeletionEvent implements UserTagDefinitionD
 
     @Override
     public int hashCode() {
-        int result = tagId != null ? tagId.hashCode() : 0;
+        int result = tagDefinitionId != null ? tagDefinitionId.hashCode() : 0;
         result = 31 * result + (tagDefinition != null ? tagDefinition.hashCode() : 0);
         result = 31 * result + (userToken != null ? userToken.hashCode() : 0);
         return result;
diff --git a/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultUserTagDeletionEvent.java b/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultUserTagDeletionEvent.java
index d073740..a19f97b 100644
--- a/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultUserTagDeletionEvent.java
+++ b/util/src/main/java/com/ning/billing/util/tag/api/user/DefaultUserTagDeletionEvent.java
@@ -18,6 +18,9 @@ package com.ning.billing.util.tag.api.user;
 
 import java.util.UUID;
 
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ning.billing.util.dao.ObjectType;
 import com.ning.billing.util.tag.TagDefinition;
 import com.ning.billing.util.tag.api.UserTagDeletionEvent;
@@ -29,7 +32,12 @@ public class DefaultUserTagDeletionEvent implements UserTagDeletionEvent {
     private final TagDefinition tagDefinition;
     private final UUID userToken;
 
-    public DefaultUserTagDeletionEvent(final UUID tagId, final UUID objectId, final ObjectType objectType, final TagDefinition tagDefinition, final UUID userToken) {
+    @JsonCreator
+    public DefaultUserTagDeletionEvent(@JsonProperty("tagId") final UUID tagId,
+                                       @JsonProperty("objectId") final UUID objectId,
+                                       @JsonProperty("objectType") final ObjectType objectType,
+                                       @JsonProperty("tagDefinition") final TagDefinition tagDefinition,
+                                       @JsonProperty("userToken") final UUID userToken) {
         this.tagId = tagId;
         this.objectId = objectId;
         this.objectType = objectType;
@@ -57,6 +65,7 @@ public class DefaultUserTagDeletionEvent implements UserTagDeletionEvent {
         return tagDefinition;
     }
 
+    @JsonIgnore
     @Override
     public BusEventType getBusEventType() {
         return BusEventType.USER_TAG_DELETION;
diff --git a/util/src/main/java/com/ning/billing/util/tag/DefaultTagDefinition.java b/util/src/main/java/com/ning/billing/util/tag/DefaultTagDefinition.java
index d9f714d..f0e80ad 100644
--- a/util/src/main/java/com/ning/billing/util/tag/DefaultTagDefinition.java
+++ b/util/src/main/java/com/ning/billing/util/tag/DefaultTagDefinition.java
@@ -18,22 +18,28 @@ package com.ning.billing.util.tag;
 
 import java.util.UUID;
 
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ning.billing.util.entity.EntityBase;
 
 public class DefaultTagDefinition extends EntityBase implements TagDefinition {
     private final String name;
     private final String description;
-    private final Boolean isControlTag;
+    private final Boolean controlTag;
 
     public DefaultTagDefinition(final String name, final String description, final Boolean isControlTag) {
         this(UUID.randomUUID(), name, description, isControlTag);
     }
 
-    public DefaultTagDefinition(final UUID id, final String name, final String description, final Boolean isControlTag) {
+    @JsonCreator
+    public DefaultTagDefinition(@JsonProperty("id") final UUID id,
+                                @JsonProperty("name") final String name,
+                                @JsonProperty("description") final String description,
+                                @JsonProperty("controlTag") final Boolean controlTag) {
         super(id);
         this.name = name;
         this.description = description;
-        this.isControlTag = isControlTag;
+        this.controlTag = controlTag;
     }
 
     @Override
@@ -48,7 +54,7 @@ public class DefaultTagDefinition extends EntityBase implements TagDefinition {
 
     @Override
     public Boolean isControlTag() {
-        return isControlTag;
+        return controlTag;
     }
 
     @Override
@@ -57,7 +63,7 @@ public class DefaultTagDefinition extends EntityBase implements TagDefinition {
         sb.append("DefaultTagDefinition");
         sb.append("{description='").append(description).append('\'');
         sb.append(", name='").append(name).append('\'');
-        sb.append(", isControlTag=").append(isControlTag);
+        sb.append(", controlTag=").append(controlTag);
         sb.append('}');
         return sb.toString();
     }
@@ -76,7 +82,7 @@ public class DefaultTagDefinition extends EntityBase implements TagDefinition {
         if (description != null ? !description.equals(that.description) : that.description != null) {
             return false;
         }
-        if (isControlTag != null ? !isControlTag.equals(that.isControlTag) : that.isControlTag != null) {
+        if (controlTag != null ? !controlTag.equals(that.controlTag) : that.controlTag != null) {
             return false;
         }
         if (name != null ? !name.equals(that.name) : that.name != null) {
@@ -90,7 +96,7 @@ public class DefaultTagDefinition extends EntityBase implements TagDefinition {
     public int hashCode() {
         int result = name != null ? name.hashCode() : 0;
         result = 31 * result + (description != null ? description.hashCode() : 0);
-        result = 31 * result + (isControlTag != null ? isControlTag.hashCode() : 0);
+        result = 31 * result + (controlTag != null ? controlTag.hashCode() : 0);
         return result;
     }
 }
diff --git a/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultControlTagCreationEvent.java b/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultControlTagCreationEvent.java
index f8a594a..5ebd270 100644
--- a/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultControlTagCreationEvent.java
+++ b/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultControlTagCreationEvent.java
@@ -23,6 +23,7 @@ import org.testng.annotations.Test;
 
 import com.ning.billing.util.bus.BusEvent;
 import com.ning.billing.util.dao.ObjectType;
+import com.ning.billing.util.jackson.ObjectMapper;
 import com.ning.billing.util.tag.DefaultTagDefinition;
 import com.ning.billing.util.tag.TagDefinition;
 
@@ -56,4 +57,25 @@ public class TestDefaultControlTagCreationEvent {
         Assert.assertTrue(event.equals(event));
         Assert.assertTrue(event.equals(new DefaultControlTagCreationEvent(tagId, objectId, objectType, tagDefinition, userToken)));
     }
+
+    @Test(groups = "fast")
+    public void testSerialization() throws Exception {
+        final ObjectMapper objectMapper = new ObjectMapper();
+
+        final UUID tagId = UUID.randomUUID();
+        final UUID objectId = UUID.randomUUID();
+        final ObjectType objectType = ObjectType.ACCOUNT_EMAIL;
+        final UUID tagDefinitionId = UUID.randomUUID();
+        final String tagDefinitionName = UUID.randomUUID().toString();
+        final String tagDefinitionDescription = UUID.randomUUID().toString();
+        final boolean controlTag = true;
+        final TagDefinition tagDefinition = new DefaultTagDefinition(tagDefinitionId, tagDefinitionName, tagDefinitionDescription, controlTag);
+        final UUID userToken = UUID.randomUUID();
+
+        final DefaultControlTagCreationEvent event = new DefaultControlTagCreationEvent(tagId, objectId, objectType, tagDefinition, userToken);
+
+        final String json = objectMapper.writeValueAsString(event);
+        final DefaultControlTagCreationEvent fromJson = objectMapper.readValue(json, DefaultControlTagCreationEvent.class);
+        Assert.assertEquals(fromJson, event);
+    }
 }
diff --git a/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultControlTagDefinitionCreationEvent.java b/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultControlTagDefinitionCreationEvent.java
index 7f2260b..05d4c05 100644
--- a/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultControlTagDefinitionCreationEvent.java
+++ b/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultControlTagDefinitionCreationEvent.java
@@ -22,6 +22,7 @@ import org.testng.Assert;
 import org.testng.annotations.Test;
 
 import com.ning.billing.util.bus.BusEvent;
+import com.ning.billing.util.jackson.ObjectMapper;
 import com.ning.billing.util.tag.DefaultTagDefinition;
 import com.ning.billing.util.tag.TagDefinition;
 
@@ -50,4 +51,22 @@ public class TestDefaultControlTagDefinitionCreationEvent {
         Assert.assertTrue(event.equals(event));
         Assert.assertTrue(event.equals(new DefaultControlTagDefinitionCreationEvent(tagDefinitionId, tagDefinition, userToken)));
     }
+
+    @Test(groups = "fast")
+    public void testSerialization() throws Exception {
+        final ObjectMapper objectMapper = new ObjectMapper();
+
+        final UUID tagDefinitionId = UUID.randomUUID();
+        final String tagDefinitionName = UUID.randomUUID().toString();
+        final String tagDefinitionDescription = UUID.randomUUID().toString();
+        final boolean controlTag = true;
+        final TagDefinition tagDefinition = new DefaultTagDefinition(tagDefinitionId, tagDefinitionName, tagDefinitionDescription, controlTag);
+        final UUID userToken = UUID.randomUUID();
+
+        final DefaultControlTagDefinitionCreationEvent event = new DefaultControlTagDefinitionCreationEvent(tagDefinitionId, tagDefinition, userToken);
+
+        final String json = objectMapper.writeValueAsString(event);
+        final DefaultControlTagDefinitionCreationEvent fromJson = objectMapper.readValue(json, DefaultControlTagDefinitionCreationEvent.class);
+        Assert.assertEquals(fromJson, event);
+    }
 }
diff --git a/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultControlTagDefinitionDeletionEvent.java b/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultControlTagDefinitionDeletionEvent.java
index 26d2322..08059d1 100644
--- a/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultControlTagDefinitionDeletionEvent.java
+++ b/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultControlTagDefinitionDeletionEvent.java
@@ -22,6 +22,7 @@ import org.testng.Assert;
 import org.testng.annotations.Test;
 
 import com.ning.billing.util.bus.BusEvent;
+import com.ning.billing.util.jackson.ObjectMapper;
 import com.ning.billing.util.tag.DefaultTagDefinition;
 import com.ning.billing.util.tag.TagDefinition;
 
@@ -50,4 +51,22 @@ public class TestDefaultControlTagDefinitionDeletionEvent {
         Assert.assertTrue(event.equals(event));
         Assert.assertTrue(event.equals(new DefaultControlTagDefinitionDeletionEvent(tagDefinitionId, tagDefinition, userToken)));
     }
+
+    @Test(groups = "fast")
+    public void testSerialization() throws Exception {
+        final ObjectMapper objectMapper = new ObjectMapper();
+
+        final UUID tagDefinitionId = UUID.randomUUID();
+        final String tagDefinitionName = UUID.randomUUID().toString();
+        final String tagDefinitionDescription = UUID.randomUUID().toString();
+        final boolean controlTag = true;
+        final TagDefinition tagDefinition = new DefaultTagDefinition(tagDefinitionId, tagDefinitionName, tagDefinitionDescription, controlTag);
+        final UUID userToken = UUID.randomUUID();
+
+        final DefaultControlTagDefinitionDeletionEvent event = new DefaultControlTagDefinitionDeletionEvent(tagDefinitionId, tagDefinition, userToken);
+
+        final String json = objectMapper.writeValueAsString(event);
+        final DefaultControlTagDefinitionDeletionEvent fromJson = objectMapper.readValue(json, DefaultControlTagDefinitionDeletionEvent.class);
+        Assert.assertEquals(fromJson, event);
+    }
 }
diff --git a/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultControlTagDeletionEvent.java b/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultControlTagDeletionEvent.java
index 089ee63..692149a 100644
--- a/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultControlTagDeletionEvent.java
+++ b/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultControlTagDeletionEvent.java
@@ -23,6 +23,7 @@ import org.testng.annotations.Test;
 
 import com.ning.billing.util.bus.BusEvent;
 import com.ning.billing.util.dao.ObjectType;
+import com.ning.billing.util.jackson.ObjectMapper;
 import com.ning.billing.util.tag.DefaultTagDefinition;
 import com.ning.billing.util.tag.TagDefinition;
 
@@ -56,4 +57,25 @@ public class TestDefaultControlTagDeletionEvent {
         Assert.assertTrue(event.equals(event));
         Assert.assertTrue(event.equals(new DefaultControlTagDeletionEvent(tagId, objectId, objectType, tagDefinition, userToken)));
     }
+
+    @Test(groups = "fast")
+    public void testSerialization() throws Exception {
+        final ObjectMapper objectMapper = new ObjectMapper();
+
+        final UUID tagId = UUID.randomUUID();
+        final UUID objectId = UUID.randomUUID();
+        final ObjectType objectType = ObjectType.ACCOUNT_EMAIL;
+        final UUID tagDefinitionId = UUID.randomUUID();
+        final String tagDefinitionName = UUID.randomUUID().toString();
+        final String tagDefinitionDescription = UUID.randomUUID().toString();
+        final boolean controlTag = true;
+        final TagDefinition tagDefinition = new DefaultTagDefinition(tagDefinitionId, tagDefinitionName, tagDefinitionDescription, controlTag);
+        final UUID userToken = UUID.randomUUID();
+
+        final DefaultControlTagDeletionEvent event = new DefaultControlTagDeletionEvent(tagId, objectId, objectType, tagDefinition, userToken);
+
+        final String json = objectMapper.writeValueAsString(event);
+        final DefaultControlTagDeletionEvent fromJson = objectMapper.readValue(json, DefaultControlTagDeletionEvent.class);
+        Assert.assertEquals(fromJson, event);
+    }
 }
diff --git a/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultUserTagCreationEvent.java b/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultUserTagCreationEvent.java
index 72e5f98..4d8162a 100644
--- a/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultUserTagCreationEvent.java
+++ b/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultUserTagCreationEvent.java
@@ -23,6 +23,7 @@ import org.testng.annotations.Test;
 
 import com.ning.billing.util.bus.BusEvent;
 import com.ning.billing.util.dao.ObjectType;
+import com.ning.billing.util.jackson.ObjectMapper;
 import com.ning.billing.util.tag.DefaultTagDefinition;
 import com.ning.billing.util.tag.TagDefinition;
 
@@ -56,4 +57,25 @@ public class TestDefaultUserTagCreationEvent {
         Assert.assertTrue(event.equals(event));
         Assert.assertTrue(event.equals(new DefaultUserTagCreationEvent(tagId, objectId, objectType, tagDefinition, userToken)));
     }
+
+    @Test(groups = "fast")
+    public void testSerialization() throws Exception {
+        final ObjectMapper objectMapper = new ObjectMapper();
+
+        final UUID tagId = UUID.randomUUID();
+        final UUID objectId = UUID.randomUUID();
+        final ObjectType objectType = ObjectType.ACCOUNT_EMAIL;
+        final UUID tagDefinitionId = UUID.randomUUID();
+        final String tagDefinitionName = UUID.randomUUID().toString();
+        final String tagDefinitionDescription = UUID.randomUUID().toString();
+        final boolean controlTag = true;
+        final TagDefinition tagDefinition = new DefaultTagDefinition(tagDefinitionId, tagDefinitionName, tagDefinitionDescription, controlTag);
+        final UUID userToken = UUID.randomUUID();
+
+        final DefaultUserTagCreationEvent event = new DefaultUserTagCreationEvent(tagId, objectId, objectType, tagDefinition, userToken);
+
+        final String json = objectMapper.writeValueAsString(event);
+        final DefaultUserTagCreationEvent fromJson = objectMapper.readValue(json, DefaultUserTagCreationEvent.class);
+        Assert.assertEquals(fromJson, event);
+    }
 }
diff --git a/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultUserTagDefinitionCreationEvent.java b/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultUserTagDefinitionCreationEvent.java
index 9c033b9..89507d3 100644
--- a/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultUserTagDefinitionCreationEvent.java
+++ b/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultUserTagDefinitionCreationEvent.java
@@ -22,6 +22,7 @@ import org.testng.Assert;
 import org.testng.annotations.Test;
 
 import com.ning.billing.util.bus.BusEvent;
+import com.ning.billing.util.jackson.ObjectMapper;
 import com.ning.billing.util.tag.DefaultTagDefinition;
 import com.ning.billing.util.tag.TagDefinition;
 
@@ -50,4 +51,22 @@ public class TestDefaultUserTagDefinitionCreationEvent {
         Assert.assertTrue(event.equals(event));
         Assert.assertTrue(event.equals(new DefaultUserTagDefinitionCreationEvent(tagDefinitionId, tagDefinition, userToken)));
     }
+
+    @Test(groups = "fast")
+    public void testSerialization() throws Exception {
+        final ObjectMapper objectMapper = new ObjectMapper();
+
+        final UUID tagDefinitionId = UUID.randomUUID();
+        final String tagDefinitionName = UUID.randomUUID().toString();
+        final String tagDefinitionDescription = UUID.randomUUID().toString();
+        final boolean controlTag = true;
+        final TagDefinition tagDefinition = new DefaultTagDefinition(tagDefinitionId, tagDefinitionName, tagDefinitionDescription, controlTag);
+        final UUID userToken = UUID.randomUUID();
+
+        final DefaultUserTagDefinitionCreationEvent event = new DefaultUserTagDefinitionCreationEvent(tagDefinitionId, tagDefinition, userToken);
+
+        final String json = objectMapper.writeValueAsString(event);
+        final DefaultUserTagDefinitionCreationEvent fromJson = objectMapper.readValue(json, DefaultUserTagDefinitionCreationEvent.class);
+        Assert.assertEquals(fromJson, event);
+    }
 }
diff --git a/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultUserTagDefinitionDeletionEvent.java b/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultUserTagDefinitionDeletionEvent.java
index b5f7615..bdcfaff 100644
--- a/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultUserTagDefinitionDeletionEvent.java
+++ b/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultUserTagDefinitionDeletionEvent.java
@@ -22,6 +22,7 @@ import org.testng.Assert;
 import org.testng.annotations.Test;
 
 import com.ning.billing.util.bus.BusEvent;
+import com.ning.billing.util.jackson.ObjectMapper;
 import com.ning.billing.util.tag.DefaultTagDefinition;
 import com.ning.billing.util.tag.TagDefinition;
 
@@ -50,4 +51,22 @@ public class TestDefaultUserTagDefinitionDeletionEvent {
         Assert.assertTrue(event.equals(event));
         Assert.assertTrue(event.equals(new DefaultUserTagDefinitionDeletionEvent(tagDefinitionId, tagDefinition, userToken)));
     }
+
+    @Test(groups = "fast")
+    public void testSerialization() throws Exception {
+        final ObjectMapper objectMapper = new ObjectMapper();
+
+        final UUID tagDefinitionId = UUID.randomUUID();
+        final String tagDefinitionName = UUID.randomUUID().toString();
+        final String tagDefinitionDescription = UUID.randomUUID().toString();
+        final boolean controlTag = true;
+        final TagDefinition tagDefinition = new DefaultTagDefinition(tagDefinitionId, tagDefinitionName, tagDefinitionDescription, controlTag);
+        final UUID userToken = UUID.randomUUID();
+
+        final DefaultUserTagDefinitionDeletionEvent event = new DefaultUserTagDefinitionDeletionEvent(tagDefinitionId, tagDefinition, userToken);
+
+        final String json = objectMapper.writeValueAsString(event);
+        final DefaultUserTagDefinitionDeletionEvent fromJson = objectMapper.readValue(json, DefaultUserTagDefinitionDeletionEvent.class);
+        Assert.assertEquals(fromJson, event);
+    }
 }
diff --git a/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultUserTagDeletionEvent.java b/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultUserTagDeletionEvent.java
index ed5b073..ff022ef 100644
--- a/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultUserTagDeletionEvent.java
+++ b/util/src/test/java/com/ning/billing/util/tag/api/user/TestDefaultUserTagDeletionEvent.java
@@ -23,6 +23,7 @@ import org.testng.annotations.Test;
 
 import com.ning.billing.util.bus.BusEvent;
 import com.ning.billing.util.dao.ObjectType;
+import com.ning.billing.util.jackson.ObjectMapper;
 import com.ning.billing.util.tag.DefaultTagDefinition;
 import com.ning.billing.util.tag.TagDefinition;
 
@@ -56,4 +57,25 @@ public class TestDefaultUserTagDeletionEvent {
         Assert.assertTrue(event.equals(event));
         Assert.assertTrue(event.equals(new DefaultUserTagDeletionEvent(tagId, objectId, objectType, tagDefinition, userToken)));
     }
+
+    @Test(groups = "fast")
+    public void testSerialization() throws Exception {
+        final ObjectMapper objectMapper = new ObjectMapper();
+
+        final UUID tagId = UUID.randomUUID();
+        final UUID objectId = UUID.randomUUID();
+        final ObjectType objectType = ObjectType.ACCOUNT_EMAIL;
+        final UUID tagDefinitionId = UUID.randomUUID();
+        final String tagDefinitionName = UUID.randomUUID().toString();
+        final String tagDefinitionDescription = UUID.randomUUID().toString();
+        final boolean controlTag = true;
+        final TagDefinition tagDefinition = new DefaultTagDefinition(tagDefinitionId, tagDefinitionName, tagDefinitionDescription, controlTag);
+        final UUID userToken = UUID.randomUUID();
+
+        final DefaultUserTagDeletionEvent event = new DefaultUserTagDeletionEvent(tagId, objectId, objectType, tagDefinition, userToken);
+
+        final String json = objectMapper.writeValueAsString(event);
+        final DefaultUserTagDeletionEvent fromJson = objectMapper.readValue(json, DefaultUserTagDeletionEvent.class);
+        Assert.assertEquals(fromJson, event);
+    }
 }