X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fxmlrouter%2Fimpl%2FCompositeConfig.java;h=0c6100dc3fc82c2c9a4484bc2af21e258e84d7a0;hb=5582d07a1ba9821cc789ea63b71f246e89d13cae;hp=c9e250e49824fa44272aa3f1addd919f74871c09;hpb=d7938dd34e22ba8d34b4a89840c6efbb5d866380;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..0c6100d 100644 --- a/impl/src/main/java/org/wamblee/xmlrouter/impl/CompositeConfig.java +++ b/impl/src/main/java/org/wamblee/xmlrouter/impl/CompositeConfig.java @@ -39,16 +39,24 @@ public class CompositeConfig> implements private static final Id ID = new Id("compositeconfig"); private static final String READ_ONLY_INSTANCE = "read only instance"; + + private Class type; private Set> ids; private List> valueIds; private List values; - public CompositeConfig() { + public CompositeConfig(Class aType) { + type = aType; ids = new HashSet>(); valueIds = new ArrayList>(); values = new ArrayList(); } + @Override + public Class getType() { + return type; + } + @Override public Id getId() { return ID; @@ -60,17 +68,22 @@ public class CompositeConfig> implements throw new ConfigException("duplicate id '" + aConfig.getId().toString() + "'"); } + String prefix = aConfig.getId().getId() + "."; 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()); + 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())); } }