You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2013/02/23 20:12:09 UTC

svn commit: r1449391 - in /manifoldcf/branches/CONNECTORS-63/framework: api-servlet/src/main/java/org/apache/manifoldcf/apiservlet/APIServlet.java pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ManifoldCF.java

Author: kwright
Date: Sat Feb 23 19:12:08 2013
New Revision: 1449391

URL: http://svn.apache.org/r1449391
Log:
Hook up query string parsing, and pass parsed query string into API read method.

Modified:
    manifoldcf/branches/CONNECTORS-63/framework/api-servlet/src/main/java/org/apache/manifoldcf/apiservlet/APIServlet.java
    manifoldcf/branches/CONNECTORS-63/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ManifoldCF.java

Modified: manifoldcf/branches/CONNECTORS-63/framework/api-servlet/src/main/java/org/apache/manifoldcf/apiservlet/APIServlet.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-63/framework/api-servlet/src/main/java/org/apache/manifoldcf/apiservlet/APIServlet.java?rev=1449391&r1=1449390&r2=1449391&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-63/framework/api-servlet/src/main/java/org/apache/manifoldcf/apiservlet/APIServlet.java (original)
+++ manifoldcf/branches/CONNECTORS-63/framework/api-servlet/src/main/java/org/apache/manifoldcf/apiservlet/APIServlet.java Sat Feb 23 19:12:08 2013
@@ -43,37 +43,12 @@ public class APIServlet extends HttpServ
     throws ServletException
   {
     super.init(config);
-/*
-    try
-    {
-      // Set up the environment
-      ManifoldCF.initializeEnvironment();
-      // Nothing more needs to be done at this point.
-    }
-    catch (ManifoldCFException e)
-    {
-      Logging.misc.error("Error starting API service: "+e.getMessage(),e);
-      throw new ServletException("Error starting API service: "+e.getMessage(),e);
-    }
-*/
   }
 
   /** The destroy method.
   */
   public void destroy()
   {
-/*
-    try
-    {
-      // Set up the environment
-      ManifoldCF.initializeEnvironment();
-      // Nothing more needs to be done.
-    }
-    catch (ManifoldCFException e)
-    {
-      Logging.misc.error("Error shutting down API service: "+e.getMessage(),e);
-    }
-*/
     super.destroy();
   }
 
@@ -84,14 +59,13 @@ public class APIServlet extends HttpServ
   {
     try
     {
-      // Set up the environment
-      //ManifoldCF.initializeEnvironment();
-
       // Mint a thread context
       IThreadContext tc = ThreadContextFactory.make();
       
       // Get the path info string.  This will furnish the command.
       String pathInfo = request.getPathInfo();
+      // Get query string.  This is used by some GET operations.
+      String queryString = request.getQueryString();
       
       if (pathInfo == null)
       {
@@ -100,7 +74,7 @@ public class APIServlet extends HttpServ
       }
 
       // Perform the deletion
-      executeRead(tc,response,pathInfo);
+      executeRead(tc,response,pathInfo,queryString);
       
     }
     catch (ManifoldCFException e)
@@ -118,9 +92,6 @@ public class APIServlet extends HttpServ
   {
     try
     {
-      // Set up the environment
-      //ManifoldCF.initializeEnvironment();
-
       // Mint a thread context
       IThreadContext tc = ThreadContextFactory.make();
       
@@ -161,9 +132,6 @@ public class APIServlet extends HttpServ
   {
     try
     {
-      // Set up the environment
-      //ManifoldCF.initializeEnvironment();
-
       // Mint a thread context
       IThreadContext tc = ThreadContextFactory.make();
       
@@ -204,9 +172,6 @@ public class APIServlet extends HttpServ
   {
     try
     {
-      // Set up the environment
-      //ManifoldCF.initializeEnvironment();
-
       // Mint a thread context
       IThreadContext tc = ThreadContextFactory.make();
       
@@ -235,7 +200,7 @@ public class APIServlet extends HttpServ
   
   /** Perform a general "read" operation.
   */
-  protected static void executeRead(IThreadContext tc, HttpServletResponse response, String pathInfo)
+  protected static void executeRead(IThreadContext tc, HttpServletResponse response, String pathInfo, String queryString)
     throws ManifoldCFException, IOException
   {
     // Strip off leading "/"
@@ -256,12 +221,15 @@ public class APIServlet extends HttpServ
       command = pathInfo.substring(index+1);
     }
 
+    // If query string exists, parse it
+    Map<String,List<String>> queryParameters = parseQueryString(queryString);
+    
     // Execute the request.
     // Since there are no input arguments, we can do this before we look at the protocol.
     
     // There the only response distinction we have here is between exception and no exception.
     Configuration output = new Configuration();
-    boolean exists = ManifoldCF.executeReadCommand(tc,output,command);
+    boolean exists = ManifoldCF.executeReadCommand(tc,output,command,queryParameters);
     
     // Output
     
@@ -612,4 +580,33 @@ public class APIServlet extends HttpServ
     // return code 200 assumed!
   }
   
+  protected static Map<String,List<String>> parseQueryString(String queryString)
+    throws UnsupportedEncodingException
+  {
+    if (queryString == null)
+      return null;
+    Map<String,List<String>> rval = new HashMap<String,List<String>>();
+    String[] terms = queryString.split("&");
+    for (String term : terms)
+    {
+      int index = queryString.indexOf("=");
+      if (index == -1)
+        addValue(rval,URLDecoder.decode(term,"utf-8"),"");
+      else
+        addValue(rval,URLDecoder.decode(term.substring(0,index),"utf-8"),URLDecoder.decode(term.substring(index+1),"utf-8"));
+    }
+    return rval;
+  }
+  
+  protected static void addValue(Map<String,List<String>> rval, String name, String value)
+  {
+    List<String> valueList = rval.get(name);
+    if (valueList == null)
+    {
+      valueList = new ArrayList<String>(1);
+      rval.put(name,valueList);
+    }
+    valueList.add(value);
+  }
+  
 }

Modified: manifoldcf/branches/CONNECTORS-63/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ManifoldCF.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-63/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ManifoldCF.java?rev=1449391&r1=1449390&r2=1449391&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-63/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ManifoldCF.java (original)
+++ manifoldcf/branches/CONNECTORS-63/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ManifoldCF.java Sat Feb 23 19:12:08 2013
@@ -2220,8 +2220,8 @@ public class ManifoldCF extends org.apac
   *@param path is the object path.
   *@return true if the resource exists, false otherwise.
   */
-  public static boolean executeReadCommand(IThreadContext tc, Configuration output, String path)
-    throws ManifoldCFException
+  public static boolean executeReadCommand(IThreadContext tc, Configuration output, String path,
+    Map<String,List<String>> queryParameters) throws ManifoldCFException
   {
     if (path.equals("jobs"))
     {