killbill-aplcache

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;
 	}