killbill-memoizeit

jaxrs: populate tag definition audit logs Signed-off-by:

2/4/2014 5:59:34 PM

Details

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 b955b1b..a271369 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
@@ -21,6 +21,7 @@ import java.util.List;
 import javax.annotation.Nullable;
 
 import com.ning.billing.ObjectType;
+import com.ning.billing.util.audit.AuditLog;
 import com.ning.billing.util.tag.TagDefinition;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
@@ -42,7 +43,9 @@ public class TagDefinitionJson extends JsonBase {
                              @JsonProperty("isControlTag") final Boolean isControlTag,
                              @JsonProperty("name") final String name,
                              @JsonProperty("description") @Nullable final String description,
-                             @JsonProperty("applicableObjectTypes") @Nullable final List<String> applicableObjectTypes) {
+                             @JsonProperty("applicableObjectTypes") @Nullable final List<String> applicableObjectTypes,
+                             @JsonProperty("auditLogs") @Nullable final List<AuditLogJson> auditLogs) {
+        super(auditLogs);
         this.id = id;
         this.isControlTag = isControlTag;
         this.name = name;
@@ -50,18 +53,22 @@ public class TagDefinitionJson extends JsonBase {
         this.applicableObjectTypes = applicableObjectTypes;
     }
 
-    public TagDefinitionJson(final TagDefinition tagDefinition) {
-        this(tagDefinition.getId().toString(), tagDefinition.isControlTag(), tagDefinition.getName(),
-             tagDefinition.getDescription(), ImmutableList.<String>copyOf(Collections2.transform(tagDefinition.getApplicableObjectTypes(), new Function<ObjectType, String>() {
-            @Override
-            public String apply(@Nullable final ObjectType input) {
-                if (input == null) {
-                    return "";
-                } else {
-                    return input.toString();
-                }
-            }
-        })));
+    public TagDefinitionJson(final TagDefinition tagDefinition, @Nullable final List<AuditLog> auditLogs) {
+        this(tagDefinition.getId().toString(),
+             tagDefinition.isControlTag(),
+             tagDefinition.getName(),
+             tagDefinition.getDescription(),
+             ImmutableList.<String>copyOf(Collections2.transform(tagDefinition.getApplicableObjectTypes(), new Function<ObjectType, String>() {
+                 @Override
+                 public String apply(@Nullable final ObjectType input) {
+                     if (input == null) {
+                         return "";
+                     } else {
+                         return input.toString();
+                     }
+                 }
+             })),
+             toAuditLogJson(auditLogs));
     }
 
     public String getId() {
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/TagDefinitionResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/TagDefinitionResource.java
index 8d29465..61e7349 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/TagDefinitionResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/TagDefinitionResource.java
@@ -16,6 +16,7 @@
 
 package com.ning.billing.jaxrs.resources;
 
+import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.UUID;
@@ -23,12 +24,14 @@ import java.util.UUID;
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
 import javax.ws.rs.GET;
 import javax.ws.rs.HeaderParam;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
 import javax.ws.rs.core.UriInfo;
@@ -43,6 +46,8 @@ import com.ning.billing.util.api.AuditUserApi;
 import com.ning.billing.util.api.CustomFieldUserApi;
 import com.ning.billing.util.api.TagDefinitionApiException;
 import com.ning.billing.util.api.TagUserApi;
+import com.ning.billing.util.audit.AuditLog;
+import com.ning.billing.util.callcontext.TenantContext;
 import com.ning.billing.util.tag.TagDefinition;
 
 import com.google.common.base.Preconditions;
@@ -68,12 +73,15 @@ public class TagDefinitionResource extends JaxRsResourceBase {
 
     @GET
     @Produces(APPLICATION_JSON)
-    public Response getTagDefinitions(@javax.ws.rs.core.Context final HttpServletRequest request) {
-        final List<TagDefinition> tagDefinitions = tagUserApi.getTagDefinitions(context.createContext(request));
-
-        final List<TagDefinitionJson> result = new LinkedList<TagDefinitionJson>();
-        for (final TagDefinition cur : tagDefinitions) {
-            result.add(new TagDefinitionJson(cur));
+    public Response getTagDefinitions(@javax.ws.rs.core.Context final HttpServletRequest request,
+                                      @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode) {
+        final TenantContext tenantContext = context.createContext(request);
+        final List<TagDefinition> tagDefinitions = tagUserApi.getTagDefinitions(tenantContext);
+
+        final Collection<TagDefinitionJson> result = new LinkedList<TagDefinitionJson>();
+        for (final TagDefinition tagDefinition : tagDefinitions) {
+            final List<AuditLog> auditLogs = auditUserApi.getAuditLogs(tagDefinition.getId(), ObjectType.TAG_DEFINITION, auditMode.getLevel(), tenantContext);
+            result.add(new TagDefinitionJson(tagDefinition, auditLogs));
         }
 
         return Response.status(Status.OK).entity(result).build();
@@ -83,9 +91,12 @@ public class TagDefinitionResource extends JaxRsResourceBase {
     @Path("/{tagDefinitionId:" + UUID_PATTERN + "}")
     @Produces(APPLICATION_JSON)
     public Response getTagDefinition(@PathParam("tagDefinitionId") final String tagDefId,
+                                     @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
                                      @javax.ws.rs.core.Context final HttpServletRequest request) throws TagDefinitionApiException {
-        final TagDefinition tagDef = tagUserApi.getTagDefinition(UUID.fromString(tagDefId), context.createContext(request));
-        final TagDefinitionJson json = new TagDefinitionJson(tagDef);
+        final TenantContext tenantContext = context.createContext(request);
+        final TagDefinition tagDefinition = tagUserApi.getTagDefinition(UUID.fromString(tagDefId), tenantContext);
+        final List<AuditLog> auditLogs = auditUserApi.getAuditLogs(tagDefinition.getId(), ObjectType.TAG_DEFINITION, auditMode.getLevel(), tenantContext);
+        final TagDefinitionJson json = new TagDefinitionJson(tagDefinition, auditLogs);
         return Response.status(Status.OK).entity(json).build();
     }
 
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 21e2cbc..0f937de 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
@@ -34,7 +34,7 @@ public class TestTagDefinitionJson extends JaxrsTestSuiteNoDB {
         final String name = UUID.randomUUID().toString();
         final String description = UUID.randomUUID().toString();
         final ImmutableList<String> applicableObjectTypes = ImmutableList.<String>of(UUID.randomUUID().toString());
-        final TagDefinitionJson tagDefinitionJson = new TagDefinitionJson(id, isControlTag, name, description, applicableObjectTypes);
+        final TagDefinitionJson tagDefinitionJson = new TagDefinitionJson(id, isControlTag, name, description, applicableObjectTypes, null);
         Assert.assertEquals(tagDefinitionJson.getId(), id);
         Assert.assertEquals(tagDefinitionJson.isControlTag(), isControlTag);
         Assert.assertEquals(tagDefinitionJson.getName(), name);