Author: natalia Date: Sun Oct 26 07:50:07 2008 New Revision: 708000 URL: http://svn.apache.org/viewvc?rev=708000&view=rev Log: Fixed a bug where XML-RPC Xindice client could only connect to a single Xindice server
Modified: xml/xindice/trunk/java/src/org/apache/xindice/client/xmldb/xmlrpc/DatabaseImpl.java Modified: xml/xindice/trunk/java/src/org/apache/xindice/client/xmldb/xmlrpc/DatabaseImpl.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/client/xmldb/xmlrpc/DatabaseImpl.java?rev=708000&r1=707999&r2=708000&view=diff ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/client/xmldb/xmlrpc/DatabaseImpl.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/client/xmldb/xmlrpc/DatabaseImpl.java Sun Oct 26 07:50:07 2008 @@ -24,7 +24,6 @@ import org.apache.xindice.client.xmldb.CommonConfigurable; import org.apache.xmlrpc.client.XmlRpcClient; import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; - import org.xmldb.api.base.Collection; import org.xmldb.api.base.Database; import org.xmldb.api.base.ErrorCodes; @@ -32,6 +31,8 @@ import java.net.MalformedURLException; import java.net.URL; +import java.util.HashMap; +import java.util.Map; /** * Implements XML:DB's <code>Database</code> interface using XML-RPC to communicate @@ -107,11 +108,10 @@ */ private static final String CONFORMANCE_LEVEL = "0"; - /** - * XML-RPC client used to communicate with the server + * Map contains XML_RPC clients for different hostname:port addresses */ - private XmlRpcClient client; + private Map clients = new HashMap(); /** @@ -155,12 +155,12 @@ * * @param hostPort of the Xindice XML-RPC server * @return XML-RPC client connected to the Xindice server - * @throws XMLDBException + * @throws XMLDBException if host or port information was incorrect and resulted in malformed URL */ private XmlRpcClient connect(String hostPort) throws XMLDBException { synchronized (this) { - if (client == null) { + if (!clients.containsKey(hostPort)) { // Initialize XML-RPC static properties XmlRpcClientConfigImpl cfg = new XmlRpcClientConfigImpl(); cfg.setEncoding("utf-8"); @@ -219,12 +219,14 @@ cfg.setBasicPassword(basicPassword); } - client = new XmlRpcClient(); + XmlRpcClient client = new XmlRpcClient(); client.setConfig(cfg); + + clients.put(hostPort, client); } } - return client; + return (XmlRpcClient) clients.get(hostPort); } /** @@ -243,7 +245,6 @@ * null if the database does not support authentication. * @return A <code>Collection</code> instance for the requested collection or * null if the collection could not be found. - * @return The <code>Collection</code> instance * @exception XMLDBException with expected error codes.<br /> * <code>ErrorCodes.VENDOR_ERROR</code> for any vendor * specific errors that occur.<br />