X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fxmlrouter%2Fimpl%2FConfigImpl.java;h=54c0c6d2357604103284b1d818c754a2e1fdc551;hb=19413a6699295b4bbebc1b3bdb9838fd4370e581;hp=789f75c5178db2da3579c10cd14f1fd96c193932;hpb=f77e29e9ae2505009ffc9270f4c4adfde331fa62;p=xmlrouter diff --git a/impl/src/main/java/org/wamblee/xmlrouter/impl/ConfigImpl.java b/impl/src/main/java/org/wamblee/xmlrouter/impl/ConfigImpl.java index 789f75c..54c0c6d 100644 --- a/impl/src/main/java/org/wamblee/xmlrouter/impl/ConfigImpl.java +++ b/impl/src/main/java/org/wamblee/xmlrouter/impl/ConfigImpl.java @@ -15,7 +15,6 @@ */ package org.wamblee.xmlrouter.impl; -import java.util.Collection; import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; @@ -31,16 +30,18 @@ import org.wamblee.xmlrouter.config.Config; * * @param */ -public abstract class ConfigImpl implements Config { +public abstract class ConfigImpl implements ExtendedConfig { + private boolean dirty; private AtomicLong next; private Map, T> registered; /** * Constructs the object. */ - public ConfigImpl() { - next = new AtomicLong(1); + public ConfigImpl(AtomicLong aNext) { + dirty = false; + next = aNext; registered = new LinkedHashMap, T>(); } @@ -50,14 +51,24 @@ public abstract class ConfigImpl implements Config { * @see org.wamblee.xmlrouter.config.Config#add(T) */ @Override - public Id add(T aT) { + public synchronized Id add(T aT) { notNull(aT); long seqno = next.incrementAndGet(); Id id = new Id(seqno); registered.put(id, wrap(id, aT)); + dirty = true; return id; } + /** + * This is called to wrap the given object by a safer version. + * + * @param aId + * Id. + * @param aT + * Object to wrap. + * @return Wrapped object. + */ public abstract T wrap(Id aId, T aT); /* @@ -68,31 +79,15 @@ public abstract class ConfigImpl implements Config { * .Id) */ @Override - public boolean remove(Id aId) { + public synchronized boolean remove(Id aId) { notNull(aId); + dirty = true; return registered.remove(aId) != null; } - /* - * (non-Javadoc) - * - * @see org.wamblee.xmlrouter.config.Config#ids() - */ - @Override - public Collection> ids() { - return Collections.unmodifiableCollection(registered.keySet()); - } - - /* - * (non-Javadoc) - * - * @see - * org.wamblee.xmlrouter.config.Config#get(org.wamblee.xmlrouter.common.Id) - */ @Override - public T get(Id aId) { - notNull(aId); - return registered.get(aId); + public Map, T> map() { + return Collections.unmodifiableMap(registered); } private void notNull(T aT) { @@ -106,4 +101,14 @@ public abstract class ConfigImpl implements Config { throw new NullPointerException("Id is null"); } } + + @Override + public boolean isDirty() { + return dirty; + } + + @Override + public void resetDirty() { + dirty = false; + } }