killbill-memoizeit

overdue: Fixes #463

1/7/2016 8:01:11 PM

Details

diff --git a/overdue/src/main/java/org/killbill/billing/overdue/config/DefaultOverdueStateSet.java b/overdue/src/main/java/org/killbill/billing/overdue/config/DefaultOverdueStateSet.java
index 522a065..0628bae 100644
--- a/overdue/src/main/java/org/killbill/billing/overdue/config/DefaultOverdueStateSet.java
+++ b/overdue/src/main/java/org/killbill/billing/overdue/config/DefaultOverdueStateSet.java
@@ -96,6 +96,6 @@ public abstract class DefaultOverdueStateSet extends ValidatingConfig<DefaultOve
 
     @Override
     public OverdueState getFirstState() {
-        return getStates()[0];
+        return getStates()[size() - 1];
     }
 }
diff --git a/overdue/src/test/java/org/killbill/billing/overdue/config/TestOverdueConfig.java b/overdue/src/test/java/org/killbill/billing/overdue/config/TestOverdueConfig.java
index c15f26f..d4326db 100644
--- a/overdue/src/test/java/org/killbill/billing/overdue/config/TestOverdueConfig.java
+++ b/overdue/src/test/java/org/killbill/billing/overdue/config/TestOverdueConfig.java
@@ -35,34 +35,34 @@ public class TestOverdueConfig extends OverdueTestSuiteNoDB {
                            "       <initialReevaluationInterval>" +
                            "           <unit>DAYS</unit><number>1</number>" +
                            "       </initialReevaluationInterval>" +
-                           "       <state name=\"OD1\">" +
+                           "       <state name=\"OD2\">" +
                            "           <condition>" +
                            "               <timeSinceEarliestUnpaidInvoiceEqualsOrExceeds>" +
-                           "                   <unit>MONTHS</unit><number>1</number>" +
+                           "                   <unit>MONTHS</unit><number>2</number>" +
                            "               </timeSinceEarliestUnpaidInvoiceEqualsOrExceeds>" +
                            "           </condition>" +
                            "           <externalMessage>Reached OD1</externalMessage>" +
                            "           <blockChanges>true</blockChanges>" +
-                           "           <disableEntitlementAndChangesBlocked>false</disableEntitlementAndChangesBlocked>" +
+                           "           <disableEntitlementAndChangesBlocked>true</disableEntitlementAndChangesBlocked>" +
                            "           <autoReevaluationInterval>" +
                            "               <unit>DAYS</unit><number>15</number>" +
                            "           </autoReevaluationInterval>" +
+                           "           <enterStateEmailNotification>" +
+                           "               <subject>ToTo</subject><templateName>Titi</templateName>" +
+                           "           </enterStateEmailNotification>" +
                            "       </state>" +
-                           "       <state name=\"OD2\">" +
+                           "       <state name=\"OD1\">" +
                            "           <condition>" +
                            "               <timeSinceEarliestUnpaidInvoiceEqualsOrExceeds>" +
-                           "                   <unit>MONTHS</unit><number>2</number>" +
+                           "                   <unit>MONTHS</unit><number>1</number>" +
                            "               </timeSinceEarliestUnpaidInvoiceEqualsOrExceeds>" +
                            "           </condition>" +
                            "           <externalMessage>Reached OD1</externalMessage>" +
                            "           <blockChanges>true</blockChanges>" +
-                           "           <disableEntitlementAndChangesBlocked>true</disableEntitlementAndChangesBlocked>" +
+                           "           <disableEntitlementAndChangesBlocked>false</disableEntitlementAndChangesBlocked>" +
                            "           <autoReevaluationInterval>" +
                            "               <unit>DAYS</unit><number>15</number>" +
                            "           </autoReevaluationInterval>" +
-                           "           <enterStateEmailNotification>" +
-                           "               <subject>ToTo</subject><templateName>Titi</templateName>" +
-                           "           </enterStateEmailNotification>" +
                            "       </state>" +
                            "   </accountOverdueStates>" +
                            "</overdueConfig>";
@@ -70,14 +70,16 @@ public class TestOverdueConfig extends OverdueTestSuiteNoDB {
         final DefaultOverdueConfig c = XMLLoader.getObjectFromStreamNoValidation(is, DefaultOverdueConfig.class);
         Assert.assertEquals(c.getOverdueStatesAccount().size(), 2);
 
-        Assert.assertNull(c.getOverdueStatesAccount().getStates()[0].getEmailNotification());
+        Assert.assertNull(c.getOverdueStatesAccount().getStates()[1].getEmailNotification());
 
         Assert.assertNotNull(c.getOverdueStatesAccount().getInitialReevaluationInterval());
         Assert.assertEquals(c.getOverdueStatesAccount().getInitialReevaluationInterval().getDays(), 1);
 
-        final EmailNotification secondNotification = c.getOverdueStatesAccount().getStates()[1].getEmailNotification();
+        final EmailNotification secondNotification = c.getOverdueStatesAccount().getStates()[0].getEmailNotification();
         Assert.assertEquals(secondNotification.getSubject(), "ToTo");
         Assert.assertEquals(secondNotification.getTemplateName(), "Titi");
         Assert.assertFalse(secondNotification.isHTML());
+
+        Assert.assertEquals(c.getOverdueStatesAccount().getFirstState().getName(), "OD1");
     }
 }