vgritsenko 2003/08/15 20:47:36
Modified: java/src/org/apache/xindice/client/xmldb/xmlrpc
CollectionImpl.java DatabaseImpl.java
Log:
Initialize serviceLocation in DatabaseImpl, not CollectionImpl as this is
global
to database property.
Revision Changes Path
1.34 +15 -43
xml-xindice/java/src/org/apache/xindice/client/xmldb/xmlrpc/CollectionImpl.java
Index: CollectionImpl.java
===================================================================
RCS file:
/home/cvs/xml-xindice/java/src/org/apache/xindice/client/xmldb/xmlrpc/CollectionImpl.java,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- CollectionImpl.java 16 Aug 2003 03:11:08 -0000 1.33
+++ CollectionImpl.java 16 Aug 2003 03:47:36 -0000 1.34
@@ -84,8 +84,8 @@
import org.xmldb.api.modules.XMLResource;
import javax.xml.parsers.DocumentBuilderFactory;
-import java.io.StringReader;
import java.io.IOException;
+import java.io.StringReader;
import java.net.MalformedURLException;
import java.util.Hashtable;
import java.util.Vector;
@@ -103,11 +103,6 @@
private static final Log log = LogFactory.getLog(CollectionImpl.class);
/**
- * Default path to the XML-RPC service in the web server
- */
- private static final String XINDICE_SERVICE_LOCATION = "/xindice/";
-
- /**
* Host and port number of the database server
*/
private String hostPort;
@@ -143,34 +138,12 @@
this.hostPort = hostPort;
this.serviceLocation = serviceLocation;
-
- /*
- * Determine the path in the web server to the XML-RPC service.
- * In priority order:
- * DatabaseImpl service-location property
- * (passed in the serviceLocation parameter)
- * System property "xindice.xmlrpc.service-location"
- * Default value "/xindice/"
- */
- if (serviceLocation == null) {
- serviceLocation =
System.getProperty("xindice.xmlrpc.service-location");
- }
- if (serviceLocation == null) {
- serviceLocation = XINDICE_SERVICE_LOCATION;
- }
-
- if (!serviceLocation.startsWith("/")) {
- serviceLocation = "/" + serviceLocation;
- }
- if (!serviceLocation.endsWith("/")) {
- serviceLocation = serviceLocation + "/";
- }
-
- log.debug("serviceLocation=<" + serviceLocation + ">");
- String xmlrpcURI = "http://" + hostPort + serviceLocation;
-
+ String xmlRpcURL = "http://" + hostPort + serviceLocation;
try {
- client = new XmlRpcClient(xmlrpcURI);
+ if (log.isDebugEnabled()) {
+ log.debug("Using URL: '" + "http://" + hostPort +
serviceLocation + "'");
+ }
+ client = new XmlRpcClient(xmlRpcURL);
/* Just check the collection does actually exist */
Hashtable params = new Hashtable();
@@ -178,7 +151,8 @@
String exists = (String)
runRemoteCommand("GetCollectionConfiguration", params);
if (!"yes".equals(exists)) {
- throw new XMLDBException(ErrorCodes.NO_SUCH_COLLECTION,
"Collection not found: " + collPath);
+ throw new XMLDBException(ErrorCodes.NO_SUCH_COLLECTION,
+ "Collection not found: " +
collPath);
}
} catch (MalformedURLException e) {
client = null;
@@ -188,11 +162,13 @@
} catch (IOException e) {
client = null;
// TODO: What is appropriate error code?
- throw new XMLDBException(ErrorCodes.UNKNOWN_ERROR, "Cannot
communicate with the server: " + xmlrpcURI, e);
+ throw new XMLDBException(ErrorCodes.UNKNOWN_ERROR,
+ "Cannot communicate with the server: "
+ xmlRpcURL, e);
} catch (Exception e) {
client = null;
// TODO: What is appropriate error code?
- throw new XMLDBException(ErrorCodes.NO_SUCH_COLLECTION,
"Collection not found: " + collPath, e);
+ throw new XMLDBException(ErrorCodes.NO_SUCH_COLLECTION,
+ "Collection not found: " + collPath, e);
}
}
@@ -300,14 +276,12 @@
public void storeResource(Resource res) throws XMLDBException {
if (!(res instanceof XMLResource)) {
-
throw new XMLDBException(ErrorCodes.INVALID_RESOURCE, "Only XML
resources supported");
}
-
if (res.getContent() == null) {
-
throw new XMLDBException(ErrorCodes.INVALID_RESOURCE, "no
resource data");
}
+
checkOpen();
try {
@@ -330,13 +304,11 @@
/* see superclass for documentation */
public boolean isOpen() {
-
return (client != null);
}
/* see superclass for documentation */
public String getURI() {
-
return "xmldb:" + DatabaseImpl.DRIVER_NAME + "://" + hostPort +
collPath;
}
1.17 +55 -18
xml-xindice/java/src/org/apache/xindice/client/xmldb/xmlrpc/DatabaseImpl.java
Index: DatabaseImpl.java
===================================================================
RCS file:
/home/cvs/xml-xindice/java/src/org/apache/xindice/client/xmldb/xmlrpc/DatabaseImpl.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- DatabaseImpl.java 16 Aug 2003 03:11:08 -0000 1.16
+++ DatabaseImpl.java 16 Aug 2003 03:47:36 -0000 1.17
@@ -59,10 +59,9 @@
package org.apache.xindice.client.xmldb.xmlrpc;
-import org.apache.xindice.client.xmldb.CommonConfigurable;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.xindice.client.xmldb.CommonConfigurable;
import org.apache.xmlrpc.XmlRpc;
import org.xmldb.api.base.Collection;
@@ -95,6 +94,11 @@
private static final String PROP_XMLRPC_DRIVER = "xmlrpc-driver";
/**
+ * System property name for the service location
+ */
+ private static final String SYSPROP_SERVICE_LOCATION =
"xindice.xmlrpc.service-location";
+
+ /**
* System property name for the SAX parser xml-rpc will use in case
* there were no configuration property passed
*/
@@ -106,6 +110,11 @@
private static final String DEFAULT_XMLRPC_DRIVER = "xerces";
/**
+ * Default path to the XML-RPC service in the web server
+ */
+ private static final String DEFAULT_SERVICE_LOCATION = "/xindice/";
+
+ /**
* Prefix used to denote XML:DB URI's that should use this driver
*/
static String DRIVER_NAME = "xindice";
@@ -121,6 +130,11 @@
private static boolean xmlRpcInitialized;
/**
+ * Location of the XML-RPC service in the web server
+ */
+ private String serviceLocation;
+
+ /**
* Create a new DatabaseImpl object.
*/
public DatabaseImpl() throws XMLDBException {
@@ -157,9 +171,10 @@
/**
* Initialize XML-RPC static properties: encoding, keep-alive, SAX
driver.
+ * Initialize XML-RPC service location.
*
- * @throws XMLDBException if specified (or default, if none specified)
SAX drvier
- * class could not be loaded
+ * @throws XMLDBException if specified (or default, if none specified)
SAX driver
+ * class could not be loaded
*/
private void initialize() throws XMLDBException {
synchronized(getClass()) {
@@ -184,6 +199,9 @@
}
try {
+ if (log.isDebugEnabled()) {
+ log.debug("Using SAX Driver: '" + xmlrpcDriver +
"'");
+ }
XmlRpc.setDriver(xmlrpcDriver);
} catch (Exception e) {
throw new XMLDBException(ErrorCodes.VENDOR_ERROR,
@@ -193,6 +211,35 @@
xmlRpcInitialized = true;
}
+
+ if (this.serviceLocation == null) {
+ /*
+ * Determine the path in the web server to the XML-RPC service.
+ * In priority order:
+ * DatabaseImpl service-location property
+ * (passed in the serviceLocation parameter)
+ * System property "xindice.xmlrpc.service-location"
+ * Default value "/xindice/"
+ */
+ serviceLocation = getProperty(PROP_SERVICE_LOCATION);
+ if (serviceLocation == null) {
+ serviceLocation =
System.getProperty(SYSPROP_SERVICE_LOCATION);
+ if (serviceLocation == null) {
+ serviceLocation = DEFAULT_SERVICE_LOCATION;
+ }
+ }
+
+ if (!serviceLocation.startsWith("/")) {
+ serviceLocation = "/" + serviceLocation;
+ }
+ if (!serviceLocation.endsWith("/")) {
+ serviceLocation = serviceLocation + "/";
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("Using Service Location: '" + serviceLocation +
"'");
+ }
+ }
}
/**
@@ -241,20 +288,13 @@
/* Absent host defaults to localhost and standard Xindice HTTP port
*/
if (hostPort.equals("")) {
hostPort = "127.0.0.1:8888";
- if (log.isDebugEnabled()) {
- log.debug("Using default host and port: '"+hostPort+"'");
- }
- } else {
- if (log.isDebugEnabled()) {
- log.debug("Using host and port: '"+hostPort+"'");
- }
}
- // Init XML-RPC in case it is not initialized yet
+ // Init XML-RPC in case it is not initialized yet. Initialize
serviceLocation
initialize();
try {
- return new CollectionImpl(hostPort,
getProperty(PROP_SERVICE_LOCATION), collPath);
+ return new CollectionImpl(hostPort, serviceLocation, collPath);
} catch (XMLDBException e) {
if (e.errorCode == ErrorCodes.NO_SUCH_COLLECTION) {
// per getCollection contract, return null if not found
@@ -274,7 +314,6 @@
* specific errors that occur.<br />
*/
public String getName() throws XMLDBException {
-
return DRIVER_NAME;
}
@@ -289,8 +328,6 @@
* specific errors that occur.<br />
*/
public String getConformanceLevel() throws XMLDBException {
-
return CONFORMANCE_LEVEL;
}
-
}