test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/HttpServer.java in calabash-android-0.4.7.pre4 vs test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/HttpServer.java in calabash-android-0.4.7.pre6
- old
+ new
@@ -1,12 +1,14 @@
package sh.calaba.instrumentationbackend.actions;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
+import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
+import java.util.Enumeration;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
@@ -16,56 +18,61 @@
import sh.calaba.instrumentationbackend.FranklyResult;
import sh.calaba.instrumentationbackend.InstrumentationBackend;
import sh.calaba.instrumentationbackend.Result;
import sh.calaba.instrumentationbackend.json.JSONUtils;
import sh.calaba.instrumentationbackend.query.Query;
-import sh.calaba.org.codehaus.jackson.map.DeserializationConfig.Feature;
-import sh.calaba.org.codehaus.jackson.map.ObjectMapper;
import android.graphics.Bitmap;
import android.util.Log;
import android.view.View;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
public class HttpServer extends NanoHTTPD {
private static final String TAG = "InstrumentationBackend";
private boolean running = true;
private boolean ready = false;
private final Lock lock = new ReentrantLock();
private final Condition shutdownCondition = lock.newCondition();
- private final ObjectMapper mapper = createJsonMapper();
-
private static HttpServer instance;
+
/**
* Creates and returns the singleton instance for HttpServer.
*
* Can only be called once. Otherwise, you'll get an IllegalStateException.
*/
public synchronized static HttpServer instantiate(int testServerPort) {
if (instance != null) {
throw new IllegalStateException("Can only instantiate once!");
}
- instance = new HttpServer(testServerPort);
+ try {
+ instance = new HttpServer(testServerPort);
+ } catch (IOException e) {
+ new RuntimeException(e);
+ }
return instance;
}
public synchronized static HttpServer getInstance() {
if (instance == null) {
throw new IllegalStateException("Must be initialized!");
}
return instance;
}
- private HttpServer(int testServerPort) {
+ private HttpServer(int testServerPort) throws IOException {
super(testServerPort, new File("/"));
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public Response serve(String uri, String method, Properties header,
Properties params, Properties files) {
System.out.println("URI: " + uri);
+ System.out.println("params: " + params);
+
if (uri.endsWith("/ping")) {
return new NanoHTTPD.Response(HTTP_OK, MIME_HTML, "pong");
}
else if (uri.endsWith("/dump")) {
@@ -177,10 +184,16 @@
}
}
System.out.println("header: " + header);
System.out.println("params: " + params);
+ Enumeration<String> propertyNames = (Enumeration<String>) params.propertyNames();
+ while (propertyNames.hasMoreElements())
+ {
+ String s = propertyNames.nextElement();
+ System.out.println("ProP "+s+" = "+params.getProperty(s));
+ }
System.out.println("files: " + files);
String commandString = params.getProperty("json");
System.out.println("command: " + commandString);
String result = toJson(runCommand(commandString));
@@ -209,25 +222,22 @@
}
throw new RuntimeException("Could not find any views");
}
- private ObjectMapper createJsonMapper() {
- ObjectMapper mapper = new ObjectMapper();
- mapper.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, true);
- return mapper;
- }
private String toJson(Result result) {
try {
+ ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(result);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private Result runCommand(String commandString) {
try {
+ ObjectMapper mapper = new ObjectMapper();
Command command = mapper.readValue(commandString, Command.class);
log("Got command:'" + command);
return command.execute();
} catch (Throwable t) {
t.printStackTrace();