Skip to content

Commit

Permalink
subscription,beatrix: Add bundle externalKey in subscription events a…
Browse files Browse the repository at this point in the history
…nd in EXT bus event metadata. See #679
  • Loading branch information
sbrossie committed Dec 29, 2016
1 parent 95afdb6 commit 7aa5f9b
Show file tree
Hide file tree
Showing 19 changed files with 123 additions and 18 deletions.
Expand Up @@ -30,6 +30,8 @@ public interface SubscriptionInternalEvent extends BusInternalEvent {


UUID getBundleId(); UUID getBundleId();


String getBundleExternalKey();

UUID getSubscriptionId(); UUID getSubscriptionId();


DateTime getSubscriptionStartDate(); DateTime getSubscriptionStartDate();
Expand Down
Expand Up @@ -162,7 +162,7 @@ private BusEvent computeExtBusEventEntryFromBusInternalEvent(final BusInternalEv
} }


SubscriptionMetadata.ActionType actionType = (event instanceof EffectiveSubscriptionInternalEvent) ? ActionType.EFFECTIVE : ActionType.REQUESTED; SubscriptionMetadata.ActionType actionType = (event instanceof EffectiveSubscriptionInternalEvent) ? ActionType.EFFECTIVE : ActionType.REQUESTED;
final SubscriptionMetadata subscriptionMetadataObj = new SubscriptionMetadata(actionType); final SubscriptionMetadata subscriptionMetadataObj = new SubscriptionMetadata(actionType, realEventST.getBundleExternalKey());
metaData = objectMapper.writeValueAsString(subscriptionMetadataObj); metaData = objectMapper.writeValueAsString(subscriptionMetadataObj);
break; break;


Expand Down
Expand Up @@ -18,6 +18,7 @@


package org.killbill.billing.beatrix.integration; package org.killbill.billing.beatrix.integration;


import java.io.IOException;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
Expand All @@ -26,12 +27,15 @@
import org.killbill.billing.DBTestingHelper; import org.killbill.billing.DBTestingHelper;
import org.killbill.billing.account.api.Account; import org.killbill.billing.account.api.Account;
import org.killbill.billing.api.TestApiListener.NextEvent; import org.killbill.billing.api.TestApiListener.NextEvent;
import org.killbill.billing.beatrix.extbus.DefaultBusExternalEvent;
import org.killbill.billing.callcontext.DefaultCallContext; import org.killbill.billing.callcontext.DefaultCallContext;
import org.killbill.billing.catalog.api.BillingPeriod; import org.killbill.billing.catalog.api.BillingPeriod;
import org.killbill.billing.catalog.api.PriceListSet; import org.killbill.billing.catalog.api.PriceListSet;
import org.killbill.billing.catalog.api.ProductCategory; import org.killbill.billing.catalog.api.ProductCategory;
import org.killbill.billing.entitlement.api.DefaultEntitlement; import org.killbill.billing.entitlement.api.DefaultEntitlement;
import org.killbill.billing.notification.plugin.api.ExtBusEvent; import org.killbill.billing.notification.plugin.api.ExtBusEvent;
import org.killbill.billing.notification.plugin.api.ExtBusEventType;
import org.killbill.billing.notification.plugin.api.SubscriptionMetadata;
import org.killbill.billing.overdue.api.OverdueConfig; import org.killbill.billing.overdue.api.OverdueConfig;
import org.killbill.billing.platform.api.KillbillConfigSource; import org.killbill.billing.platform.api.KillbillConfigSource;
import org.killbill.billing.tenant.api.DefaultTenant; import org.killbill.billing.tenant.api.DefaultTenant;
Expand All @@ -41,15 +45,19 @@
import org.killbill.billing.util.callcontext.CallContext; import org.killbill.billing.util.callcontext.CallContext;
import org.killbill.billing.util.callcontext.CallOrigin; import org.killbill.billing.util.callcontext.CallOrigin;
import org.killbill.billing.util.callcontext.UserType; import org.killbill.billing.util.callcontext.UserType;
import org.killbill.billing.util.jackson.ObjectMapper;
import org.killbill.billing.util.nodes.NodeCommand; import org.killbill.billing.util.nodes.NodeCommand;
import org.killbill.billing.util.nodes.NodeCommandMetadata; import org.killbill.billing.util.nodes.NodeCommandMetadata;
import org.killbill.billing.util.nodes.NodeCommandProperty; import org.killbill.billing.util.nodes.NodeCommandProperty;
import org.killbill.billing.util.nodes.PluginNodeCommandMetadata; import org.killbill.billing.util.nodes.PluginNodeCommandMetadata;
import org.killbill.billing.util.nodes.SystemNodeCommandType; import org.killbill.billing.util.nodes.SystemNodeCommandType;
import org.testng.Assert;
import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test; import org.testng.annotations.Test;


import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
Expand All @@ -64,6 +72,8 @@ public class TestPublicBus extends TestIntegrationBase {


private AtomicInteger externalBusCount; private AtomicInteger externalBusCount;


private final ObjectMapper mapper = new ObjectMapper();

@Override @Override
protected KillbillConfigSource getConfigSource() { protected KillbillConfigSource getConfigSource() {
ImmutableMap additionalProperties = new ImmutableMap.Builder() ImmutableMap additionalProperties = new ImmutableMap.Builder()
Expand All @@ -78,6 +88,26 @@ public class PublicListener {
@Subscribe @Subscribe
public void handleExternalEvents(final ExtBusEvent event) { public void handleExternalEvents(final ExtBusEvent event) {
log.info("GOT EXT EVENT " + event); log.info("GOT EXT EVENT " + event);

if (event.getEventType() == ExtBusEventType.SUBSCRIPTION_CREATION ||
event.getEventType() == ExtBusEventType.SUBSCRIPTION_CANCEL ||
event.getEventType() == ExtBusEventType.SUBSCRIPTION_PHASE ||
event.getEventType() == ExtBusEventType.SUBSCRIPTION_CHANGE ||
event.getEventType() == ExtBusEventType.SUBSCRIPTION_UNCANCEL ||
event.getEventType() == ExtBusEventType.SUBSCRIPTION_BCD_CHANGE) {
try {
final SubscriptionMetadata obj = (SubscriptionMetadata) mapper.readValue(event.getMetaData(), SubscriptionMetadata.class);
Assert.assertNotNull(obj.getBundleExternalKey());
Assert.assertNotNull(obj.getActionType());
} catch (JsonParseException e) {
Assert.fail("Could not deserialize metada section", e);
} catch (JsonMappingException e) {
Assert.fail("Could not deserialize metada section", e);
} catch (IOException e) {
Assert.fail("Could not deserialize metada section", e);
}
}

externalBusCount.incrementAndGet(); externalBusCount.incrementAndGet();


} }
Expand Down
Expand Up @@ -53,11 +53,13 @@
public class TestDefaultSubscriptionBundleTimeline extends EntitlementTestSuiteNoDB { public class TestDefaultSubscriptionBundleTimeline extends EntitlementTestSuiteNoDB {


private UUID bundleId; private UUID bundleId;
private String bundleExternalKey;


@BeforeClass(groups = "fast") @BeforeClass(groups = "fast")
protected void beforeClass() throws Exception { protected void beforeClass() throws Exception {
super.beforeClass(); super.beforeClass();
bundleId = UUID.randomUUID(); bundleId = UUID.randomUUID();
bundleExternalKey = bundleId.toString();
} }


public class TestSubscriptionBundleTimeline extends DefaultSubscriptionBundleTimeline { public class TestSubscriptionBundleTimeline extends DefaultSubscriptionBundleTimeline {
Expand Down Expand Up @@ -1559,6 +1561,7 @@ private SubscriptionBaseTransition createTransition(final UUID entitlementId,
return new SubscriptionBaseTransitionData(UUID.randomUUID(), return new SubscriptionBaseTransitionData(UUID.randomUUID(),
entitlementId, entitlementId,
bundleId, bundleId,
bundleExternalKey,
eventType, eventType,
apiEventType, apiEventType,
effectiveDate, effectiveDate,
Expand Down
Expand Up @@ -78,6 +78,7 @@ public class TestBillingApi extends JunctionTestSuiteNoDB {
private static final UUID eventId = new UUID(0L, 0L); private static final UUID eventId = new UUID(0L, 0L);
private static final UUID subId = new UUID(1L, 0L); private static final UUID subId = new UUID(1L, 0L);
private static final UUID bunId = new UUID(2L, 0L); private static final UUID bunId = new UUID(2L, 0L);
private static final String bunKey = bunId.toString();


private List<EffectiveSubscriptionInternalEvent> effectiveSubscriptionTransitions; private List<EffectiveSubscriptionInternalEvent> effectiveSubscriptionTransitions;
private SubscriptionBase subscription; private SubscriptionBase subscription;
Expand Down Expand Up @@ -282,7 +283,7 @@ private DateTime createSubscriptionCreationEvent(final Plan nextPlan, final Plan
final PriceList nextPriceList = catalog.findPriceList(PriceListSet.DEFAULT_PRICELIST_NAME, now); final PriceList nextPriceList = catalog.findPriceList(PriceListSet.DEFAULT_PRICELIST_NAME, now);


final EffectiveSubscriptionInternalEvent t = new MockEffectiveSubscriptionEvent( final EffectiveSubscriptionInternalEvent t = new MockEffectiveSubscriptionEvent(
eventId, subId, bunId, then, now, null, null, null, null, null, EntitlementState.ACTIVE, eventId, subId, bunId, bunKey, then, now, null, null, null, null, null, EntitlementState.ACTIVE,
nextPlan.getName(), nextPhase.getName(), nextPlan.getName(), nextPhase.getName(),
nextPriceList.getName(), null, 1L, nextPriceList.getName(), null, 1L,
SubscriptionBaseTransitionType.CREATE, 1, null, 1L, 2L, null); SubscriptionBaseTransitionType.CREATE, 1, null, 1L, 2L, null);
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Expand Up @@ -21,7 +21,7 @@
<parent> <parent>
<artifactId>killbill-oss-parent</artifactId> <artifactId>killbill-oss-parent</artifactId>
<groupId>org.kill-bill.billing</groupId> <groupId>org.kill-bill.billing</groupId>
<version>0.140.7</version> <version>0.140.8</version>
</parent> </parent>
<artifactId>killbill</artifactId> <artifactId>killbill</artifactId>
<version>0.18.2-SNAPSHOT</version> <version>0.18.2-SNAPSHOT</version>
Expand Down
Expand Up @@ -192,6 +192,7 @@ public SubscriptionBase createSubscription(final UUID bundleId, final PlanPhaseS
return apiService.createPlan(new SubscriptionBuilder() return apiService.createPlan(new SubscriptionBuilder()
.setId(UUIDs.randomUUID()) .setId(UUIDs.randomUUID())
.setBundleId(bundleId) .setBundleId(bundleId)
.setBundleExternalKey(bundle.getExternalKey())
.setCategory(plan.getProduct().getCategory()) .setCategory(plan.getProduct().getCategory())
.setBundleStartDate(bundleStartDate) .setBundleStartDate(bundleStartDate)
.setAlignStartDate(effectiveDate) .setAlignStartDate(effectiveDate)
Expand All @@ -202,7 +203,7 @@ public SubscriptionBase createSubscription(final UUID bundleId, final PlanPhaseS
} }
} }


private List<SubscriptionSpecifier> verifyAndBuildSubscriptionSpecifiers(final UUID bundleId, final Iterable<EntitlementSpecifier> entitlements, final boolean isMigrated, final InternalCallContext context, final DateTime now, final DateTime effectiveDate, final Catalog catalog, final CallContext callContext) throws SubscriptionBaseApiException, CatalogApiException { private List<SubscriptionSpecifier> verifyAndBuildSubscriptionSpecifiers(final UUID bundleId, final String externalKey, final Iterable<EntitlementSpecifier> entitlements, final boolean isMigrated, final InternalCallContext context, final DateTime now, final DateTime effectiveDate, final Catalog catalog, final CallContext callContext) throws SubscriptionBaseApiException, CatalogApiException {
final List<SubscriptionSpecifier> subscriptions = new ArrayList<SubscriptionSpecifier>(); final List<SubscriptionSpecifier> subscriptions = new ArrayList<SubscriptionSpecifier>();
boolean first = true; boolean first = true;
final List<SubscriptionBase> subscriptionsForBundle = getSubscriptionsForBundle(bundleId, null, context); final List<SubscriptionBase> subscriptionsForBundle = getSubscriptionsForBundle(bundleId, null, context);
Expand Down Expand Up @@ -248,6 +249,7 @@ private List<SubscriptionSpecifier> verifyAndBuildSubscriptionSpecifiers(final U
subscription.setBuilder(new SubscriptionBuilder() subscription.setBuilder(new SubscriptionBuilder()
.setId(UUIDs.randomUUID()) .setId(UUIDs.randomUUID())
.setBundleId(bundleId) .setBundleId(bundleId)
.setBundleExternalKey(externalKey)
.setCategory(plan.getProduct().getCategory()) .setCategory(plan.getProduct().getCategory())
.setBundleStartDate(effectiveDate) .setBundleStartDate(effectiveDate)
.setAlignStartDate(effectiveDate) .setAlignStartDate(effectiveDate)
Expand Down Expand Up @@ -276,6 +278,7 @@ public List<SubscriptionBaseWithAddOns> createBaseSubscriptionsWithAddOns(final
bundle.getId(), bundle.getId(),
effectiveDate, effectiveDate,
verifyAndBuildSubscriptionSpecifiers(bundle.getId(), verifyAndBuildSubscriptionSpecifiers(bundle.getId(),
bundle.getExternalKey(),
entitlementWithAddOnsSpecifier.getEntitlementSpecifier(), entitlementWithAddOnsSpecifier.getEntitlementSpecifier(),
entitlementWithAddOnsSpecifier.isMigrated(), entitlementWithAddOnsSpecifier.isMigrated(),
context, context,
Expand Down Expand Up @@ -641,6 +644,7 @@ private void populateDryRunEvents(@Nullable final UUID bundleId,
final SubscriptionBuilder builder = new SubscriptionBuilder() final SubscriptionBuilder builder = new SubscriptionBuilder()
.setId(subscriptionId) .setId(subscriptionId)
.setBundleId(bundleId) .setBundleId(bundleId)
.setBundleExternalKey(null)
.setCategory(plan.getProduct().getCategory()) .setCategory(plan.getProduct().getCategory())
.setBundleStartDate(bundleStartDate) .setBundleStartDate(bundleStartDate)
.setAlignStartDate(startEffectiveDate); .setAlignStartDate(startEffectiveDate);
Expand Down
Expand Up @@ -248,6 +248,7 @@ public SubscriptionBaseBundle transferBundle(final UUID sourceAccountId, final U
final DefaultSubscriptionBase defaultSubscriptionBase = createSubscriptionForApiUse(new SubscriptionBuilder() final DefaultSubscriptionBase defaultSubscriptionBase = createSubscriptionForApiUse(new SubscriptionBuilder()
.setId(UUIDs.randomUUID()) .setId(UUIDs.randomUUID())
.setBundleId(subscriptionBundleData.getId()) .setBundleId(subscriptionBundleData.getId())
.setBundleExternalKey(subscriptionBundleData.getExternalKey())
.setCategory(productCategory) .setCategory(productCategory)
.setBundleStartDate(effectiveTransferDate) .setBundleStartDate(effectiveTransferDate)
.setAlignStartDate(subscriptionAlignStartDate), .setAlignStartDate(subscriptionAlignStartDate),
Expand Down
Expand Up @@ -37,6 +37,7 @@ public DefaultEffectiveSubscriptionEvent(final SubscriptionBaseTransitionData in
public DefaultEffectiveSubscriptionEvent(@JsonProperty("eventId") final UUID eventId, public DefaultEffectiveSubscriptionEvent(@JsonProperty("eventId") final UUID eventId,
@JsonProperty("subscriptionId") final UUID subscriptionId, @JsonProperty("subscriptionId") final UUID subscriptionId,
@JsonProperty("bundleId") final UUID bundleId, @JsonProperty("bundleId") final UUID bundleId,
@JsonProperty("bundleExternalKey") final String bundleExternalKey,
@JsonProperty("effectiveTransitionTime") final DateTime effectiveTransitionTime, @JsonProperty("effectiveTransitionTime") final DateTime effectiveTransitionTime,
@JsonProperty("previousState") final EntitlementState previousState, @JsonProperty("previousState") final EntitlementState previousState,
@JsonProperty("previousPlan") final String previousPlan, @JsonProperty("previousPlan") final String previousPlan,
Expand All @@ -55,7 +56,7 @@ public DefaultEffectiveSubscriptionEvent(@JsonProperty("eventId") final UUID eve
@JsonProperty("searchKey1") final Long searchKey1, @JsonProperty("searchKey1") final Long searchKey1,
@JsonProperty("searchKey2") final Long searchKey2, @JsonProperty("searchKey2") final Long searchKey2,
@JsonProperty("userToken") final UUID userToken) { @JsonProperty("userToken") final UUID userToken) {
super(eventId, subscriptionId, bundleId, effectiveTransitionTime, effectiveTransitionTime, previousState, previousPlan, super(eventId, subscriptionId, bundleId, bundleExternalKey, effectiveTransitionTime, effectiveTransitionTime, previousState, previousPlan,
previousPhase, previousPriceList, previousBillCycleDayLocal, nextState, nextPlan, nextPhase, nextPriceList, nextBillCycleDayLocal, totalOrdering, previousPhase, previousPriceList, previousBillCycleDayLocal, nextState, nextPlan, nextPhase, nextPriceList, nextBillCycleDayLocal, totalOrdering,
transitionType, remainingEventsForUserOperation, startDate, searchKey1, searchKey2, userToken); transitionType, remainingEventsForUserOperation, startDate, searchKey1, searchKey2, userToken);
} }
Expand Down
Expand Up @@ -34,6 +34,7 @@ public class DefaultRequestedSubscriptionEvent extends DefaultSubscriptionEvent
public DefaultRequestedSubscriptionEvent(@JsonProperty("eventId") final UUID eventId, public DefaultRequestedSubscriptionEvent(@JsonProperty("eventId") final UUID eventId,
@JsonProperty("subscriptionId") final UUID subscriptionId, @JsonProperty("subscriptionId") final UUID subscriptionId,
@JsonProperty("bundleId") final UUID bundleId, @JsonProperty("bundleId") final UUID bundleId,
@JsonProperty("bundleExternalKey") final String bundleExternalKey,
@JsonProperty("requestedTransitionTime") final DateTime requestedTransitionTime, @JsonProperty("requestedTransitionTime") final DateTime requestedTransitionTime,
@JsonProperty("effectiveTransitionTime") final DateTime effectiveTransitionTime, @JsonProperty("effectiveTransitionTime") final DateTime effectiveTransitionTime,
@JsonProperty("previousState") final EntitlementState previousState, @JsonProperty("previousState") final EntitlementState previousState,
Expand All @@ -53,7 +54,7 @@ public DefaultRequestedSubscriptionEvent(@JsonProperty("eventId") final UUID eve
@JsonProperty("searchKey1") final Long searchKey1, @JsonProperty("searchKey1") final Long searchKey1,
@JsonProperty("searchKey2") final Long searchKey2, @JsonProperty("searchKey2") final Long searchKey2,
@JsonProperty("userToken") final UUID userToken) { @JsonProperty("userToken") final UUID userToken) {
super(eventId, subscriptionId, bundleId, requestedTransitionTime, effectiveTransitionTime, previousState, previousPlan, super(eventId, subscriptionId, bundleId, bundleExternalKey, requestedTransitionTime, effectiveTransitionTime, previousState, previousPlan,
previousPhase, previousPriceList, previousBillCycleDayLocal, nextState, nextPlan, nextPhase, nextPriceList, nextBillCycleDayLocal, totalOrdering, previousPhase, previousPriceList, previousBillCycleDayLocal, nextState, nextPlan, nextPhase, nextPriceList, nextBillCycleDayLocal, totalOrdering,
transitionType, remainingEventsForUserOperation, startDate, searchKey1, searchKey2, userToken); transitionType, remainingEventsForUserOperation, startDate, searchKey1, searchKey2, userToken);
} }
Expand All @@ -64,7 +65,7 @@ public DefaultRequestedSubscriptionEvent(final DefaultSubscriptionBase subscript
final Long searchKey1, final Long searchKey1,
final Long searchKey2, final Long searchKey2,
final UUID userToken) { final UUID userToken) {
this(nextEvent.getId(), nextEvent.getSubscriptionId(), subscription.getBundleId(), nextEvent.getEffectiveDate(), nextEvent.getEffectiveDate(), this(nextEvent.getId(), nextEvent.getSubscriptionId(), subscription.getBundleId(), subscription.getBundleExternalKey(), nextEvent.getEffectiveDate(), nextEvent.getEffectiveDate(),
null, null, null, null, null, null, null, null, null, null, nextEvent.getTotalOrdering(), transitionType, 0, null, searchKey1, searchKey2, userToken); null, null, null, null, null, null, null, null, null, null, nextEvent.getTotalOrdering(), transitionType, 0, null, searchKey1, searchKey2, userToken);
} }
} }
Expand Up @@ -83,6 +83,7 @@ public class DefaultSubscriptionBase extends EntityBase implements SubscriptionB
// Final subscription fields // Final subscription fields
// //
private final UUID bundleId; private final UUID bundleId;
private final String bundleExternalKey;
private final DateTime alignStartDate; private final DateTime alignStartDate;
private final DateTime bundleStartDate; private final DateTime bundleStartDate;
private final ProductCategory category; private final ProductCategory category;
Expand Down Expand Up @@ -118,6 +119,7 @@ public DefaultSubscriptionBase(final SubscriptionBuilder builder, @Nullable fina
this.apiService = apiService; this.apiService = apiService;
this.clock = clock; this.clock = clock;
this.bundleId = builder.getBundleId(); this.bundleId = builder.getBundleId();
this.bundleExternalKey = builder.getBundleExternalKey();
this.alignStartDate = builder.getAlignStartDate(); this.alignStartDate = builder.getAlignStartDate();
this.bundleStartDate = builder.getBundleStartDate(); this.bundleStartDate = builder.getBundleStartDate();
this.category = builder.getCategory(); this.category = builder.getCategory();
Expand All @@ -131,6 +133,7 @@ public DefaultSubscriptionBase(final DefaultSubscriptionBase internalSubscriptio
this.apiService = apiService; this.apiService = apiService;
this.clock = clock; this.clock = clock;
this.bundleId = internalSubscription.getBundleId(); this.bundleId = internalSubscription.getBundleId();
this.bundleExternalKey = internalSubscription.getBundleExternalKey();
this.alignStartDate = internalSubscription.getAlignStartDate(); this.alignStartDate = internalSubscription.getAlignStartDate();
this.bundleStartDate = internalSubscription.getBundleStartDate(); this.bundleStartDate = internalSubscription.getBundleStartDate();
this.category = internalSubscription.getCategory(); this.category = internalSubscription.getCategory();
Expand All @@ -145,6 +148,10 @@ public UUID getBundleId() {
return bundleId; return bundleId;
} }


public String getBundleExternalKey() {
return bundleExternalKey;
}

@Override @Override
public DateTime getStartDate() { public DateTime getStartDate() {
return transitions.get(0).getEffectiveTransitionTime(); return transitions.get(0).getEffectiveTransitionTime();
Expand Down Expand Up @@ -713,7 +720,7 @@ public void rebuildTransitions(final List<SubscriptionBaseEvent> inputEvents, fi
nextPriceList = (nextPlan != null) ? catalog.findPriceListForPlan(nextPlanName, cur.getEffectiveDate(), getAlignStartDate()) : null; nextPriceList = (nextPlan != null) ? catalog.findPriceListForPlan(nextPlanName, cur.getEffectiveDate(), getAlignStartDate()) : null;


final SubscriptionBaseTransitionData transition = new SubscriptionBaseTransitionData( final SubscriptionBaseTransitionData transition = new SubscriptionBaseTransitionData(
cur.getId(), id, bundleId, cur.getType(), apiEventType, cur.getId(), id, bundleId, bundleExternalKey, cur.getType(), apiEventType,
cur.getEffectiveDate(), cur.getEffectiveDate(),
prevEventId, prevCreatedDate, prevEventId, prevCreatedDate,
previousState, previousPlan, previousPhase, previousState, previousPlan, previousPhase,
Expand Down

1 comment on commit 7aa5f9b

@pierre
Copy link
Member

@pierre pierre commented on 7aa5f9b Dec 29, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Please sign in to comment.