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;
      }
   }