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 />


Reply via email to