CompositeConfig tested.
[xmlrouter] / impl / src / main / java / org / wamblee / xmlrouter / impl / ConfigImpl.java
index 5beeed5c12da92ece9bb9833d39bbe0c0bc2241e..0324e78f8353b1dd58598e49b66ecca786b6552d 100644 (file)
@@ -15,6 +15,8 @@
  */
 package org.wamblee.xmlrouter.impl;
 
+import static org.wamblee.xmlrouter.impl.MessageUtil.*;
+
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
@@ -24,6 +26,9 @@ import org.wamblee.xmlrouter.common.Id;
 import org.wamblee.xmlrouter.config.Config;
 import org.wamblee.xmlrouter.config.Identifiable;
 
+// TODO think real hard about the prefixing. We want a consistent view for clients. 
+// perhaps only provide a method to add items and hide all access to the ids. 
+
 /**
  * Default implementation of the {@link Config} interface.
  * 
@@ -33,7 +38,7 @@ import org.wamblee.xmlrouter.config.Identifiable;
  */
 // TODO make sure that each item inside this config is prefixed with the id of
 // the config.
-public abstract class ConfigImpl<T extends Identifiable> implements
+public abstract class ConfigImpl<T extends Identifiable<T>> implements
     ExtendedConfig<T> {
 
     private Id<Config> id;
@@ -60,8 +65,7 @@ public abstract class ConfigImpl<T extends Identifiable> implements
      */
     @Override
     public synchronized void add(T aT) {
-        // TODO test duplicate ids.
-        notNull(aT);
+        notNull("aT", aT);
         registered.add(wrap(id.getId() + ".", aT));
     }
 
@@ -83,7 +87,7 @@ public abstract class ConfigImpl<T extends Identifiable> implements
      */
     @Override
     public synchronized boolean remove(Id<T> aId) {
-        notNull(aId);
+        notNull("aId", aId);
         Iterator<T> i = registered.iterator();
         while (i.hasNext()) {
             T t = i.next();
@@ -99,16 +103,4 @@ public abstract class ConfigImpl<T extends Identifiable> implements
     public List<T> values() {
         return Collections.unmodifiableList(registered);
     }
-
-    private void notNull(T aT) {
-        if (aT == null) {
-            throw new NullPointerException("Object is null");
-        }
-    }
-
-    private void notNull(Id<T> aId) {
-        if (aId == null) {
-            throw new NullPointerException("Id is null");
-        }
-    }
 }