killbill-memoizeit
Changes
entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultBillingEvent.java 13(+5 -8)
Details
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/billing/BillingEvent.java b/api/src/main/java/com/ning/billing/entitlement/api/billing/BillingEvent.java
index 21ac60f..6340560 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/billing/BillingEvent.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/billing/BillingEvent.java
@@ -107,6 +107,6 @@ public interface BillingEvent extends Comparable<BillingEvent> {
/**
* @return a unique long indicating the ordering on which events got inserted on disk-- used for sorting only
*/
- public long getTotalOrdering();
+ public Long getTotalOrdering();
}
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/MockModule.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/MockModule.java
index 0cb1b01..cacbf01 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/MockModule.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/MockModule.java
@@ -98,7 +98,7 @@ public class MockModule extends AbstractModule {
}
private static void loadSystemPropertiesFromClasspath(final String resource) {
- final URL url = TestBasic.class.getResource(resource);
+ final URL url = TestIntegration.class.getResource(resource);
assertNotNull(url);
try {
System.getProperties().load( url.openStream() );
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestBusHandler.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestBusHandler.java
index f915509..01c3f52 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestBusHandler.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestBusHandler.java
@@ -20,6 +20,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Stack;
+import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -66,6 +67,7 @@ public class TestBusHandler {
notifyIfStackEmpty();
break;
case CREATE:
+ case RE_CREATE:
assertEqualsNicely(NextEvent.CREATE);
notifyIfStackEmpty();
@@ -131,10 +133,21 @@ public class TestBusHandler {
if (completed) {
return completed;
}
- try {
- wait(timeout);
- } catch (Exception ignore) {
- }
+ long waitTimeMs = timeout;
+ do {
+ try {
+ DateTime before = new DateTime();
+ wait(waitTimeMs);
+ if (completed) {
+ return completed;
+ }
+ DateTime after = new DateTime();
+ waitTimeMs -= after.getMillis() - before.getMillis();
+ } catch (Exception ignore) {
+ log.error("isCompleted got interrupted ", ignore);
+ return false;
+ }
+ } while (waitTimeMs > 0 && !completed);
}
if (!completed) {
Joiner joiner = Joiner.on(" ");
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultBillingEvent.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultBillingEvent.java
index 3d40c71..0c6f82a 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultBillingEvent.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultBillingEvent.java
@@ -43,7 +43,7 @@ public class DefaultBillingEvent implements BillingEvent {
final private BillingModeType billingModeType;
final private BillingPeriod billingPeriod;
final private SubscriptionTransitionType type;
- final private long totalOrdering;
+ final private Long totalOrdering;
public DefaultBillingEvent(SubscriptionTransition transition, Subscription subscription, int billCycleDay, Currency currency) throws CatalogApiException {
this.billCycleDay = billCycleDay;
@@ -97,11 +97,7 @@ public class DefaultBillingEvent implements BillingEvent {
if (! getEffectiveDate().equals(e1.getEffectiveDate())) { // Secondly order by date
return getEffectiveDate().compareTo(e1.getEffectiveDate());
} else { // dates and subscriptions are the same
- if (!getTransitionType().equals(e1.getTransitionType())) { // Finally compare by transition type
- return getTransitionType().ordinal() - e1.getTransitionType().ordinal();
- } else {
- return hashCode() - e1.hashCode();
- }
+ return getTotalOrdering().compareTo(e1.getTotalOrdering());
}
}
}
@@ -167,7 +163,7 @@ public class DefaultBillingEvent implements BillingEvent {
}
@Override
- public long getTotalOrdering() {
+ public Long getTotalOrdering() {
return totalOrdering;
}
@@ -195,11 +191,12 @@ public class DefaultBillingEvent implements BillingEvent {
} catch (Exception e) {
sb.append("null");
}
-
sb.append(", ");
sb.append("currency = ").append(currency.toString()).append(", ");
sb.append("billingPeriod = ").append(billingPeriod.toString());
+ sb.append(", ");
+ sb.append("totalOrdering = ").append(getTotalOrdering().toString());
sb.append("}");
return sb.toString();
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionApiService.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionApiService.java
index 72cc142..9899990 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionApiService.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionApiService.java
@@ -35,6 +35,7 @@ import org.joda.time.DateTime;
import java.util.ArrayList;
import java.util.List;
+import java.util.UUID;
public class SubscriptionApiService {
@@ -98,7 +99,8 @@ public class SubscriptionApiService {
try {
TimedPhase [] curAndNextPhases = planAligner.getCurrentAndNextTimedPhaseOnCreate(subscription, plan, initialPhase, realPriceList, requestedDate, effectiveDate);
- ApiEventCreate creationEvent = new ApiEventCreate(new ApiEventBuilder()
+
+ ApiEventBuilder createBuilder = new ApiEventBuilder()
.setSubscriptionId(subscription.getId())
.setEventPlan(plan.getName())
.setEventPlanPhase(curAndNextPhases[0].getPhase().getName())
@@ -107,7 +109,8 @@ public class SubscriptionApiService {
.setProcessedDate(processedDate)
.setEffectiveDate(effectiveDate)
.setRequestedDate(requestedDate)
- .setFromDisk(true));
+ .setFromDisk(true);
+ ApiEvent creationEvent = (reCreate) ? new ApiEventReCreate(createBuilder) : new ApiEventCreate(createBuilder);
TimedPhase nextTimedPhase = curAndNextPhases[1];
PhaseEvent nextPhaseEvent = (nextTimedPhase != null) ?
@@ -123,7 +126,7 @@ public class SubscriptionApiService {
} else {
dao.createSubscription(subscription, events);
}
- subscription.rebuildTransitions(events, catalogService.getFullCatalog());
+ subscription.rebuildTransitions(dao.getEventsForSubscription(subscription.getId()), catalogService.getFullCatalog());
} catch (CatalogApiException e) {
throw new EntitlementUserApiException(e);
}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/events/EventBaseBuilder.java b/entitlement/src/main/java/com/ning/billing/entitlement/events/EventBaseBuilder.java
index e74ea69..aa07385 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/events/EventBaseBuilder.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/events/EventBaseBuilder.java
@@ -48,6 +48,7 @@ public class EventBaseBuilder<T extends EventBaseBuilder<T>> {
this.activeVersion = copy.activeVersion;
this.isActive = copy.isActive;
+ this.totalOrdering = copy.totalOrdering;
}
public T setTotalOrdering(long totalOrdering) {