Details
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/AuditLogJson.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/AuditLogJson.java
index b79e883..2ed613a 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/AuditLogJson.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/AuditLogJson.java
@@ -22,6 +22,7 @@ import org.joda.time.DateTime;
import org.killbill.billing.ObjectType;
import org.killbill.billing.util.audit.AuditLog;
+import org.killbill.billing.util.audit.AuditLogWithHistory;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -42,6 +43,8 @@ public class AuditLogJson {
private final ObjectType objectType;
private final UUID objectId;
+ private final Object history;
+
@JsonCreator
public AuditLogJson(@JsonProperty("changeType") final String changeType,
@JsonProperty("changeDate") final DateTime changeDate,
@@ -50,7 +53,8 @@ public class AuditLogJson {
@JsonProperty("changedBy") final String changedBy,
@JsonProperty("reasonCode") final String reasonCode,
@JsonProperty("comments") final String comments,
- @JsonProperty("userToken") final String userToken) {
+ @JsonProperty("userToken") final String userToken,
+ @JsonProperty("history") final Object history) {
this.changeType = changeType;
this.changeDate = changeDate;
this.changedBy = changedBy;
@@ -59,11 +63,17 @@ public class AuditLogJson {
this.userToken = userToken;
this.objectType = objectType;
this.objectId = objectId;
+ this.history = history;
+ }
+
+ public AuditLogJson(final AuditLogWithHistory auditLogWithHistory) {
+ this(auditLogWithHistory.getChangeType().toString(), auditLogWithHistory.getCreatedDate(), auditLogWithHistory.getAuditedObjectType(), auditLogWithHistory.getAuditedEntityId(), auditLogWithHistory.getUserName(), auditLogWithHistory.getReasonCode(),
+ auditLogWithHistory.getComment(), auditLogWithHistory.getUserToken(), auditLogWithHistory.getEntity());
}
public AuditLogJson(final AuditLog auditLog) {
this(auditLog.getChangeType().toString(), auditLog.getCreatedDate(), auditLog.getAuditedObjectType(), auditLog.getAuditedEntityId(), auditLog.getUserName(), auditLog.getReasonCode(),
- auditLog.getComment(), auditLog.getUserToken());
+ auditLog.getComment(), auditLog.getUserToken(), null);
}
public String getChangeType() {
@@ -98,6 +108,10 @@ public class AuditLogJson {
return objectId;
}
+ public Object getHistory() {
+ return history;
+ }
+
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
index cef00b5..cb010c2 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
@@ -121,6 +121,7 @@ import org.killbill.billing.util.api.TagDefinitionApiException;
import org.killbill.billing.util.api.TagUserApi;
import org.killbill.billing.util.audit.AccountAuditLogs;
import org.killbill.billing.util.audit.AuditLog;
+import org.killbill.billing.util.audit.AuditLogWithHistory;
import org.killbill.billing.util.callcontext.CallContext;
import org.killbill.billing.util.callcontext.TenantContext;
import org.killbill.billing.util.config.definition.JaxrsConfig;
@@ -1501,10 +1502,31 @@ public class AccountResource extends JaxRsResourceBase {
@javax.ws.rs.core.Context final HttpServletRequest request) throws AccountApiException {
final TenantContext tenantContext = context.createTenantContextWithAccountId(accountId, request);
final AccountAuditLogs accountAuditLogs = auditUserApi.getAccountAuditLogs(accountId, AuditLevel.FULL, tenantContext);
-
return Response.status(Status.OK).entity(getAuditLogs(accountAuditLogs)).build();
}
+ @TimedResource
+ @GET
+ @Path("/{accountId:" + UUID_PATTERN + "}/" + AUDIT_LOG_WITH_HISTORY)
+ @Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve account audit logs with history by account id", response = AuditLogJson.class, responseContainer = "List")
+ @ApiResponses(value = {@ApiResponse(code = 404, message = "Account not found")})
+ public Response getAccountAuditLogsWithHistory(@PathParam("accountId") final UUID accountId,
+ @javax.ws.rs.core.Context final HttpServletRequest request) throws AccountApiException {
+ final TenantContext tenantContext = context.createTenantContextWithAccountId(accountId, request);
+ final List<AuditLogWithHistory> auditLogWithHistory = accountUserApi.getAuditLogsWithHistoryForId(accountId, AuditLevel.FULL, tenantContext);
+ return Response.status(Status.OK).entity(getAuditLogsWithHistory(auditLogWithHistory)).build();
+ }
+
+ private List<AuditLogJson> getAuditLogsWithHistory(List<AuditLogWithHistory> auditLogWithHistory) {
+ return ImmutableList.<AuditLogJson>copyOf(Collections2.transform(auditLogWithHistory, new Function<AuditLogWithHistory, AuditLogJson>() {
+ @Override
+ public AuditLogJson apply(@Nullable final AuditLogWithHistory input) {
+ return new AuditLogJson(input);
+ }
+ }));
+ }
+
private List<AuditLogJson> getAuditLogs(AccountAuditLogs accountAuditLogs) {
if (accountAuditLogs.getAuditLogs() == null) {
return null;
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
index 3073f8c..c95abc4 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
@@ -304,5 +304,6 @@ public interface JaxrsResource {
public static final String QUERY_INCLUDED_DELETED = "includedDeleted";
public static final String AUDIT_LOG = "auditLogs";
+ public static final String AUDIT_LOG_WITH_HISTORY = "auditLogsWithHistory";
}
diff --git a/jaxrs/src/test/java/org/killbill/billing/jaxrs/JaxrsTestUtils.java b/jaxrs/src/test/java/org/killbill/billing/jaxrs/JaxrsTestUtils.java
index 3f88ac8..1055887 100644
--- a/jaxrs/src/test/java/org/killbill/billing/jaxrs/JaxrsTestUtils.java
+++ b/jaxrs/src/test/java/org/killbill/billing/jaxrs/JaxrsTestUtils.java
@@ -31,7 +31,7 @@ public abstract class JaxrsTestUtils {
final List<AuditLogJson> auditLogs = new ArrayList<AuditLogJson>();
for (int i = 0; i < 20; i++) {
auditLogs.add(new AuditLogJson(UUIDs.randomUUID().toString(), changeDate, ObjectType.BUNDLE, UUIDs.randomUUID(), UUIDs.randomUUID().toString(),
- UUIDs.randomUUID().toString(), UUIDs.randomUUID().toString(), UUIDs.randomUUID().toString()));
+ UUIDs.randomUUID().toString(), UUIDs.randomUUID().toString(), UUIDs.randomUUID().toString(), null));
}
return auditLogs;
diff --git a/jaxrs/src/test/java/org/killbill/billing/jaxrs/json/TestAuditLogJson.java b/jaxrs/src/test/java/org/killbill/billing/jaxrs/json/TestAuditLogJson.java
index 6dce63f..92b77c5 100644
--- a/jaxrs/src/test/java/org/killbill/billing/jaxrs/json/TestAuditLogJson.java
+++ b/jaxrs/src/test/java/org/killbill/billing/jaxrs/json/TestAuditLogJson.java
@@ -44,7 +44,7 @@ public class TestAuditLogJson extends JaxrsTestSuiteNoDB {
final UUID objectId = UUID.randomUUID();
final ObjectType objectType = ObjectType.BUNDLE;
- final AuditLogJson auditLogJson = new AuditLogJson(changeType, changeDate, objectType, objectId, changedBy, reasonCode, comments, userToken);
+ final AuditLogJson auditLogJson = new AuditLogJson(changeType, changeDate, objectType, objectId, changedBy, reasonCode, comments, userToken, null);
Assert.assertEquals(auditLogJson.getChangeType(), changeType);
Assert.assertEquals(auditLogJson.getChangeDate(), changeDate);
Assert.assertEquals(auditLogJson.getChangedBy(), changedBy);
@@ -63,7 +63,8 @@ public class TestAuditLogJson extends JaxrsTestSuiteNoDB {
"\"changedBy\":\"" + auditLogJson.getChangedBy() + "\"," +
"\"reasonCode\":\"" + auditLogJson.getReasonCode() + "\"," +
"\"comments\":\"" + auditLogJson.getComments() + "\"," +
- "\"userToken\":\"" + auditLogJson.getUserToken() + "\"}");
+ "\"userToken\":\"" + auditLogJson.getUserToken() + "\"," +
+ "\"history\":" + auditLogJson.getHistory() + "}");
final AuditLogJson fromJson = mapper.readValue(asJson, AuditLogJson.class);
Assert.assertEquals(fromJson, auditLogJson);