Details
diff --git a/catalog/src/main/java/com/ning/billing/catalog/overdue/DefaultOverdueState.java b/catalog/src/main/java/com/ning/billing/catalog/overdue/DefaultOverdueState.java
index 8e0981e..354782a 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/overdue/DefaultOverdueState.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/overdue/DefaultOverdueState.java
@@ -22,11 +22,17 @@ import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlID;
+import com.ning.billing.catalog.StandaloneCatalog;
import com.ning.billing.catalog.api.overdue.OverdueState;
import com.ning.billing.catalog.api.overdue.Overdueable;
+import com.ning.billing.util.config.ValidatingConfig;
+import com.ning.billing.util.config.ValidationError;
+import com.ning.billing.util.config.ValidationErrors;
@XmlAccessorType(XmlAccessType.NONE)
-public class DefaultOverdueState<T extends Overdueable> implements OverdueState<T> {
+public class DefaultOverdueState<T extends Overdueable> extends ValidatingConfig<StandaloneCatalog> implements OverdueState<T> {
+
+ private static final int MAX_NAME_LENGTH = 50;
// TODO - need to implement Clear states
@@ -74,6 +80,8 @@ public class DefaultOverdueState<T extends Overdueable> implements OverdueState<
public boolean applyCancel() {
return applyCancel;
}
+
+
protected DefaultCondition<T> getCondition() {
@@ -105,4 +113,13 @@ public class DefaultOverdueState<T extends Overdueable> implements OverdueState<
return false;
}
+ @Override
+ public ValidationErrors validate(StandaloneCatalog root,
+ ValidationErrors errors) {
+ if(name.length() > MAX_NAME_LENGTH) {
+ errors.add(new ValidationError(String.format("Name of state '%s' exceeds the maximum length of %d",name,MAX_NAME_LENGTH),root.getCatalogURI(), DefaultOverdueState.class, name));
+ }
+ return errors;
+ }
+
}
diff --git a/catalog/src/main/java/com/ning/billing/catalog/overdue/DefaultOverdueStateSet.java b/catalog/src/main/java/com/ning/billing/catalog/overdue/DefaultOverdueStateSet.java
index 1781242..77c691d 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/overdue/DefaultOverdueStateSet.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/overdue/DefaultOverdueStateSet.java
@@ -19,11 +19,13 @@ package com.ning.billing.catalog.overdue;
import org.apache.commons.lang.NotImplementedException;
import org.joda.time.DateTime;
+import com.ning.billing.catalog.StandaloneCatalog;
import com.ning.billing.catalog.api.overdue.BillingState;
import com.ning.billing.catalog.api.overdue.OverdueStateSet;
import com.ning.billing.catalog.api.overdue.Overdueable;
+import com.ning.billing.util.config.ValidatingConfig;
-public abstract class DefaultOverdueStateSet<T extends Overdueable> implements OverdueStateSet<T> {
+public abstract class DefaultOverdueStateSet<T extends Overdueable> extends ValidatingConfig<StandaloneCatalog> implements OverdueStateSet<T> {
private DefaultOverdueState<T> clearState;
protected abstract DefaultOverdueState<T>[] getStates();
diff --git a/catalog/src/main/java/com/ning/billing/catalog/overdue/OverdueRules.java b/catalog/src/main/java/com/ning/billing/catalog/overdue/OverdueRules.java
index 5f745f9..34b40e4 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/overdue/OverdueRules.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/overdue/OverdueRules.java
@@ -20,10 +20,13 @@ import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
+import com.ning.billing.catalog.StandaloneCatalog;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
+import com.ning.billing.util.config.ValidatingConfig;
+import com.ning.billing.util.config.ValidationErrors;
@XmlAccessorType(XmlAccessType.NONE)
-public class OverdueRules {
+public class OverdueRules extends ValidatingConfig<StandaloneCatalog> {
@XmlElement(required=false, name="bundleOverdueStates")
private OverdueStatesBundle bundleOverdueStates;
@@ -32,4 +35,11 @@ public class OverdueRules {
public DefaultOverdueStateSet<SubscriptionBundle> getBundleStateSet() {
return bundleOverdueStates;
}
+
+
+ @Override
+ public ValidationErrors validate(StandaloneCatalog root,
+ ValidationErrors errors) {
+ return bundleOverdueStates.validate(root, errors);
+ }
}
diff --git a/catalog/src/main/java/com/ning/billing/catalog/overdue/OverdueStatesBundle.java b/catalog/src/main/java/com/ning/billing/catalog/overdue/OverdueStatesBundle.java
index 1258ac9..c506dfd 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/overdue/OverdueStatesBundle.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/overdue/OverdueStatesBundle.java
@@ -18,7 +18,9 @@ package com.ning.billing.catalog.overdue;
import javax.xml.bind.annotation.XmlElement;
+import com.ning.billing.catalog.StandaloneCatalog;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
+import com.ning.billing.util.config.ValidationErrors;
public class OverdueStatesBundle extends DefaultOverdueStateSet<SubscriptionBundle>{
@XmlElement(required=false, name="bundleOverdueStages")
@@ -33,6 +35,15 @@ public class OverdueStatesBundle extends DefaultOverdueStateSet<SubscriptionBund
protected DefaultOverdueState<SubscriptionBundle> getClearState() {
return null;
}
+
+ @Override
+ public ValidationErrors validate(StandaloneCatalog root,
+ ValidationErrors errors) {
+ for(DefaultOverdueState<SubscriptionBundle> state: bundleOverdueStates) {
+ state.validate(root, errors);
+ }
+ return errors;
+ }
}
diff --git a/catalog/src/main/java/com/ning/billing/catalog/StandaloneCatalog.java b/catalog/src/main/java/com/ning/billing/catalog/StandaloneCatalog.java
index 0e7e658..72a7e2e 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/StandaloneCatalog.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/StandaloneCatalog.java
@@ -247,6 +247,7 @@ public class StandaloneCatalog extends ValidatingConfig<StandaloneCatalog> imple
validate(catalog,errors, plans);
priceLists.validate(catalog,errors);
planRules.validate(catalog, errors);
+ overdueRules.validate(catalog,errors);
return errors;
}