SLING-3084 - add forceReload option to JUnitServlet

git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1524717 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/junit/remote/httpclient/RemoteTestHttpClient.java b/src/main/java/org/apache/sling/junit/remote/httpclient/RemoteTestHttpClient.java
index 2091236..713feeb 100644
--- a/src/main/java/org/apache/sling/junit/remote/httpclient/RemoteTestHttpClient.java
+++ b/src/main/java/org/apache/sling/junit/remote/httpclient/RemoteTestHttpClient.java
@@ -17,10 +17,16 @@
 package org.apache.sling.junit.remote.httpclient;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 
+import org.apache.http.NameValuePair;
 import org.apache.http.ParseException;
 import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
 import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.message.BasicNameValuePair;
 import org.apache.sling.testing.tools.http.Request;
 import org.apache.sling.testing.tools.http.RequestBuilder;
 import org.apache.sling.testing.tools.http.RequestCustomizer;
@@ -70,7 +76,12 @@
         requestCustomizer = c;
     }
     
-    public RequestExecutor runTests(String testClassesSelector, String testMethodSelector, String extension) 
+    public RequestExecutor runTests(String testClassesSelector, String testMethodSelector, String extension)
+    throws ClientProtocolException, IOException {
+        return runTests(testClassesSelector, testMethodSelector, extension, null);
+    }
+    
+    public RequestExecutor runTests(String testClassesSelector, String testMethodSelector, String extension, Map<String, String> requestOptions) 
     throws ClientProtocolException, IOException {
         final RequestBuilder builder = new RequestBuilder(junitServletUrl);
 
@@ -104,13 +115,22 @@
             subpath.append(DOT);
         }
         subpath.append(extension);
+
+        // Request options if any
+        final List<NameValuePair> opt = new ArrayList<NameValuePair>();
+        if(requestOptions != null) {
+            for(Map.Entry<String, String> e : requestOptions.entrySet()) {
+                opt.add(new BasicNameValuePair(e.getKey(), e.getValue()));
+            }
+        }
         
         log.info("Executing test remotely, path={} JUnit servlet URL={}",
                 subpath, junitServletUrl);
         final Request r = builder
         .buildPostRequest(subpath.toString())
         .withCredentials(username, password)
-        .withCustomizer(requestCustomizer);
+        .withCustomizer(requestCustomizer)
+        .withEntity(new UrlEncodedFormEntity(opt));
         executor.execute(r).assertStatus(200);
 
         return executor;