Details
diff --git a/analytics/src/main/java/com/ning/billing/analytics/BusinessOverdueStatusRecorder.java b/analytics/src/main/java/com/ning/billing/analytics/BusinessOverdueStatusRecorder.java
index 8ec98d4..06141c8 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/BusinessOverdueStatusRecorder.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/BusinessOverdueStatusRecorder.java
@@ -92,7 +92,7 @@ public class BusinessOverdueStatusRecorder {
log.info("Started rebuilding overdue statuses for bundle id {}", bundleId);
transactional.deleteOverdueStatusesForBundle(bundleId.toString());
- final SortedSet<BlockingState> blockingHistory = blockingApi.getBlockingHistory(bundleId);
+ final List<BlockingState> blockingHistory = blockingApi.getBlockingHistory(bundleId);
if (blockingHistory != null && blockingHistory.size() > 0) {
final List<BlockingState> overdueStates = ImmutableList.<BlockingState>copyOf(blockingHistory);
final List<BlockingState> overdueStatesReversed = Lists.reverse(overdueStates);
diff --git a/api/src/main/java/com/ning/billing/junction/api/BlockingApi.java b/api/src/main/java/com/ning/billing/junction/api/BlockingApi.java
index d6a1de6..ee1fe5b 100644
--- a/api/src/main/java/com/ning/billing/junction/api/BlockingApi.java
+++ b/api/src/main/java/com/ning/billing/junction/api/BlockingApi.java
@@ -16,6 +16,7 @@
package com.ning.billing.junction.api;
+import java.util.List;
import java.util.SortedSet;
import java.util.UUID;
@@ -27,9 +28,9 @@ public interface BlockingApi {
public BlockingState getBlockingStateFor(UUID overdueableId);
- public SortedSet<BlockingState> getBlockingHistory(Blockable overdueable);
+ public List<BlockingState> getBlockingHistory(Blockable overdueable);
- public SortedSet<BlockingState> getBlockingHistory(UUID overdueableId);
+ public List<BlockingState> getBlockingHistory(UUID overdueableId);
public <T extends Blockable> void setBlockingState(BlockingState state);
diff --git a/junction/src/main/java/com/ning/billing/junction/api/blocking/DefaultBlockingApi.java b/junction/src/main/java/com/ning/billing/junction/api/blocking/DefaultBlockingApi.java
index 0c74ffd..3635d26 100644
--- a/junction/src/main/java/com/ning/billing/junction/api/blocking/DefaultBlockingApi.java
+++ b/junction/src/main/java/com/ning/billing/junction/api/blocking/DefaultBlockingApi.java
@@ -16,6 +16,7 @@
package com.ning.billing.junction.api.blocking;
+import java.util.List;
import java.util.SortedSet;
import java.util.UUID;
@@ -53,12 +54,12 @@ public class DefaultBlockingApi implements BlockingApi {
}
@Override
- public SortedSet<BlockingState> getBlockingHistory(final Blockable overdueable) {
+ public List<BlockingState> getBlockingHistory(final Blockable overdueable) {
return dao.getBlockingHistoryFor(overdueable);
}
@Override
- public SortedSet<BlockingState> getBlockingHistory(final UUID overdueableId) {
+ public List<BlockingState> getBlockingHistory(final UUID overdueableId) {
return dao.getBlockingHistoryFor(overdueableId);
}
diff --git a/junction/src/main/java/com/ning/billing/junction/dao/BlockingStateDao.java b/junction/src/main/java/com/ning/billing/junction/dao/BlockingStateDao.java
index b9f8510..530a1a2 100644
--- a/junction/src/main/java/com/ning/billing/junction/dao/BlockingStateDao.java
+++ b/junction/src/main/java/com/ning/billing/junction/dao/BlockingStateDao.java
@@ -16,6 +16,7 @@
package com.ning.billing.junction.dao;
+import java.util.List;
import java.util.SortedSet;
import java.util.UUID;
@@ -30,9 +31,9 @@ public interface BlockingStateDao {
public BlockingState getBlockingStateFor(UUID blockableId);
- public SortedSet<BlockingState> getBlockingHistoryFor(Blockable blockable);
+ public List<BlockingState> getBlockingHistoryFor(Blockable blockable);
- public SortedSet<BlockingState> getBlockingHistoryFor(UUID blockableId);
+ public List<BlockingState> getBlockingHistoryFor(UUID blockableId);
//Write
<T extends Blockable> void setBlockingState(BlockingState state, Clock clock);
diff --git a/junction/src/main/java/com/ning/billing/junction/dao/BlockingStateSqlDao.java b/junction/src/main/java/com/ning/billing/junction/dao/BlockingStateSqlDao.java
index 6383b9d..3231d6b 100644
--- a/junction/src/main/java/com/ning/billing/junction/dao/BlockingStateSqlDao.java
+++ b/junction/src/main/java/com/ning/billing/junction/dao/BlockingStateSqlDao.java
@@ -18,6 +18,7 @@ package com.ning.billing.junction.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.util.List;
import java.util.SortedSet;
import java.util.UUID;
@@ -68,12 +69,12 @@ public interface BlockingStateSqlDao extends BlockingStateDao, CloseMe, Transmog
@Override
@SqlQuery
@Mapper(BlockingHistorySqlMapper.class)
- public abstract SortedSet<BlockingState> getBlockingHistoryFor(@Bind(binder = BlockableBinder.class) Blockable blockable);
+ public abstract List<BlockingState> getBlockingHistoryFor(@Bind(binder = BlockableBinder.class) Blockable blockable);
@Override
@SqlQuery
@Mapper(BlockingHistorySqlMapper.class)
- public abstract SortedSet<BlockingState> getBlockingHistoryFor(@Bind(binder = UUIDBinder.class) UUID blockableId);
+ public abstract List<BlockingState> getBlockingHistoryFor(@Bind(binder = UUIDBinder.class) UUID blockableId);
public class BlockingHistorySqlMapper extends MapperBase implements ResultSetMapper<BlockingState> {
diff --git a/junction/src/main/java/com/ning/billing/junction/plumbing/billing/BlockingCalculator.java b/junction/src/main/java/com/ning/billing/junction/plumbing/billing/BlockingCalculator.java
index af3d412..4cd70e1 100644
--- a/junction/src/main/java/com/ning/billing/junction/plumbing/billing/BlockingCalculator.java
+++ b/junction/src/main/java/com/ning/billing/junction/plumbing/billing/BlockingCalculator.java
@@ -93,7 +93,7 @@ public class BlockingCalculator {
final SortedSet<BillingEvent> billingEventsToRemove = new TreeSet<BillingEvent>();
for (final UUID bundleId : bundleMap.keySet()) {
- final SortedSet<BlockingState> blockingEvents = blockingApi.getBlockingHistory(bundleId);
+ final List<BlockingState> blockingEvents = blockingApi.getBlockingHistory(bundleId);
blockingEvents.addAll(blockingApi.getBlockingHistory(account.getId()));
final List<DisabledDuration> blockingDurations = createBlockingDurations(blockingEvents);
@@ -253,7 +253,7 @@ public class BlockingCalculator {
}
- protected List<DisabledDuration> createBlockingDurations(final SortedSet<BlockingState> overdueBundleEvents) {
+ protected List<DisabledDuration> createBlockingDurations(final List<BlockingState> overdueBundleEvents) {
final List<DisabledDuration> result = new ArrayList<BlockingCalculator.DisabledDuration>();
BlockingState first = null;
diff --git a/junction/src/main/resources/com/ning/billing/junction/dao/BlockingStateSqlDao.sql.stg b/junction/src/main/resources/com/ning/billing/junction/dao/BlockingStateSqlDao.sql.stg
index 0bd6686..78e62d6 100644
--- a/junction/src/main/resources/com/ning/billing/junction/dao/BlockingStateSqlDao.sql.stg
+++ b/junction/src/main/resources/com/ning/billing/junction/dao/BlockingStateSqlDao.sql.stg
@@ -11,8 +11,8 @@ getBlockingStateFor() ::= <<
, block_billing
, created_date
from blocking_states
- where id = :id
- order by created_date desc
+ where id = :id
+ order by created_date desc, record_id desc
limit 1
;
>>
@@ -29,7 +29,7 @@ getBlockingHistoryFor() ::= <<
, created_date
from blocking_states
where id = :id
- order by created_date asc
+ order by created_date desc, record_id desc
;
>>
@@ -53,4 +53,4 @@ setBlockingState() ::= <<
, :block_billing
, :created_date
);
->>
\ No newline at end of file
+>>
diff --git a/junction/src/test/java/com/ning/billing/junction/api/blocking/TestBlockingApi.java b/junction/src/test/java/com/ning/billing/junction/api/blocking/TestBlockingApi.java
index de56229..378fe68 100644
--- a/junction/src/test/java/com/ning/billing/junction/api/blocking/TestBlockingApi.java
+++ b/junction/src/test/java/com/ning/billing/junction/api/blocking/TestBlockingApi.java
@@ -16,6 +16,7 @@
package com.ning.billing.junction.api.blocking;
+import java.util.List;
import java.util.SortedSet;
import java.util.UUID;
@@ -96,15 +97,15 @@ public class TestBlockingApi extends JunctionTestSuiteWithEmbeddedDB {
final SubscriptionBundle bundle = Mockito.mock(SubscriptionBundle.class);
Mockito.when(bundle.getId()).thenReturn(uuid);
- final SortedSet<BlockingState> history1 = api.getBlockingHistory(bundle);
- final SortedSet<BlockingState> history2 = api.getBlockingHistory(bundle.getId());
+ final List<BlockingState> history1 = api.getBlockingHistory(bundle);
+ final List<BlockingState> history2 = api.getBlockingHistory(bundle.getId());
Assert.assertEquals(history1.size(), 2);
- Assert.assertEquals(history1.first().getStateName(), overdueStateName);
- Assert.assertEquals(history1.last().getStateName(), overdueStateName2);
+ Assert.assertEquals(history1.get(0).getStateName(), overdueStateName);
+ Assert.assertEquals(history1.get(1).getStateName(), overdueStateName2);
Assert.assertEquals(history2.size(), 2);
- Assert.assertEquals(history2.first().getStateName(), overdueStateName);
- Assert.assertEquals(history2.last().getStateName(), overdueStateName2);
+ Assert.assertEquals(history2.get(0).getStateName(), overdueStateName);
+ Assert.assertEquals(history2.get(1).getStateName(), overdueStateName2);
}
}
diff --git a/junction/src/test/java/com/ning/billing/junction/blocking/TestBlockingChecker.java b/junction/src/test/java/com/ning/billing/junction/blocking/TestBlockingChecker.java
index 9959583..d1c5ff7 100644
--- a/junction/src/test/java/com/ning/billing/junction/blocking/TestBlockingChecker.java
+++ b/junction/src/test/java/com/ning/billing/junction/blocking/TestBlockingChecker.java
@@ -16,6 +16,7 @@
package com.ning.billing.junction.blocking;
+import java.util.List;
import java.util.SortedSet;
import java.util.UUID;
@@ -71,12 +72,12 @@ public class TestBlockingChecker extends JunctionTestSuite {
}
@Override
- public SortedSet<BlockingState> getBlockingHistoryFor(final Blockable overdueable) {
+ public List<BlockingState> getBlockingHistoryFor(final Blockable overdueable) {
throw new UnsupportedOperationException();
}
@Override
- public SortedSet<BlockingState> getBlockingHistoryFor(final UUID overdueableId) {
+ public List<BlockingState> getBlockingHistoryFor(final UUID overdueableId) {
throw new UnsupportedOperationException();
}
diff --git a/junction/src/test/java/com/ning/billing/junction/dao/TestBlockingDao.java b/junction/src/test/java/com/ning/billing/junction/dao/TestBlockingDao.java
index 17c7f18..55d7e5a 100644
--- a/junction/src/test/java/com/ning/billing/junction/dao/TestBlockingDao.java
+++ b/junction/src/test/java/com/ning/billing/junction/dao/TestBlockingDao.java
@@ -16,6 +16,7 @@
package com.ning.billing.junction.dao;
+import java.util.List;
import java.util.SortedSet;
import java.util.UUID;
@@ -87,15 +88,15 @@ public class TestBlockingDao extends JunctionTestSuiteWithEmbeddedDB {
final SubscriptionBundle bundle = Mockito.mock(SubscriptionBundle.class);
Mockito.when(bundle.getId()).thenReturn(uuid);
- final SortedSet<BlockingState> history1 = dao.getBlockingHistoryFor(bundle);
- final SortedSet<BlockingState> history2 = dao.getBlockingHistoryFor(bundle.getId());
+ final List<BlockingState> history1 = dao.getBlockingHistoryFor(bundle);
+ final List<BlockingState> history2 = dao.getBlockingHistoryFor(bundle.getId());
Assert.assertEquals(history1.size(), 2);
- Assert.assertEquals(history1.first().getStateName(), overdueStateName);
- Assert.assertEquals(history1.last().getStateName(), overdueStateName2);
+ Assert.assertEquals(history1.get(0).getStateName(), overdueStateName);
+ Assert.assertEquals(history1.get(1).getStateName(), overdueStateName2);
Assert.assertEquals(history2.size(), 2);
- Assert.assertEquals(history2.first().getStateName(), overdueStateName);
- Assert.assertEquals(history2.last().getStateName(), overdueStateName2);
+ Assert.assertEquals(history2.get(0).getStateName(), overdueStateName);
+ Assert.assertEquals(history2.get(1).getStateName(), overdueStateName2);
}
}
diff --git a/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBillingApi.java b/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBillingApi.java
index ef9f1b4..1fe5c0b 100644
--- a/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBillingApi.java
+++ b/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBillingApi.java
@@ -366,7 +366,7 @@ public class TestBillingApi extends JunctionTestSuite {
((MockCatalog) catalogService.getFullCatalog()).setBillingAlignment(BillingAlignment.ACCOUNT);
- final SortedSet<BlockingState> blockingStates = new TreeSet<BlockingState>();
+ final List<BlockingState> blockingStates = new ArrayList<BlockingState>();
blockingStates.add(new DefaultBlockingState(bunId, DISABLED_BUNDLE, Blockable.Type.SUBSCRIPTION_BUNDLE, "test", true, true, true, now.plusDays(1)));
blockingStates.add(new DefaultBlockingState(bunId, CLEAR_BUNDLE, Blockable.Type.SUBSCRIPTION_BUNDLE, "test", false, false, false, now.plusDays(2)));
@@ -386,16 +386,16 @@ public class TestBillingApi extends JunctionTestSuite {
}
@Override
- public SortedSet<BlockingState> getBlockingHistory(final UUID overdueableId) {
+ public List<BlockingState> getBlockingHistory(final UUID overdueableId) {
if (overdueableId == bunId) {
return blockingStates;
}
- return new TreeSet<BlockingState>();
+ return new ArrayList<BlockingState>();
}
@Override
- public SortedSet<BlockingState> getBlockingHistory(final Blockable overdueable) {
- return new TreeSet<BlockingState>();
+ public List<BlockingState> getBlockingHistory(final Blockable overdueable) {
+ return new ArrayList<BlockingState>();
}
});
diff --git a/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBlockingCalculator.java b/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBlockingCalculator.java
index e6dd137..91c478f 100644
--- a/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBlockingCalculator.java
+++ b/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBlockingCalculator.java
@@ -135,7 +135,7 @@ public class TestBlockingCalculator extends JunctionTestSuite {
billingEvents.add(C);
billingEvents.add(D);
- final SortedSet<BlockingState> blockingStates = new TreeSet<BlockingState>();
+ final List<BlockingState> blockingStates = new ArrayList<BlockingState>();
blockingStates.add(new DefaultBlockingState(bundleId1, DISABLED_BUNDLE, Blockable.Type.SUBSCRIPTION_BUNDLE, "test", true, true, true, now));
blockingStates.add(new DefaultBlockingState(bundleId1, CLEAR_BUNDLE, Blockable.Type.SUBSCRIPTION_BUNDLE, "test", false, false, false, now.plusDays(2)));
@@ -647,12 +647,12 @@ public class TestBlockingCalculator extends JunctionTestSuite {
@Test
public void testCreateDisablePairs() {
- SortedSet<BlockingState> blockingEvents;
+ List<BlockingState> blockingEvents;
final UUID ovdId = UUID.randomUUID();
final DateTime now = clock.getUTCNow();
//simple events open clear -> disabled
- blockingEvents = new TreeSet<BlockingState>();
+ blockingEvents = new ArrayList<BlockingState>();
blockingEvents.add(new DefaultBlockingState(ovdId, CLEAR_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", false, false, false, now));
blockingEvents.add(new DefaultBlockingState(ovdId, DISABLED_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", true, true, true, now.plusDays(1)));
@@ -663,7 +663,7 @@ public class TestBlockingCalculator extends JunctionTestSuite {
assertNull(pairs.get(0).getEnd());
//simple events closed clear -> disabled
- blockingEvents = new TreeSet<BlockingState>();
+ blockingEvents = new ArrayList<BlockingState>();
blockingEvents.add(new DefaultBlockingState(ovdId, CLEAR_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", false, false, false, now));
blockingEvents.add(new DefaultBlockingState(ovdId, DISABLED_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", true, true, true, now.plusDays(1)));
blockingEvents.add(new DefaultBlockingState(ovdId, CLEAR_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", false, false, false, now.plusDays(2)));
@@ -676,7 +676,7 @@ public class TestBlockingCalculator extends JunctionTestSuite {
assertEquals(pairs.get(0).getEnd(), now.plusDays(2));
//simple BUNDLE events closed clear -> disabled
- blockingEvents = new TreeSet<BlockingState>();
+ blockingEvents = new ArrayList<BlockingState>();
blockingEvents.add(new DefaultBlockingState(ovdId, CLEAR_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", false, false, false, now));
blockingEvents.add(new DefaultBlockingState(ovdId, DISABLED_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", true, true, true, now.plusDays(1)));
blockingEvents.add(new DefaultBlockingState(ovdId, CLEAR_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", false, false, false, now.plusDays(2)));
@@ -689,7 +689,7 @@ public class TestBlockingCalculator extends JunctionTestSuite {
assertEquals(pairs.get(0).getEnd(), now.plusDays(2));
//two or more disableds in a row
- blockingEvents = new TreeSet<BlockingState>();
+ blockingEvents = new ArrayList<BlockingState>();
blockingEvents.add(new DefaultBlockingState(ovdId, CLEAR_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", false, false, false, now));
blockingEvents.add(new DefaultBlockingState(ovdId, DISABLED_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", true, true, true, now.plusDays(1)));
blockingEvents.add(new DefaultBlockingState(ovdId, DISABLED_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", true, true, true, now.plusDays(2)));
@@ -702,7 +702,7 @@ public class TestBlockingCalculator extends JunctionTestSuite {
assertNotNull(pairs.get(0).getEnd());
assertEquals(pairs.get(0).getEnd(), now.plusDays(3));
- blockingEvents = new TreeSet<BlockingState>();
+ blockingEvents = new ArrayList<BlockingState>();
blockingEvents.add(new DefaultBlockingState(ovdId, CLEAR_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", false, false, false, now));
blockingEvents.add(new DefaultBlockingState(ovdId, DISABLED_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", true, true, true, now.plusDays(1)));
blockingEvents.add(new DefaultBlockingState(ovdId, DISABLED_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", true, true, true, now.plusDays(2)));
diff --git a/overdue/src/test/java/com/ning/billing/overdue/applicator/ApplicatorMockJunctionModule.java b/overdue/src/test/java/com/ning/billing/overdue/applicator/ApplicatorMockJunctionModule.java
index a309949..1f49c9d 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/applicator/ApplicatorMockJunctionModule.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/applicator/ApplicatorMockJunctionModule.java
@@ -16,6 +16,7 @@
package com.ning.billing.overdue.applicator;
+import java.util.List;
import java.util.SortedSet;
import java.util.UUID;
@@ -89,12 +90,12 @@ public class ApplicatorMockJunctionModule extends MockJunctionModule {
}
@Override
- public SortedSet<BlockingState> getBlockingHistory(final Blockable overdueable) {
+ public List<BlockingState> getBlockingHistory(final Blockable overdueable) {
throw new UnsupportedOperationException();
}
@Override
- public SortedSet<BlockingState> getBlockingHistory(final UUID overdueableId) {
+ public List<BlockingState> getBlockingHistory(final UUID overdueableId) {
throw new UnsupportedOperationException();
}