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 2012/02/14 14:42:28 UTC

svn commit: r1243916 - in /incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine: DELETECommand.java GETCommand.java POSTCommand.java PUTCommand.java ScriptParser.java

Author: kwright
Date: Tue Feb 14 13:42:28 2012
New Revision: 1243916

URL: http://svn.apache.org/viewvc?rev=1243916&view=rev
Log:
Partial fix for CONNECTORS-406.  Use multithreaded connection manager for script engine.

Modified:
    incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/DELETECommand.java
    incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/GETCommand.java
    incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/POSTCommand.java
    incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/PUTCommand.java
    incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/ScriptParser.java

Modified: incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/DELETECommand.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/DELETECommand.java?rev=1243916&r1=1243915&r2=1243916&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/DELETECommand.java (original)
+++ incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/DELETECommand.java Tue Feb 14 13:42:28 2012
@@ -50,17 +50,24 @@ public class DELETECommand implements Co
     
     try
     {
-      HttpClient client = new HttpClient();
+      HttpClient client = sp.getHttpClient();
       DeleteMethod method = new DeleteMethod(urlString);
-      int resultCode = client.executeMethod(method);
-      byte[] responseData = method.getResponseBody();
-      // We presume that the data is utf-8, since that's what the API
-      // uses throughout.
-      String resultJSON = new String(responseData,"utf-8");
+      try
+      {
+        int resultCode = client.executeMethod(method);
+        byte[] responseData = method.getResponseBody();
+        // We presume that the data is utf-8, since that's what the API
+        // uses throughout.
+        String resultJSON = new String(responseData,"utf-8");
 
-      result.setReference(new VariableResult(resultCode,resultJSON));
-    
-      return false;
+        result.setReference(new VariableResult(resultCode,resultJSON));
+      
+        return false;
+      }
+      finally
+      {
+        method.releaseConnection();
+      }
     }
     catch (IOException e)
     {

Modified: incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/GETCommand.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/GETCommand.java?rev=1243916&r1=1243915&r2=1243916&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/GETCommand.java (original)
+++ incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/GETCommand.java Tue Feb 14 13:42:28 2012
@@ -50,17 +50,24 @@ public class GETCommand implements Comma
     
     try
     {
-      HttpClient client = new HttpClient();
+      HttpClient client = sp.getHttpClient();
       GetMethod method = new GetMethod(urlString);
-      int resultCode = client.executeMethod(method);
-      byte[] responseData = method.getResponseBody();
-      // We presume that the data is utf-8, since that's what the API
-      // uses throughout.
-      String resultJSON = new String(responseData,"utf-8");
+      try
+      {
+        int resultCode = client.executeMethod(method);
+        byte[] responseData = method.getResponseBody();
+        // We presume that the data is utf-8, since that's what the API
+        // uses throughout.
+        String resultJSON = new String(responseData,"utf-8");
 
-      result.setReference(new VariableResult(resultCode,resultJSON));
-    
-      return false;
+        result.setReference(new VariableResult(resultCode,resultJSON));
+      
+        return false;
+      }
+      finally
+      {
+        method.releaseConnection();
+      }
     }
     catch (IOException e)
     {

Modified: incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/POSTCommand.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/POSTCommand.java?rev=1243916&r1=1243915&r2=1243916&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/POSTCommand.java (original)
+++ incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/POSTCommand.java Tue Feb 14 13:42:28 2012
@@ -60,19 +60,26 @@ public class POSTCommand implements Comm
     try
     {
       String json = configuration.toJSON();
-      HttpClient client = new HttpClient();
+      HttpClient client = sp.getHttpClient();
       PostMethod method = new PostMethod(urlString);
-      method.setRequestHeader("Content-type", "text/plain; charset=UTF-8");
-      method.setRequestBody(json);
-      int resultCode = client.executeMethod(method);
-      byte[] responseData = method.getResponseBody();
-      // We presume that the data is utf-8, since that's what the API
-      // uses throughout.
-      String resultJSON = new String(responseData,"utf-8");
+      try
+      {
+        method.setRequestHeader("Content-type", "text/plain; charset=UTF-8");
+        method.setRequestBody(json);
+        int resultCode = client.executeMethod(method);
+        byte[] responseData = method.getResponseBody();
+        // We presume that the data is utf-8, since that's what the API
+        // uses throughout.
+        String resultJSON = new String(responseData,"utf-8");
 
-      result.setReference(new VariableResult(resultCode,resultJSON));
-    
-      return false;
+        result.setReference(new VariableResult(resultCode,resultJSON));
+      
+        return false;
+      }
+      finally
+      {
+        method.releaseConnection();
+      }
     }
     catch (ManifoldCFException e)
     {

Modified: incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/PUTCommand.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/PUTCommand.java?rev=1243916&r1=1243915&r2=1243916&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/PUTCommand.java (original)
+++ incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/PUTCommand.java Tue Feb 14 13:42:28 2012
@@ -60,19 +60,26 @@ public class PUTCommand implements Comma
     try
     {
       String json = configuration.toJSON();
-      HttpClient client = new HttpClient();
+      HttpClient client = sp.getHttpClient();
       PutMethod method = new PutMethod(urlString);
-      method.setRequestHeader("Content-type", "text/plain; charset=UTF-8");
-      method.setRequestBody(json);
-      int resultCode = client.executeMethod(method);
-      byte[] responseData = method.getResponseBody();
-      // We presume that the data is utf-8, since that's what the API
-      // uses throughout.
-      String resultJSON = new String(responseData,"utf-8");
+      try
+      {
+        method.setRequestHeader("Content-type", "text/plain; charset=UTF-8");
+        method.setRequestBody(json);
+        int resultCode = client.executeMethod(method);
+        byte[] responseData = method.getResponseBody();
+        // We presume that the data is utf-8, since that's what the API
+        // uses throughout.
+        String resultJSON = new String(responseData,"utf-8");
 
-      result.setReference(new VariableResult(resultCode,resultJSON));
-    
-      return false;
+        result.setReference(new VariableResult(resultCode,resultJSON));
+      
+        return false;
+      }
+      finally
+      {
+        method.releaseConnection();
+      }
     }
     catch (ManifoldCFException e)
     {

Modified: incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/ScriptParser.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/ScriptParser.java?rev=1243916&r1=1243915&r2=1243916&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/ScriptParser.java (original)
+++ incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/ScriptParser.java Tue Feb 14 13:42:28 2012
@@ -19,6 +19,7 @@
 
 package org.apache.manifoldcf.scriptengine;
 
+import org.apache.commons.httpclient.*;
 import java.util.*;
 import java.io.*;
 
@@ -26,6 +27,15 @@ import java.io.*;
 */
 public class ScriptParser
 {
+  /** The connection manager. */
+  protected HttpConnectionManager connectionManager = null;
+  
+  /** The client instance */
+  protected HttpClient httpClient = null;
+  
+  /** The lock for the httpclient factory */
+  protected Integer httpClientLock = new Integer(0);
+  
   /** The current variable context. */
   protected Map<String,ContextVariableReference> context = new HashMap<String,ContextVariableReference>();
   
@@ -1131,6 +1141,18 @@ public class ScriptParser
       t.throwException(message + ": "+t);
   }
   
+  public HttpClient getHttpClient()
+  {
+    synchronized (httpClientLock)
+    {
+      if (httpClient == null)
+      {
+        connectionManager = new MultiThreadedHttpConnectionManager();
+        httpClient = new HttpClient(connectionManager);
+      }
+    }
+    return httpClient;
+  }
   
   public static void main(String[] argv)
   {