*/
package org.wamblee.xmlrouter.impl;
+import static org.wamblee.xmlrouter.impl.MessageUtil.*;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
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.
*
*
* @param <T>
*/
-public abstract class ConfigImpl<T extends Identifiable> implements
+// TODO make sure that each item inside this config is prefixed with the id of
+// the config.
+public abstract class ConfigImpl<T extends Identifiable<T>> implements
ExtendedConfig<T> {
private Id<Config> id;
*/
@Override
public synchronized void add(T aT) {
- // TODO test duplicate ids.
- notNull(aT);
- registered.add(wrap(aT));
+ notNull("aT", aT);
+ registered.add(wrap(id.getId() + ".", aT));
}
/**
* Object to wrap.
* @return Wrapped object.
*/
- public abstract T wrap(T aT);
+ public abstract T wrap(String aPrefix, T aT);
/*
* (non-Javadoc)
*/
@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();
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");
- }
- }
}