diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultDuration.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultDuration.java
index 6fc145a..cc1e343 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultDuration.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultDuration.java
@@ -24,6 +24,8 @@ import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.joda.time.Period;
+import org.killbill.billing.ErrorCode;
+import org.killbill.billing.catalog.api.CatalogApiException;
import org.killbill.billing.catalog.api.Duration;
import org.killbill.billing.catalog.api.TimeUnit;
import org.killbill.xmlloader.ValidatingConfig;
@@ -61,7 +63,7 @@ public class DefaultDuration extends ValidatingConfig<StandaloneCatalog> impleme
}
@Override
- public DateTime addToDateTime(final DateTime dateTime) {
+ public DateTime addToDateTime(final DateTime dateTime) throws CatalogApiException {
if ((number == null) && (unit != TimeUnit.UNLIMITED)) {
return dateTime;
}
@@ -75,12 +77,12 @@ public class DefaultDuration extends ValidatingConfig<StandaloneCatalog> impleme
return dateTime.plusYears(number);
case UNLIMITED:
default:
- throw new IllegalStateException("Unexpected duration unit " + unit);
+ throw new CatalogApiException(ErrorCode.CAT_UNDEFINED_DURATION, unit);
}
}
@Override
- public LocalDate addToLocalDate(final LocalDate localDate) {
+ public LocalDate addToLocalDate(final LocalDate localDate) throws CatalogApiException {
if ((number == null) && (unit != TimeUnit.UNLIMITED)) {
return localDate;
}
@@ -94,7 +96,7 @@ public class DefaultDuration extends ValidatingConfig<StandaloneCatalog> impleme
return localDate.plusYears(number);
case UNLIMITED:
default:
- throw new IllegalStateException("Unexpected duration unit " + unit);
+ throw new CatalogApiException(ErrorCode.CAT_UNDEFINED_DURATION, unit);
}
}
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlan.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlan.java
index 1955c5e..7d1c326 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlan.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlan.java
@@ -252,7 +252,10 @@ public class DefaultPlan extends ValidatingConfig<StandaloneCatalog> implements
}
final Recurring recurring = phase.getRecurring();
if (recurring == null || recurring.getRecurringPrice() == null || recurring.getRecurringPrice().isZero()) {
- result = phase.getDuration().addToDateTime(result);
+ try {
+ result = phase.getDuration().addToDateTime(result);
+ } catch (final CatalogApiException ignored) {
+ }
} else {
break;
}