From: Erik Brakkee Date: Mon, 25 Jul 2011 19:49:51 +0000 (+0200) Subject: more typesafety in the interface X-Git-Tag: PAX_EXAM_MOCKITO_ISSUE~37 X-Git-Url: http://wamblee.org/gitweb/?a=commitdiff_plain;h=5b4ee8d862b98d127abb04c646017c184d005838;p=xmlrouter more typesafety in the interface --- diff --git a/config/src/main/java/org/wamblee/xmlrouter/config/Config.java b/config/src/main/java/org/wamblee/xmlrouter/config/RouterConfig.java similarity index 73% rename from config/src/main/java/org/wamblee/xmlrouter/config/Config.java rename to config/src/main/java/org/wamblee/xmlrouter/config/RouterConfig.java index 9ecdcfe..db69d74 100644 --- a/config/src/main/java/org/wamblee/xmlrouter/config/Config.java +++ b/config/src/main/java/org/wamblee/xmlrouter/config/RouterConfig.java @@ -12,7 +12,7 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ + */ package org.wamblee.xmlrouter.config; import java.util.Collection; @@ -24,24 +24,35 @@ import org.wamblee.xmlrouter.common.Id; * * @author Erik Brakkee */ -public interface Config { +public interface RouterConfig { + + // Documents Id addDocumentType(DocumentType aType); void removeDocumentType(Id aId); - Collection getDocumentTypes(); + Collection> getDocumentTypes(); + + DocumentType getDocumentType(Id aId); + + // Transformations Id addTransformation(Transformation aTransformation); void removeTransformation(Id aId); - Collection getTransformations(); + Collection> getTransformations(); + + Transformation getTransformation(Id aId); + + // Filters Id addFilter(Filter aFilter); void removeFilter(Id aId); - Collection getFilters(); + Collection> getFilters(); + Filter getFilter(Id aId); } diff --git a/impl/src/main/java/org/wamblee/xmlrouter/impl/Transformations.java b/impl/src/main/java/org/wamblee/xmlrouter/impl/Transformations.java index 20455e8..7fd3e10 100644 --- a/impl/src/main/java/org/wamblee/xmlrouter/impl/Transformations.java +++ b/impl/src/main/java/org/wamblee/xmlrouter/impl/Transformations.java @@ -31,7 +31,7 @@ import org.wamblee.xmlrouter.config.Transformation; public class Transformations { private AtomicLong sequenceNumber; - private Map transformations; + private Map, Transformation> transformations; private List vertices; private TransformationPath[][] matrix; @@ -39,7 +39,7 @@ public class Transformations { public Transformations() { sequenceNumber = new AtomicLong(1); - transformations = new LinkedHashMap(); + transformations = new LinkedHashMap, Transformation>(); vertices = new ArrayList(); matrix = new TransformationPath[0][0]; } @@ -47,8 +47,7 @@ public class Transformations { public Id addTransformation(Transformation aTransformation) { long seqno = sequenceNumber.getAndIncrement(); Id id = new Id(seqno); - transformations.put(seqno, - new RobustTransformation(id, aTransformation)); + transformations.put(id, new RobustTransformation(id, aTransformation)); computeTransformationSequences(); return id; } @@ -145,12 +144,16 @@ public class Transformations { } public void removeTransformation(Id aId) { - transformations.remove(aId.getId()); + transformations.remove(aId); computeTransformationSequences(); } - public Collection getTransformations() { - return Collections.unmodifiableCollection(transformations.values()); + public Collection> getTransformations() { + return Collections.unmodifiableCollection(transformations.keySet()); + } + + public Transformation getTransformation(Id aId) { + return transformations.get(aId); } @Override diff --git a/impl/src/main/java/org/wamblee/xmlrouter/impl/XMLRouter.java b/impl/src/main/java/org/wamblee/xmlrouter/impl/XMLRouter.java index 6b460d1..e86593d 100644 --- a/impl/src/main/java/org/wamblee/xmlrouter/impl/XMLRouter.java +++ b/impl/src/main/java/org/wamblee/xmlrouter/impl/XMLRouter.java @@ -32,9 +32,9 @@ import javax.xml.transform.dom.DOMSource; import org.wamblee.general.Clock; import org.wamblee.xml.XMLDocument; import org.wamblee.xmlrouter.common.Id; -import org.wamblee.xmlrouter.config.Config; import org.wamblee.xmlrouter.config.DocumentType; import org.wamblee.xmlrouter.config.Filter; +import org.wamblee.xmlrouter.config.RouterConfig; import org.wamblee.xmlrouter.config.Transformation; import org.wamblee.xmlrouter.listener.EventInfo; import org.wamblee.xmlrouter.listener.EventListener; @@ -44,7 +44,7 @@ import org.wamblee.xmlrouter.subscribe.DestinationRegistry; // TODO concurrency. -public class XMLRouter implements Config, Gateway, DestinationRegistry { +public class XMLRouter implements RouterConfig, Gateway, DestinationRegistry { private static final Logger LOGGER = Logger.getLogger(XMLRouter.class .getName()); @@ -53,26 +53,26 @@ public class XMLRouter implements Config, Gateway, DestinationRegistry { private Clock clock; private AtomicLong nextEventId; private AtomicLong sequenceNumbers; - private Map documentTypes; + private Map, DocumentType> documentTypes; private Transformations transformations; - private Map filters; - private Map destinations; + private Map, Filter> filters; + private Map, Destination> destinations; public XMLRouter(Clock aClock, EventListener aListener) { listener = aListener; clock = aClock; nextEventId = new AtomicLong(clock.currentTimeMillis()); sequenceNumbers = new AtomicLong(1); - documentTypes = new LinkedHashMap(); + documentTypes = new LinkedHashMap, DocumentType>(); transformations = new Transformations(); - filters = new LinkedHashMap(); - destinations = new LinkedHashMap(); + filters = new LinkedHashMap, Filter>(); + destinations = new LinkedHashMap, Destination>(); } @Override public Id addDocumentType(DocumentType aType) { long seqno = sequenceNumbers.getAndIncrement(); - documentTypes.put(seqno, aType); + documentTypes.put(new Id(seqno), aType); return new Id(seqno); } @@ -82,8 +82,13 @@ public class XMLRouter implements Config, Gateway, DestinationRegistry { } @Override - public Collection getDocumentTypes() { - return Collections.unmodifiableCollection(documentTypes.values()); + public Collection> getDocumentTypes() { + return Collections.unmodifiableCollection(documentTypes.keySet()); + } + + @Override + public DocumentType getDocumentType(Id aId) { + return documentTypes.get(aId); } @Override @@ -97,14 +102,19 @@ public class XMLRouter implements Config, Gateway, DestinationRegistry { } @Override - public Collection getTransformations() { + public Collection> getTransformations() { return transformations.getTransformations(); } + @Override + public Transformation getTransformation(Id aId) { + return transformations.getTransformation(aId); + } + @Override public Id addFilter(Filter aFilter) { long seqno = sequenceNumbers.getAndIncrement(); - filters.put(seqno, aFilter); + filters.put(new Id(seqno), aFilter); return new Id(seqno); } @@ -114,8 +124,13 @@ public class XMLRouter implements Config, Gateway, DestinationRegistry { } @Override - public Collection getFilters() { - return Collections.unmodifiableCollection(filters.values()); + public Collection> getFilters() { + return Collections.unmodifiableCollection(filters.keySet()); + } + + @Override + public Filter getFilter(Id aId) { + return filters.get(aId); } @Override @@ -168,8 +183,9 @@ public class XMLRouter implements Config, Gateway, DestinationRegistry { .getPossibleTargetTypes(aInputType)); // ask each destination what target types, if any they want to have. - for (Map.Entry entry : destinations.entrySet()) { - long destinationId = entry.getKey(); + for (Map.Entry, Destination> entry : destinations + .entrySet()) { + Id destinationId = entry.getKey(); Destination destination = entry.getValue(); Collection requested = destination .chooseFromTargetTypes(possibleTargetTypes); @@ -200,7 +216,7 @@ public class XMLRouter implements Config, Gateway, DestinationRegistry { // all transformations done and all filters still // allow the event. boolean result = destination.receive(transformed); - listener.delivered(aInfo, ts, destinationId, + listener.delivered(aInfo, ts, destinationId.getId(), destination.getName(), result); delivered = delivered || result; @@ -280,13 +296,13 @@ public class XMLRouter implements Config, Gateway, DestinationRegistry { notNull("destination", aDestination); long seqno = sequenceNumbers.getAndIncrement(); Id id = new Id(seqno); - destinations.put(seqno, new RobustDestination(id, aDestination)); + destinations.put(id, new RobustDestination(id, aDestination)); return id; } @Override public void unregisterDestination(Id aId) { - destinations.remove(aId.getId()); + destinations.remove(aId); } private void notNull(String aName, Object aValue) {