killbill-memoizeit
util: integrate comments from baa7c200edd14a060c22a299cf0324e6b270a989 Signed-off-by: …
1/22/2015 6:28:28 PM
Changes
Details
diff --git a/beatrix/src/main/java/org/killbill/billing/beatrix/extbus/BeatrixListener.java b/beatrix/src/main/java/org/killbill/billing/beatrix/extbus/BeatrixListener.java
index c0b2f2f..fcd714b 100644
--- a/beatrix/src/main/java/org/killbill/billing/beatrix/extbus/BeatrixListener.java
+++ b/beatrix/src/main/java/org/killbill/billing/beatrix/extbus/BeatrixListener.java
@@ -20,6 +20,7 @@ package org.killbill.billing.beatrix.extbus;
import java.util.UUID;
+import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Named;
@@ -242,11 +243,14 @@ public class BeatrixListener {
null;
}
- private UUID getAccountId(final BusInternalEventType eventType, final UUID objectId, final ObjectType objectType, final TenantContext context) {
+ private UUID getAccountId(final BusInternalEventType eventType, @Nullable final UUID objectId, final ObjectType objectType, final TenantContext context) {
// accountRecord_id is not set for ACCOUNT_CREATE event as we are in the transaction and value is known yet
if (eventType == BusInternalEventType.ACCOUNT_CREATE) {
return objectId;
+ } else if (objectId == null) {
+ return null;
+ } else {
+ return internalCallContextFactory.getAccountId(objectId, objectType, context);
}
- return internalCallContextFactory.getAccountId(objectId, objectType, context);
}
}
diff --git a/util/src/main/java/org/killbill/billing/util/callcontext/InternalCallContextFactory.java b/util/src/main/java/org/killbill/billing/util/callcontext/InternalCallContextFactory.java
index 171aabb..1cc8f98 100644
--- a/util/src/main/java/org/killbill/billing/util/callcontext/InternalCallContextFactory.java
+++ b/util/src/main/java/org/killbill/billing/util/callcontext/InternalCallContextFactory.java
@@ -214,7 +214,7 @@ public class InternalCallContextFactory {
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 TenantContext tenantContext) {
- final Long tenantRecordId = getTenantRecordIdSafe(objectId, objectType, tenantContext);
+ final Long tenantRecordId = getTenantRecordIdSafe(tenantContext);
final Long accountRecordId = getAccountRecordIdSafe(objectId, objectType, tenantContext);
return createInternalCallContext(tenantRecordId, accountRecordId, userName, callOrigin, userType, userToken,
reasonCode, comment, createdDate, updatedDate);
@@ -262,7 +262,7 @@ public class InternalCallContextFactory {
if (objectBelongsToTheRightTenant(objectId, objectType, context)) {
return getAccountRecordIdUnsafe(objectId, objectType);
} else {
- return null;
+ throw new IllegalStateException(String.format("Object id=%s type=%s doesn't belong to tenant id=%s", objectId, objectType, context.getTenantId()));
}
}
@@ -270,29 +270,18 @@ public class InternalCallContextFactory {
if (objectBelongsToTheRightTenant(objectId, objectType, tenantRecordId)) {
return getAccountRecordIdUnsafe(objectId, objectType);
} else {
- return null;
- }
- }
-
- private Long getTenantRecordIdSafe(final UUID objectId, final ObjectType objectType, final TenantContext context) {
- if (objectBelongsToTheRightTenant(objectId, objectType, context)) {
- return getTenantRecordIdUnsafe(objectId, objectType);
- } else {
- return null;
+ throw new IllegalStateException(String.format("Object id=%s type=%s doesn't belong to tenant recordId=%s", objectId, objectType, tenantRecordId));
}
}
private Long getTenantRecordIdSafe(final TenantContext context) {
- return getTenantRecordIdSafe(context.getTenantId());
- }
-
- private Long getTenantRecordIdSafe(final UUID tenantId) {
// Default to single default tenant (e.g. single tenant mode)
// TODO Extract this convention (e.g. BusinessAnalyticsBase needs to know about it)
- if (tenantId == null) {
+ if (context.getTenantId() == null) {
return INTERNAL_TENANT_RECORD_ID;
} else {
- return getTenantRecordIdUnsafe(tenantId, ObjectType.TENANT);
+ // This is always safe (the tenant context was created from the api key and secret)
+ return getTenantRecordIdUnsafe(context.getTenantId(), ObjectType.TENANT);
}
}