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);