You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xindice-dev@xml.apache.org by ks...@apache.org on 2002/03/22 11:32:51 UTC
cvs commit: xml-xindice/java/scratchpad/src/org/apache/xindice/server/rpc/messages GetDocument.java InsertDocument.java
kstaken 02/03/22 02:32:51
Modified: java/scratchpad/src/org/apache/xindice/server/rpc
Client.java RPCDefaultMessage.java
RPCMessageHandler.java
java/scratchpad/src/org/apache/xindice/server/rpc/messages
GetDocument.java InsertDocument.java
Log:
Updates to support UTF-8 and general cleanup.
Revision Changes Path
1.3 +13 -4 xml-xindice/java/scratchpad/src/org/apache/xindice/server/rpc/Client.java
Index: Client.java
===================================================================
RCS file: /home/cvs/xml-xindice/java/scratchpad/src/org/apache/xindice/server/rpc/Client.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Client.java 22 Mar 2002 07:07:09 -0000 1.2
+++ Client.java 22 Mar 2002 10:32:51 -0000 1.3
@@ -56,7 +56,7 @@
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
- * $Id: Client.java,v 1.2 2002/03/22 07:07:09 kstaken Exp $
+ * $Id: Client.java,v 1.3 2002/03/22 10:32:51 kstaken Exp $
*/
import java.util.*;
@@ -68,7 +68,9 @@
*/
public class Client {
public static Hashtable run(Hashtable message) throws Exception {
- XmlRpcClient client = new XmlRpcClient("http://localhost:4080/");
+ XmlRpc.setEncoding("UTF8");
+ XmlRpc.setDriver("xerces");
+ XmlRpcClient client = new XmlRpcClient("http://localhost:4080/RPC2");
Vector params = new Vector();
params.addElement(message);
@@ -77,11 +79,18 @@
public static void main(String[] args) throws Exception {
Hashtable message = new Hashtable();
- message.put("message", "GetDocument");
- message.put("key", "utf8");
+ message.put("message", "InsertDocument");
+ message.put("key", "utf8-test");
message.put("collection", "/db/test3");
+ message.put("document",
+ "<?xml version=\"1.0\" encoding=\"utf-8\"?><test>� test � � �</test>");
Hashtable result = run(message);
System.out.println(result.get("result"));
+
+ message.put("message", "GetDocument");
+
+ result = run(message);
+ System.out.println(result.get("result"));
}
}
1.2 +6 -1 xml-xindice/java/scratchpad/src/org/apache/xindice/server/rpc/RPCDefaultMessage.java
Index: RPCDefaultMessage.java
===================================================================
RCS file: /home/cvs/xml-xindice/java/scratchpad/src/org/apache/xindice/server/rpc/RPCDefaultMessage.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RPCDefaultMessage.java 22 Mar 2002 06:26:19 -0000 1.1
+++ RPCDefaultMessage.java 22 Mar 2002 10:32:51 -0000 1.2
@@ -56,7 +56,7 @@
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
- * $Id: RPCDefaultMessage.java,v 1.1 2002/03/22 06:26:19 kstaken Exp $
+ * $Id: RPCDefaultMessage.java,v 1.2 2002/03/22 10:32:51 kstaken Exp $
*/
import java.util.Hashtable;
@@ -67,6 +67,11 @@
* @author kstaken
*/
public class RPCDefaultMessage implements RPCMessage {
+ public static final String RESULT_PARAM = "result";
+ public static final String KEY_PARAM = "key";
+ public static final String COLLECTION_PARAM = "collection";
+ public static final String DOCUMENT_PARAM = "document";
+
public Hashtable execute(Hashtable message) throws Exception {
return null;
}
1.2 +43 -28 xml-xindice/java/scratchpad/src/org/apache/xindice/server/rpc/RPCMessageHandler.java
Index: RPCMessageHandler.java
===================================================================
RCS file: /home/cvs/xml-xindice/java/scratchpad/src/org/apache/xindice/server/rpc/RPCMessageHandler.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RPCMessageHandler.java 22 Mar 2002 06:26:19 -0000 1.1
+++ RPCMessageHandler.java 22 Mar 2002 10:32:51 -0000 1.2
@@ -56,7 +56,7 @@
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
- * $Id: RPCMessageHandler.java,v 1.1 2002/03/22 06:26:19 kstaken Exp $
+ * $Id: RPCMessageHandler.java,v 1.2 2002/03/22 10:32:51 kstaken Exp $
*/
/**
@@ -82,8 +82,17 @@
protected XmlRpcServer xmlrpc;
public RPCMessageHandler() {
+ XmlRpc.setEncoding("UTF8");
+ try {
+ // TODO: This introduces a firm dependency on xerces. fix it.
+ XmlRpc.setDriver("xerces");
+ }
+ catch (Exception e) {
+ System.out.println("XML-RPC support requires Xerces");
+ }
+
xmlrpc = new XmlRpcServer();
- xmlrpc.addHandler ("$default", new RPCMessageInterface());
+ xmlrpc.addHandler ("$default", new RPCMessageInterface());
}
public void setKernel(Kernel kernel) {
@@ -100,34 +109,40 @@
return true;
}
- public boolean run(Script script, Gateway gateway) {
- String pathinfo = gateway.getRequestHeader("PATH_INFO");
+ public boolean run(Script script, Gateway gateway) {
+ String pathinfo = gateway.getRequestHeader("PATH_INFO");
- // We only handle POST requests
- if ( ! gateway.getRequestHeader("REQUEST_METHOD").equals("POST") ) {
- return true;
- }
-
- DataOutputStream dos = new DataOutputStream(gateway.getOutputStream());
-
- try {
- byte[] result = xmlrpc.execute(gateway.getInputStream());
- gateway.setResponseHeader("Content-type", "text/xml");
- gateway.setResponseHeader("Content-length", Integer.toString(result.length));
-
- dos.write(result);
- dos.flush();
-
- gateway.send(200);
- gateway.logMessage(LogManager.LOG_GENERAL,
- gateway.getRequestHeader("REQUEST_METHOD") + " " + pathinfo + " " +
- gateway.getResponseHeader("Content-length"));
- }
- catch ( Exception e ) {
- gateway.sendException(this.getName(), e);
- }
+ // We only handle all requests under /RPC2
+ // We just use that endpoint since it's common in the XML-RPC community.
+ if ( ! pathinfo.startsWith("/RPC2") ) {
+ return true;
+ }
+
+ // We only handle POST requests
+ if ( ! gateway.getRequestHeader("REQUEST_METHOD").equals("POST") ) {
+ return true;
+ }
+
+ DataOutputStream dos = new DataOutputStream(gateway.getOutputStream());
+
+ try {
+ byte[] result = xmlrpc.execute(gateway.getInputStream());
+ gateway.setResponseHeader("Content-type", "text/xml");
+ gateway.setResponseHeader("Content-length", Integer.toString(result.length));
+
+ dos.write(result);
+ dos.flush();
+
+ gateway.send(200);
+ gateway.logMessage(LogManager.LOG_GENERAL,
+ gateway.getRequestHeader("REQUEST_METHOD") + " " + pathinfo + " " +
+ gateway.getResponseHeader("Content-length"));
+ }
+ catch ( Exception e ) {
+ gateway.sendException(this.getName(), e);
+ }
- return false;
+ return false;
}
}
1.2 +3 -6 xml-xindice/java/scratchpad/src/org/apache/xindice/server/rpc/messages/GetDocument.java
Index: GetDocument.java
===================================================================
RCS file: /home/cvs/xml-xindice/java/scratchpad/src/org/apache/xindice/server/rpc/messages/GetDocument.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- GetDocument.java 22 Mar 2002 06:26:19 -0000 1.1
+++ GetDocument.java 22 Mar 2002 10:32:51 -0000 1.2
@@ -56,10 +56,11 @@
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
- * $Id: GetDocument.java,v 1.1 2002/03/22 06:26:19 kstaken Exp $
+ * $Id: GetDocument.java,v 1.2 2002/03/22 10:32:51 kstaken Exp $
*/
import java.util.Hashtable;
+import java.io.*;
import org.w3c.dom.*;
@@ -70,11 +71,7 @@
/**
*
*/
-public class GetDocument extends RPCDefaultMessage {
- public static final String RESULT_PARAM = "result";
- public static final String KEY_PARAM = "key";
- public static final String COLLECTION_PARAM = "collection";
-
+public class GetDocument extends RPCDefaultMessage {
// TODO: should have a simple way to validate params.
public Hashtable execute(Hashtable message) throws Exception {
1.2 +15 -13 xml-xindice/java/scratchpad/src/org/apache/xindice/server/rpc/messages/InsertDocument.java
Index: InsertDocument.java
===================================================================
RCS file: /home/cvs/xml-xindice/java/scratchpad/src/org/apache/xindice/server/rpc/messages/InsertDocument.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- InsertDocument.java 22 Mar 2002 07:07:10 -0000 1.1
+++ InsertDocument.java 22 Mar 2002 10:32:51 -0000 1.2
@@ -56,7 +56,7 @@
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
- * $Id: InsertDocument.java,v 1.1 2002/03/22 07:07:10 kstaken Exp $
+ * $Id: InsertDocument.java,v 1.2 2002/03/22 10:32:51 kstaken Exp $
*/
import java.util.Hashtable;
@@ -65,29 +65,31 @@
import org.apache.xindice.core.*;
import org.apache.xindice.xml.*;
+import org.apache.xindice.xml.dom.*;
import org.apache.xindice.server.rpc.*;
/**
*
*/
-public class InsertDocument extends RPCDefaultMessage {
- public static final String RESULT_PARAM = "result";
- public static final String KEY_PARAM = "key";
- public static final String COLLECTION_PARAM = "collection";
-
- // TODO: should have a simple way to validate params.
-
+public class InsertDocument extends RPCDefaultMessage {
public Hashtable execute(Hashtable message) throws Exception {
- Collection col = getCollection( (String) message.get(COLLECTION_PARAM) );
+ Collection col = getCollection((String) message.get(COLLECTION_PARAM));
- Document doc = col.getDocument( (String) message.get(KEY_PARAM) );
+ Document doc = DOMParser.toDocument((String) message.get(DOCUMENT_PARAM));
if ( doc == null ) {
- throw new Exception( "Document not found " +
- (String) message.get(KEY_PARAM) );
+ throw new Exception( "Unable to parse Document" );
}
+ String id = (String) message.get(KEY_PARAM);
+ if ( id.equals( "" ) ) {
+ id = col.insertDocument( doc ).toString();
+ }
+ else {
+ col.insertDocument( id, doc );
+ }
+
Hashtable result = new Hashtable();
- result.put(RESULT_PARAM, TextWriter.toString( doc ));
+ result.put(RESULT_PARAM, id);
return result;
}
}