killbill-uncached
Code review for #99 Add new overdue config parameter initialReevaluationInterval …
10/10/2013 12:33:29 AM
Changes
beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueIntegration.java 3(+3 -0)
beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithOverdueEnforcementOffTag.java 3(+3 -0)
Details
diff --git a/api/src/main/java/com/ning/billing/overdue/config/api/OverdueStateSet.java b/api/src/main/java/com/ning/billing/overdue/config/api/OverdueStateSet.java
index 989fd51..47de144 100644
--- a/api/src/main/java/com/ning/billing/overdue/config/api/OverdueStateSet.java
+++ b/api/src/main/java/com/ning/billing/overdue/config/api/OverdueStateSet.java
@@ -17,16 +17,16 @@
package com.ning.billing.overdue.config.api;
import org.joda.time.LocalDate;
+import org.joda.time.Period;
-import com.ning.billing.entitlement.api.Blockable;
import com.ning.billing.overdue.OverdueApiException;
import com.ning.billing.overdue.OverdueState;
public interface OverdueStateSet {
- public abstract OverdueState getClearState() throws OverdueApiException;
+ public OverdueState getClearState() throws OverdueApiException;
- public abstract OverdueState findState(String stateName) throws OverdueApiException;
+ public OverdueState findState(String stateName) throws OverdueApiException;
/**
* Compute an overdue state, given a billing state, at a given day.
@@ -36,9 +36,11 @@ public interface OverdueStateSet {
* @return the overdue state
* @throws OverdueApiException
*/
- public abstract OverdueState calculateOverdueState(BillingState billingState, LocalDate now) throws OverdueApiException;
+ public OverdueState calculateOverdueState(BillingState billingState, LocalDate now) throws OverdueApiException;
- public abstract int size();
+ public int size();
- public abstract OverdueState getFirstState();
+ public OverdueState getFirstState();
+
+ public Period getInitialReevaluationInterval();
}
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueIntegration.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueIntegration.java
index cba122d..54e870b 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueIntegration.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueIntegration.java
@@ -52,6 +52,9 @@ public class TestOverdueIntegration extends TestOverdueBase {
public String getOverdueConfig() {
final String configXml = "<overdueConfig>" +
" <accountOverdueStates>" +
+ " <initialReevaluationInterval>" +
+ " <unit>DAYS</unit><number>5</number>" +
+ " </initialReevaluationInterval>" +
" <state name=\"OD3\">" +
" <condition>" +
" <timeSinceEarliestUnpaidInvoiceEqualsOrExceeds>" +
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithOverdueEnforcementOffTag.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithOverdueEnforcementOffTag.java
index 604b4fc..ec8a989 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithOverdueEnforcementOffTag.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithOverdueEnforcementOffTag.java
@@ -39,6 +39,9 @@ public class TestOverdueWithOverdueEnforcementOffTag extends TestOverdueBase {
public String getOverdueConfig() {
final String configXml = "<overdueConfig>" +
" <accountOverdueStates>" +
+ " <initialReevaluationInterval>" +
+ " <unit>DAYS</unit><number>5</number>" +
+ " </initialReevaluationInterval>" +
" <state name=\"OD1\">" +
" <condition>" +
" <timeSinceEarliestUnpaidInvoiceEqualsOrExceeds>" +
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithSubscriptionCancellation.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithSubscriptionCancellation.java
index 1051226..67a23ad 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithSubscriptionCancellation.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithSubscriptionCancellation.java
@@ -41,6 +41,9 @@ public class TestOverdueWithSubscriptionCancellation extends TestOverdueBase {
public String getOverdueConfig() {
final String configXml = "<overdueConfig>" +
" <accountOverdueStates>" +
+ " <initialReevaluationInterval>" +
+ " <unit>DAYS</unit><number>5</number>" +
+ " </initialReevaluationInterval>" +
" <state name=\"OD1\">" +
" <condition>" +
" <timeSinceEarliestUnpaidInvoiceEqualsOrExceeds>" +
diff --git a/overdue/src/main/java/com/ning/billing/overdue/api/DefaultOverdueUserApi.java b/overdue/src/main/java/com/ning/billing/overdue/api/DefaultOverdueUserApi.java
index 2903845..5d16dd7 100644
--- a/overdue/src/main/java/com/ning/billing/overdue/api/DefaultOverdueUserApi.java
+++ b/overdue/src/main/java/com/ning/billing/overdue/api/DefaultOverdueUserApi.java
@@ -62,7 +62,7 @@ public class DefaultOverdueUserApi implements OverdueUserApi {
public OverdueState getOverdueStateFor(final Account overdueable, final TenantContext context) throws OverdueException {
try {
final String stateName = accessApi.getBlockingStateForService(overdueable, OverdueService.OVERDUE_SERVICE_NAME, internalCallContextFactory.createInternalTenantContext(context)).getStateName();
- final OverdueStateSet states = overdueConfig.getBundleStateSet();
+ final OverdueStateSet states = overdueConfig.getStateSet();
return states.findState(stateName);
} catch (OverdueApiException e) {
throw new OverdueException(e, ErrorCode.OVERDUE_CAT_ERROR_ENCOUNTERED, overdueable.getId(), overdueable.getClass().getSimpleName());
diff --git a/overdue/src/main/java/com/ning/billing/overdue/applicator/OverdueStateApplicator.java b/overdue/src/main/java/com/ning/billing/overdue/applicator/OverdueStateApplicator.java
index 371b839..7ce6f08 100644
--- a/overdue/src/main/java/com/ning/billing/overdue/applicator/OverdueStateApplicator.java
+++ b/overdue/src/main/java/com/ning/billing/overdue/applicator/OverdueStateApplicator.java
@@ -31,7 +31,10 @@ import com.ning.billing.ErrorCode;
import com.ning.billing.ObjectType;
import com.ning.billing.account.api.Account;
import com.ning.billing.account.api.AccountApiException;
+import com.ning.billing.account.api.AccountInternalApi;
import com.ning.billing.bus.api.PersistentBus;
+import com.ning.billing.callcontext.InternalCallContext;
+import com.ning.billing.callcontext.InternalTenantContext;
import com.ning.billing.catalog.api.BillingActionPolicy;
import com.ning.billing.clock.Clock;
import com.ning.billing.entitlement.api.BlockingApiException;
@@ -39,9 +42,11 @@ import com.ning.billing.entitlement.api.BlockingStateType;
import com.ning.billing.entitlement.api.Entitlement;
import com.ning.billing.entitlement.api.EntitlementApi;
import com.ning.billing.entitlement.api.EntitlementApiException;
+import com.ning.billing.events.OverdueChangeInternalEvent;
import com.ning.billing.invoice.api.InvoiceApiException;
import com.ning.billing.invoice.api.InvoiceInternalApi;
-import com.ning.billing.invoice.api.InvoiceUserApi;
+import com.ning.billing.junction.BlockingInternalApi;
+import com.ning.billing.junction.DefaultBlockingState;
import com.ning.billing.ovedue.notification.OverdueCheckPoster;
import com.ning.billing.overdue.OverdueApiException;
import com.ning.billing.overdue.OverdueCancellationPolicy;
@@ -49,18 +54,13 @@ import com.ning.billing.overdue.OverdueService;
import com.ning.billing.overdue.OverdueState;
import com.ning.billing.overdue.config.api.BillingState;
import com.ning.billing.overdue.config.api.OverdueException;
-import com.ning.billing.callcontext.InternalCallContext;
-import com.ning.billing.callcontext.InternalTenantContext;
+import com.ning.billing.overdue.config.api.OverdueStateSet;
+import com.ning.billing.tag.TagInternalApi;
import com.ning.billing.util.dao.NonEntityDao;
import com.ning.billing.util.email.DefaultEmailSender;
import com.ning.billing.util.email.EmailApiException;
import com.ning.billing.util.email.EmailConfig;
import com.ning.billing.util.email.EmailSender;
-import com.ning.billing.events.OverdueChangeInternalEvent;
-import com.ning.billing.account.api.AccountInternalApi;
-import com.ning.billing.junction.BlockingInternalApi;
-import com.ning.billing.junction.DefaultBlockingState;
-import com.ning.billing.tag.TagInternalApi;
import com.ning.billing.util.tag.ControlTagType;
import com.ning.billing.util.tag.Tag;
@@ -85,10 +85,18 @@ public class OverdueStateApplicator {
private final NonEntityDao nonEntityDao;
@Inject
- public OverdueStateApplicator(final BlockingInternalApi accessApi, final AccountInternalApi accountApi, final EntitlementApi entitlementApi,
+ public OverdueStateApplicator(final BlockingInternalApi accessApi,
+ final AccountInternalApi accountApi,
+ final EntitlementApi entitlementApi,
final InvoiceInternalApi invoiceInternalApi,
- final Clock clock, final OverdueCheckPoster poster, final OverdueEmailGenerator overdueEmailGenerator,
- final EmailConfig config, final PersistentBus bus, final NonEntityDao nonEntityDao, final TagInternalApi tagApi) {
+ final Clock clock,
+ final OverdueCheckPoster poster,
+ final OverdueEmailGenerator overdueEmailGenerator,
+ final EmailConfig config,
+ final PersistentBus bus,
+ final NonEntityDao nonEntityDao,
+ final TagInternalApi tagApi) {
+
this.blockingApi = accessApi;
this.accountApi = accountApi;
this.entitlementApi = entitlementApi;
@@ -103,7 +111,7 @@ public class OverdueStateApplicator {
}
- public void apply(final OverdueState firstOverdueState, final BillingState billingState,
+ public void apply(final OverdueStateSet overdueStateSet, final BillingState billingState,
final Account account, final OverdueState previousOverdueState,
final OverdueState nextOverdueState, final InternalCallContext context) throws OverdueException {
try {
@@ -115,12 +123,16 @@ public class OverdueStateApplicator {
log.debug("OverdueStateApplicator:apply <enter> : time = " + clock.getUTCNow() + ", previousState = " + previousOverdueState.getName() + ", nextState = " + nextOverdueState);
+ final OverdueState firstOverdueState = overdueStateSet.getFirstState();
+ final Period initialReevaluationPeriod = overdueStateSet.getInitialReevaluationInterval() != null ?
+ overdueStateSet.getInitialReevaluationInterval() : new Period(24, 0, 0, 0);
+
final boolean conditionForNextNotfication = !nextOverdueState.isClearState() ||
// We did not reach the first state yet but we have an unpaid invoice
(firstOverdueState != null && billingState != null && billingState.getDateOfEarliestUnpaidInvoice() != null);
if (conditionForNextNotfication) {
- final Period reevaluationInterval = nextOverdueState.isClearState() ? firstOverdueState.getReevaluationInterval() : nextOverdueState.getReevaluationInterval();
+ final Period reevaluationInterval = nextOverdueState.isClearState() ? initialReevaluationPeriod : nextOverdueState.getReevaluationInterval();
createFutureNotification(account, clock.getUTCNow().plus(reevaluationInterval), context);
log.debug("OverdueStateApplicator <notificationQ> : inserting notification for time = " + clock.getUTCNow().plus(reevaluationInterval));
@@ -149,7 +161,7 @@ public class OverdueStateApplicator {
}
try {
- bus.post(createOverdueEvent(account, previousOverdueState.getName(), nextOverdueState.getName(),isBlockBillingTransition(previousOverdueState, nextOverdueState),
+ bus.post(createOverdueEvent(account, previousOverdueState.getName(), nextOverdueState.getName(), isBlockBillingTransition(previousOverdueState, nextOverdueState),
isUnblockBillingTransition(previousOverdueState, nextOverdueState), context));
} catch (Exception e) {
log.error("Error posting overdue change event to bus", e);
diff --git a/overdue/src/main/java/com/ning/billing/overdue/config/OverdueConfig.java b/overdue/src/main/java/com/ning/billing/overdue/config/OverdueConfig.java
index 9d8a697..aeece23 100644
--- a/overdue/src/main/java/com/ning/billing/overdue/config/OverdueConfig.java
+++ b/overdue/src/main/java/com/ning/billing/overdue/config/OverdueConfig.java
@@ -32,7 +32,7 @@ public class OverdueConfig extends ValidatingConfig<OverdueConfig> {
@XmlElement(required = true, name = "accountOverdueStates")
private OverdueStatesAccount accountOverdueStates = new OverdueStatesAccount();
- public DefaultOverdueStateSet getBundleStateSet() {
+ public DefaultOverdueStateSet getStateSet() {
return accountOverdueStates;
}
@@ -42,8 +42,8 @@ public class OverdueConfig extends ValidatingConfig<OverdueConfig> {
return accountOverdueStates.validate(root, errors);
}
- public OverdueConfig setOverdueStatesBundle(final OverdueStatesAccount bundleODS) {
- this.accountOverdueStates = bundleODS;
+ public OverdueConfig setOverdueStates(final OverdueStatesAccount accountOverdueStates) {
+ this.accountOverdueStates = accountOverdueStates;
return this;
}
diff --git a/overdue/src/main/java/com/ning/billing/overdue/config/OverdueStatesAccount.java b/overdue/src/main/java/com/ning/billing/overdue/config/OverdueStatesAccount.java
index 669f84b..a95725d 100644
--- a/overdue/src/main/java/com/ning/billing/overdue/config/OverdueStatesAccount.java
+++ b/overdue/src/main/java/com/ning/billing/overdue/config/OverdueStatesAccount.java
@@ -18,8 +18,15 @@ package com.ning.billing.overdue.config;
import javax.xml.bind.annotation.XmlElement;
+import org.joda.time.Period;
+
+import com.ning.billing.catalog.api.TimeUnit;
+
public class OverdueStatesAccount extends DefaultOverdueStateSet {
+ @XmlElement(required = false, name = "initialReevaluationInterval")
+ private DefaultDuration initialReevaluationInterval;
+
@SuppressWarnings("unchecked")
@XmlElement(required = true, name = "state")
private DefaultOverdueState[] accountOverdueStates = new DefaultOverdueState[0];
@@ -29,8 +36,21 @@ public class OverdueStatesAccount extends DefaultOverdueStateSet {
return accountOverdueStates;
}
- protected OverdueStatesAccount setBundleOverdueStates(final DefaultOverdueState[] bundleOverdueStates) {
- this.accountOverdueStates = bundleOverdueStates;
+ @Override
+ public Period getInitialReevaluationInterval() {
+ if (initialReevaluationInterval == null || initialReevaluationInterval.getUnit() == TimeUnit.UNLIMITED || initialReevaluationInterval.getNumber() == 0) {
+ return null;
+ }
+ return initialReevaluationInterval.toJodaPeriod();
+ }
+
+ protected OverdueStatesAccount setAccountOverdueStates(final DefaultOverdueState[] accountOverdueStates) {
+ this.accountOverdueStates = accountOverdueStates;
+ return this;
+ }
+
+ protected OverdueStatesAccount setInitialReevaluationInterval(final DefaultDuration initialReevaluationInterval) {
+ this.initialReevaluationInterval = initialReevaluationInterval;
return this;
}
}
diff --git a/overdue/src/main/java/com/ning/billing/overdue/wrapper/OverdueWrapper.java b/overdue/src/main/java/com/ning/billing/overdue/wrapper/OverdueWrapper.java
index a8b07da..2959b65 100644
--- a/overdue/src/main/java/com/ning/billing/overdue/wrapper/OverdueWrapper.java
+++ b/overdue/src/main/java/com/ning/billing/overdue/wrapper/OverdueWrapper.java
@@ -62,7 +62,7 @@ public class OverdueWrapper {
final OverdueState currentOverdueState = overdueStateSet.findState(previousOverdueStateName);
final OverdueState nextOverdueState = overdueStateSet.calculateOverdueState(billingState, clock.getToday(billingState.getAccountTimeZone()));
- overdueStateApplicator.apply(overdueStateSet.getFirstState(), billingState, overdueable, currentOverdueState, nextOverdueState, context);
+ overdueStateApplicator.apply(overdueStateSet, billingState, overdueable, currentOverdueState, nextOverdueState, context);
return nextOverdueState;
}
diff --git a/overdue/src/main/java/com/ning/billing/overdue/wrapper/OverdueWrapperFactory.java b/overdue/src/main/java/com/ning/billing/overdue/wrapper/OverdueWrapperFactory.java
index f358102..5e188be 100644
--- a/overdue/src/main/java/com/ning/billing/overdue/wrapper/OverdueWrapperFactory.java
+++ b/overdue/src/main/java/com/ning/billing/overdue/wrapper/OverdueWrapperFactory.java
@@ -18,6 +18,7 @@ package com.ning.billing.overdue.wrapper;
import java.util.UUID;
+import org.joda.time.Period;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -26,6 +27,7 @@ import com.ning.billing.account.api.AccountApiException;
import com.ning.billing.clock.Clock;
import com.ning.billing.overdue.applicator.OverdueStateApplicator;
import com.ning.billing.overdue.calculator.BillingStateCalculator;
+import com.ning.billing.overdue.config.DefaultDuration;
import com.ning.billing.overdue.config.DefaultOverdueState;
import com.ning.billing.overdue.config.DefaultOverdueStateSet;
import com.ning.billing.overdue.config.OverdueConfig;
@@ -62,7 +64,7 @@ public class OverdueWrapperFactory {
@SuppressWarnings("unchecked")
public OverdueWrapper createOverdueWrapperFor(final Account blockable) throws OverdueException {
- return (OverdueWrapper) new OverdueWrapper(blockable, api, getOverdueStateSetBundle(),
+ return (OverdueWrapper) new OverdueWrapper(blockable, api, getOverdueStateSet(),
clock, billingStateCalculator, overdueStateApplicator);
}
@@ -71,7 +73,7 @@ public class OverdueWrapperFactory {
try {
Account account = accountApi.getAccountById(id, context);
- return new OverdueWrapper(account, api, getOverdueStateSetBundle(),
+ return new OverdueWrapper(account, api, getOverdueStateSet(),
clock, billingStateCalculator, overdueStateApplicator);
} catch (AccountApiException e) {
@@ -79,8 +81,8 @@ public class OverdueWrapperFactory {
}
}
- private OverdueStateSet getOverdueStateSetBundle() {
- if (config == null || config.getBundleStateSet() == null) {
+ private OverdueStateSet getOverdueStateSet() {
+ if (config == null || config.getStateSet() == null) {
return new DefaultOverdueStateSet() {
@SuppressWarnings("unchecked")
@@ -88,9 +90,14 @@ public class OverdueWrapperFactory {
protected DefaultOverdueState[] getStates() {
return new DefaultOverdueState[0];
}
+
+ @Override
+ public Period getInitialReevaluationInterval() {
+ return null;
+ }
};
} else {
- return config.getBundleStateSet();
+ return config.getStateSet();
}
}
diff --git a/overdue/src/test/java/com/ning/billing/overdue/applicator/TestOverdueStateApplicator.java b/overdue/src/test/java/com/ning/billing/overdue/applicator/TestOverdueStateApplicator.java
index 5f9b236..f98528b 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/applicator/TestOverdueStateApplicator.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/applicator/TestOverdueStateApplicator.java
@@ -30,6 +30,7 @@ import com.ning.billing.account.api.Account;
import com.ning.billing.overdue.OverdueState;
import com.ning.billing.overdue.OverdueTestSuiteWithEmbeddedDB;
import com.ning.billing.overdue.config.OverdueConfig;
+import com.ning.billing.overdue.config.api.OverdueStateSet;
import com.ning.billing.util.config.catalog.XMLLoader;
import com.ning.billing.events.OverdueChangeInternalEvent;
import com.ning.billing.junction.DefaultBlockingState;
@@ -48,21 +49,22 @@ public class TestOverdueStateApplicator extends OverdueTestSuiteWithEmbeddedDB {
final Account account = Mockito.mock(Account.class);
Mockito.when(account.getId()).thenReturn(UUID.randomUUID());
- final OverdueState clearState = config.getBundleStateSet().findState(DefaultBlockingState.CLEAR_STATE_NAME);
+ final OverdueStateSet overdueStateSet = config.getStateSet();
+ final OverdueState clearState = config.getStateSet().findState(DefaultBlockingState.CLEAR_STATE_NAME);
OverdueState state;
- state = config.getBundleStateSet().findState("OD1");
- applicator.apply(null, null, account, clearState, state, internalCallContext);
+ state = config.getStateSet().findState("OD1");
+ applicator.apply(overdueStateSet, null, account, clearState, state, internalCallContext);
testOverdueHelper.checkStateApplied(state);
checkBussEvent("OD1");
- state = config.getBundleStateSet().findState("OD2");
- applicator.apply(null, null, account, clearState, state, internalCallContext);
+ state = config.getStateSet().findState("OD2");
+ applicator.apply(overdueStateSet, null, account, clearState, state, internalCallContext);
testOverdueHelper.checkStateApplied(state);
checkBussEvent("OD2");
- state = config.getBundleStateSet().findState("OD3");
- applicator.apply(null, null, account, clearState, state, internalCallContext);
+ state = config.getStateSet().findState("OD3");
+ applicator.apply(overdueStateSet, null, account, clearState, state, internalCallContext);
testOverdueHelper.checkStateApplied(state);
checkBussEvent("OD3");
}
diff --git a/overdue/src/test/java/com/ning/billing/overdue/config/MockOverdueRules.java b/overdue/src/test/java/com/ning/billing/overdue/config/MockOverdueRules.java
index 51f8970..cbdb2f5 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/config/MockOverdueRules.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/config/MockOverdueRules.java
@@ -16,8 +16,6 @@
package com.ning.billing.overdue.config;
-import com.ning.billing.subscription.api.user.SubscriptionBaseBundle;
-
public class MockOverdueRules extends OverdueConfig {
public static final String CLEAR_STATE = "Clear";
@@ -25,8 +23,8 @@ public class MockOverdueRules extends OverdueConfig {
@SuppressWarnings("unchecked")
public MockOverdueRules() {
final OverdueStatesAccount bundleODS = new OverdueStatesAccount();
- bundleODS.setBundleOverdueStates(new DefaultOverdueState[]{new DefaultOverdueState().setName(CLEAR_STATE)});
- setOverdueStatesBundle(bundleODS);
+ bundleODS.setAccountOverdueStates(new DefaultOverdueState[]{new DefaultOverdueState().setName(CLEAR_STATE)});
+ setOverdueStates(bundleODS);
}
}
diff --git a/overdue/src/test/java/com/ning/billing/overdue/config/TestOverdueConfig.java b/overdue/src/test/java/com/ning/billing/overdue/config/TestOverdueConfig.java
index 787ee3c..b898794 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/config/TestOverdueConfig.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/config/TestOverdueConfig.java
@@ -22,6 +22,7 @@ import java.io.InputStream;
import org.testng.Assert;
import org.testng.annotations.Test;
+import com.ning.billing.catalog.api.TimeUnit;
import com.ning.billing.overdue.EmailNotification;
import com.ning.billing.overdue.OverdueTestSuiteNoDB;
import com.ning.billing.util.config.catalog.XMLLoader;
@@ -32,6 +33,9 @@ public class TestOverdueConfig extends OverdueTestSuiteNoDB {
public void testParseConfig() throws Exception {
final String xml = "<overdueConfig>" +
" <accountOverdueStates>" +
+ " <initialReevaluationInterval>" +
+ " <unit>DAYS</unit><number>1</number>" +
+ " </initialReevaluationInterval>" +
" <state name=\"OD1\">" +
" <condition>" +
" <timeSinceEarliestUnpaidInvoiceEqualsOrExceeds>" +
@@ -65,11 +69,14 @@ public class TestOverdueConfig extends OverdueTestSuiteNoDB {
"</overdueConfig>";
final InputStream is = new ByteArrayInputStream(xml.getBytes());
final OverdueConfig c = XMLLoader.getObjectFromStreamNoValidation(is, OverdueConfig.class);
- Assert.assertEquals(c.getBundleStateSet().size(), 2);
+ Assert.assertEquals(c.getStateSet().size(), 2);
- Assert.assertNull(c.getBundleStateSet().getStates()[0].getEnterStateEmailNotification());
+ Assert.assertNull(c.getStateSet().getStates()[0].getEnterStateEmailNotification());
- final EmailNotification secondNotification = c.getBundleStateSet().getStates()[1].getEnterStateEmailNotification();
+ Assert.assertNotNull(c.getStateSet().getInitialReevaluationInterval());
+ Assert.assertEquals(c.getStateSet().getInitialReevaluationInterval().getDays(), 1);
+
+ final EmailNotification secondNotification = c.getStateSet().getStates()[1].getEnterStateEmailNotification();
Assert.assertEquals(secondNotification.getSubject(), "ToTo");
Assert.assertEquals(secondNotification.getTemplateName(), "Titi");
Assert.assertFalse(secondNotification.isHTML());
diff --git a/overdue/src/test/java/com/ning/billing/overdue/TestOverdueHelper.java b/overdue/src/test/java/com/ning/billing/overdue/TestOverdueHelper.java
index eff7e09..a2bb61a 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/TestOverdueHelper.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/TestOverdueHelper.java
@@ -45,6 +45,9 @@ public class TestOverdueHelper {
private final String configXml =
"<overdueConfig>" +
" <accountOverdueStates>" +
+ " <initialReevaluationInterval>" +
+ " <unit>DAYS</unit><number>100</number>" +
+ " </initialReevaluationInterval>" +
" <state name=\"OD3\">" +
" <condition>" +
" <timeSinceEarliestUnpaidInvoiceEqualsOrExceeds>" +
diff --git a/overdue/src/test/java/com/ning/billing/overdue/wrapper/TestOverdueWrapper.java b/overdue/src/test/java/com/ning/billing/overdue/wrapper/TestOverdueWrapper.java
index 0e14e49..3f61d8c 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/wrapper/TestOverdueWrapper.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/wrapper/TestOverdueWrapper.java
@@ -41,19 +41,19 @@ public class TestOverdueWrapper extends OverdueTestSuiteWithEmbeddedDB {
OverdueWrapper wrapper;
OverdueState state;
- state = config.getBundleStateSet().findState("OD1");
+ state = config.getStateSet().findState("OD1");
account = testOverdueHelper.createAccount(clock.getUTCToday().minusDays(31));
wrapper = overdueWrapperFactory.createOverdueWrapperFor(account);
wrapper.refresh(internalCallContext);
testOverdueHelper.checkStateApplied(state);
- state = config.getBundleStateSet().findState("OD2");
+ state = config.getStateSet().findState("OD2");
account = testOverdueHelper.createAccount(clock.getUTCToday().minusDays(41));
wrapper = overdueWrapperFactory.createOverdueWrapperFor(account);
wrapper.refresh(internalCallContext);
testOverdueHelper.checkStateApplied(state);
- state = config.getBundleStateSet().findState("OD3");
+ state = config.getStateSet().findState("OD3");
account = testOverdueHelper.createAccount(clock.getUTCToday().minusDays(51));
wrapper = overdueWrapperFactory.createOverdueWrapperFor(account);
wrapper.refresh(internalCallContext);
@@ -70,7 +70,7 @@ public class TestOverdueWrapper extends OverdueTestSuiteWithEmbeddedDB {
final InputStream is = new ByteArrayInputStream(testOverdueHelper.getConfigXml().getBytes());
final OverdueConfig config = XMLLoader.getObjectFromStreamNoValidation(is, OverdueConfig.class);
- state = config.getBundleStateSet().findState(DefaultBlockingState.CLEAR_STATE_NAME);
+ state = config.getStateSet().findState(DefaultBlockingState.CLEAR_STATE_NAME);
account = testOverdueHelper.createAccount(clock.getUTCToday().minusDays(31));
wrapper = overdueWrapperFactory.createOverdueWrapperFor(account);
final OverdueState result = wrapper.refresh(internalCallContext);