package com.limegroup.gnutella.xml; import java.util.HashMap; import java.util.Map; import java.util.Collection; /** * Used to map schema URIs to Reply Collections. * * @author Sumeet Thadani */ public class SchemaReplyCollectionMapper{ private Map mapper; private static SchemaReplyCollectionMapper instance; //constructor private SchemaReplyCollectionMapper() { mapper = new HashMap(); } public static synchronized SchemaReplyCollectionMapper instance() { if (instance == null) instance = new SchemaReplyCollectionMapper(); return instance; } /** * Adds the SchemaURI to a HashMap with the replyCollection. * <p> * Warning/Note:If the schemaURI already corresponds to a ReplyCollection * this method will replace thet old reply collection with the new one. * The old collection will be lost! */ public synchronized void add(String schemaURI, LimeXMLReplyCollection replyCollection) { mapper.put(schemaURI, replyCollection); } /** * Looks up and returns the <tt>LimeXMLReplyCollection</tt> value for the * supplied schemaURI key. * * @ return the <tt>LimeXMLReplyCollection</tt> for the given schema URI, * or <tt>null</tt> if we the requested mapping does not exist */ public synchronized LimeXMLReplyCollection getReplyCollection(String schemaURI) { return (LimeXMLReplyCollection)mapper.get(schemaURI); } /** * Returns a collection of all available LimeXMLReplyCollections. * YOU MUST SYNCHRONIZE ITERATION OVER THE COLLECTION IF IT CAN BE MODIFIED. */ public synchronized Collection getCollections() { return mapper.values(); } }