X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fxmlrouter%2Fimpl%2FCompositeConfig.java;h=3b45a3ef25b5d35d395e8703bafec1db0f1946cd;hb=3b2c669b25bfcb5a3c3f06ff9180d85143bebb2a;hp=c9e250e49824fa44272aa3f1addd919f74871c09;hpb=ef3c789029b09fe8bc279a07a7b2208e286957f0;p=xmlrouter diff --git a/impl/src/main/java/org/wamblee/xmlrouter/impl/CompositeConfig.java b/impl/src/main/java/org/wamblee/xmlrouter/impl/CompositeConfig.java index c9e250e..3b45a3e 100644 --- a/impl/src/main/java/org/wamblee/xmlrouter/impl/CompositeConfig.java +++ b/impl/src/main/java/org/wamblee/xmlrouter/impl/CompositeConfig.java @@ -23,8 +23,6 @@ import java.util.List; import java.util.Set; import org.wamblee.xmlrouter.common.Id; -import org.wamblee.xmlrouter.config.Config; -import org.wamblee.xmlrouter.config.ConfigException; import org.wamblee.xmlrouter.config.Identifiable; /** @@ -37,40 +35,53 @@ import org.wamblee.xmlrouter.config.Identifiable; public class CompositeConfig> implements ExtendedConfig { - private static final Id ID = new Id("compositeconfig"); + private static final String PREFIX = "compositeconfig"; private static final String READ_ONLY_INSTANCE = "read only instance"; - private Set> ids; + + private Class type; + private Set prefixes; private List> valueIds; private List values; - public CompositeConfig() { - ids = new HashSet>(); + public CompositeConfig(Class aType) { + type = aType; + prefixes = new HashSet(); valueIds = new ArrayList>(); values = new ArrayList(); } @Override - public Id getId() { - return ID; + public Class getType() { + return type; + } + + @Override + public String getPrefix() { + return PREFIX; } public void addConfig(Config aConfig) { notNull("aConfig", aConfig); - if (ids.contains(aConfig.getId())) { - throw new ConfigException("duplicate id '" + - aConfig.getId().toString() + "'"); + if (prefixes.contains(aConfig.getPrefix())) { + throw new ConfigException("duplicate prefix '" + + aConfig.getPrefix() + "'"); } + String prefix = aConfig.getPrefix() + "."; for (T item : aConfig.values()) { - if (valueIds.contains(item.getId())) { + Id newId = new Id(prefix + item.getId()); + if (valueIds.contains(newId)) { throw new ConfigException("duplicate id '" + item.getId().toString() + "'"); } } - ids.add(aConfig.getId()); + prefixes.add(aConfig.getPrefix()); + for (T item : aConfig.values()) { - valueIds.add(item.getId()); - values.add(item); + Id newId = new Id(prefix + item.getId()); + valueIds.add(newId); + values.add(IdentifiablePrefixProxyFactory.getProxy(prefix, item, + Identifiable.class, aConfig.getType())); } }