HTTP gzip payload supported
diff --git a/services/org.eclipse.sensinact.studio.http.messages/src/org/eclipse/sensinact/studio/http/messages/snamessage/ValueType.java b/services/org.eclipse.sensinact.studio.http.messages/src/org/eclipse/sensinact/studio/http/messages/snamessage/ValueType.java
index e6d6248..7094b7c 100644
--- a/services/org.eclipse.sensinact.studio.http.messages/src/org/eclipse/sensinact/studio/http/messages/snamessage/ValueType.java
+++ b/services/org.eclipse.sensinact.studio.http.messages/src/org/eclipse/sensinact/studio/http/messages/snamessage/ValueType.java
@@ -29,6 +29,7 @@
TMP_MODIFIABLE("org.eclipse.sensinact.gateway.common.primitive.Modifiable", n -> n.asText()),
TMP_CONSTRAINT("Array of org.eclipse.sensinact.gateway.common.constraint.Constraint", n -> n.asText()),
+ OBJECT("object", n -> n.toString()), /* do NOT use asText with 'object' */
STRING("string", n -> n.asText()),
LONG("long", n -> n.asLong()),
DOUBLE("double", n -> n.asDouble()),
diff --git a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/GatewayHttpClient.java b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/GatewayHttpClient.java
index 8fda25d..efa95b5 100644
--- a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/GatewayHttpClient.java
+++ b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/GatewayHttpClient.java
@@ -10,10 +10,15 @@
*/
package org.eclipse.sensinact.studio.http.services.client;
+import java.io.BufferedReader;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
import java.io.StringWriter;
import java.util.Collection;
+import java.util.List;
import java.util.Map;
+import java.util.zip.GZIPInputStream;
import org.apache.log4j.Logger;
import org.eclipse.sensinact.studio.http.messages.snamessage.MsgFactory;
@@ -28,13 +33,19 @@
import org.json.JSONObject;
import org.restlet.Context;
import org.restlet.Response;
+import org.restlet.data.ClientInfo;
+import org.restlet.data.Encoding;
import org.restlet.data.MediaType;
import org.restlet.data.Method;
import org.restlet.data.Parameter;
+import org.restlet.data.Preference;
import org.restlet.data.Status;
+import org.restlet.engine.application.DecodeRepresentation;
+import org.restlet.engine.header.Header;
import org.restlet.representation.Representation;
import org.restlet.representation.StringRepresentation;
import org.restlet.resource.ClientResource;
+import org.restlet.util.Series;
/**
* Central point for SYNCHRONUS communication with the sensinact gateway.
@@ -141,13 +152,19 @@
}
}
+ // Allow gzip encoding
+ clientResource.getClientInfo().getAcceptedEncodings().add(new Preference<Encoding>(Encoding.GZIP));
+
String json = null;
MsgSensinact retval;
try {
- Representation cmd = clientResource.get();
- json = cmd.getText();
- cmd.exhaust();
- cmd.release();
+ Representation representation = clientResource.get();
+ if (representation.getEncodings().contains(Encoding.GZIP)) {
+ representation = new DecodeRepresentation(representation);
+ }
+ json = representation.getText();
+ representation.exhaust();
+ representation.release();
retval = MsgFactory.build(new JSONObject(json));
} catch (Exception e) {
retval = MsgFactory.build(json, e, segments);
diff --git a/ui/org.eclipse.sensinact.studio.view.visualizer/src/org/eclipse/sensinact/studio/view/visualizer/VisualizerView.java b/ui/org.eclipse.sensinact.studio.view.visualizer/src/org/eclipse/sensinact/studio/view/visualizer/VisualizerView.java
index 0d5166b..fa002cf 100644
--- a/ui/org.eclipse.sensinact.studio.view.visualizer/src/org/eclipse/sensinact/studio/view/visualizer/VisualizerView.java
+++ b/ui/org.eclipse.sensinact.studio.view.visualizer/src/org/eclipse/sensinact/studio/view/visualizer/VisualizerView.java
@@ -201,6 +201,9 @@
} else if (type == ValueType.LONG) {
float value = Long.parseLong(valAsStr);
updateGraph(resource, value);
+ } else if (type == ValueType.DOUBLE) {
+ double value = Double.parseDouble(valAsStr);
+ updateGraph(resource, value);
} else {
logger.info(this.getClass().getCanonicalName() + ": Type " + type + " cannot produce chart");
}