From bd64c881597734566a96abc9282b5f68c74ac4b9 Mon Sep 17 00:00:00 2001 From: Pierre-Alexandre Meyer Date: Fri, 5 Oct 2012 21:50:03 -0700 Subject: [PATCH] util: make sure to not drop context information in InternalCallContextFactory This is important for audits. Signed-off-by: Pierre-Alexandre Meyer --- .../InternalCallContextFactory.java | 30 +++++++++++++++---- .../TestInternalCallContextFactory.java | 4 +++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/util/src/main/java/com/ning/billing/util/callcontext/InternalCallContextFactory.java b/util/src/main/java/com/ning/billing/util/callcontext/InternalCallContextFactory.java index bc7ebc220c..a82233f9dc 100644 --- a/util/src/main/java/com/ning/billing/util/callcontext/InternalCallContextFactory.java +++ b/util/src/main/java/com/ning/billing/util/callcontext/InternalCallContextFactory.java @@ -23,6 +23,7 @@ import javax.annotation.Nullable; import javax.inject.Inject; +import org.joda.time.DateTime; import org.skife.jdbi.v2.Handle; import org.skife.jdbi.v2.IDBI; import org.skife.jdbi.v2.tweak.HandleCallback; @@ -90,7 +91,8 @@ public InternalCallContext createInternalCallContext(final UUID objectId, final // "tenant of the pointed object (%s) and the context (%s) don't match!", tenantRecordIdFromObject, tenantRecordIdFromContext); return createInternalCallContext(objectId, objectType, context.getUserName(), context.getCallOrigin(), - context.getUserType(), context.getUserToken()); + context.getUserType(), context.getUserToken(), context.getReasonCode(), context.getComment(), + context.getCreatedDate(), context.getUpdatedDate()); } /** @@ -103,8 +105,9 @@ public InternalCallContext createInternalCallContext(final UUID objectId, final * @return internal call context */ public InternalCallContext createInternalCallContext(final UUID accountId, final CallContext context) { - return createInternalCallContext(accountId, context.getUserName(), context.getCallOrigin(), - context.getUserType(), context.getUserToken()); + return createInternalCallContext(accountId, ObjectType.ACCOUNT, context.getUserName(), context.getCallOrigin(), + context.getUserType(), context.getUserToken(), context.getReasonCode(), context.getComment(), + context.getCreatedDate(), context.getUpdatedDate()); } /** @@ -135,9 +138,17 @@ public InternalCallContext createInternalCallContext(final UUID accountId, final */ public InternalCallContext createInternalCallContext(final UUID objectId, final ObjectType objectType, final String userName, final CallOrigin callOrigin, final UserType userType, @Nullable final UUID userToken) { + return createInternalCallContext(objectId, objectType, userName, callOrigin, userType, userToken, null, null, clock.getUTCNow(), clock.getUTCNow()); + } + + public InternalCallContext createInternalCallContext(final UUID objectId, final ObjectType objectType, final String userName, + final CallOrigin callOrigin, final UserType userType, @Nullable final UUID userToken, + @Nullable final String reasonCode, @Nullable final String comment, final DateTime createdDate, + final DateTime updatedDate) { final Long tenantRecordId = retrieveTenantRecordIdFromObject(objectId, objectType); final Long accountRecordId = retrieveAccountRecordIdFromObject(objectId, objectType); - return createInternalCallContext(tenantRecordId, accountRecordId, userName, callOrigin, userType, userToken); + return createInternalCallContext(tenantRecordId, accountRecordId, userName, callOrigin, userType, userToken, + reasonCode, comment, createdDate, updatedDate); } /** @@ -155,10 +166,19 @@ public InternalCallContext createInternalCallContext(final UUID objectId, final */ public InternalCallContext createInternalCallContext(@Nullable final Long tenantRecordId, final Long accountRecordId, final String userName, final CallOrigin callOrigin, final UserType userType, @Nullable final UUID userToken) { + return new InternalCallContext(tenantRecordId, accountRecordId, userToken, userName, callOrigin, userType, null, null, + clock.getUTCNow(), clock.getUTCNow()); + } + + private InternalCallContext createInternalCallContext(@Nullable final Long tenantRecordId, final Long accountRecordId, final String userName, + final CallOrigin callOrigin, final UserType userType, @Nullable final UUID userToken, + @Nullable final String reasonCode, @Nullable final String comment, final DateTime createdDate, + final DateTime updatedDate) { //Preconditions.checkNotNull(accountRecordId, "accountRecordId cannot be null"); final Long nonNulTenantRecordId = Objects.firstNonNull(tenantRecordId, INTERNAL_TENANT_RECORD_ID); - return new InternalCallContext(nonNulTenantRecordId, accountRecordId, userToken, userName, callOrigin, userType, null, null, clock.getUTCNow(), clock.getUTCNow()); + return new InternalCallContext(nonNulTenantRecordId, accountRecordId, userToken, userName, callOrigin, userType, reasonCode, comment, + createdDate, updatedDate); } /** diff --git a/util/src/test/java/com/ning/billing/util/callcontext/TestInternalCallContextFactory.java b/util/src/test/java/com/ning/billing/util/callcontext/TestInternalCallContextFactory.java index fef49e2b91..0ac9552354 100644 --- a/util/src/test/java/com/ning/billing/util/callcontext/TestInternalCallContextFactory.java +++ b/util/src/test/java/com/ning/billing/util/callcontext/TestInternalCallContextFactory.java @@ -94,6 +94,10 @@ public Void withHandle(final Handle handle) throws Exception { private void verifyInternalCallContext(final InternalCallContext context) { Assert.assertEquals(context.getCallOrigin(), callContext.getCallOrigin()); + Assert.assertEquals(context.getComment(), callContext.getComment()); + Assert.assertEquals(context.getCreatedDate(), callContext.getCreatedDate()); + Assert.assertEquals(context.getReasonCode(), callContext.getReasonCode()); + Assert.assertEquals(context.getUpdatedDate(), callContext.getUpdatedDate()); Assert.assertEquals(context.getUserName(), callContext.getUserName()); Assert.assertEquals(context.getUserToken(), callContext.getUserToken()); Assert.assertEquals(context.getUserType(), callContext.getUserType());