diff --git a/server/.classpath b/server/.classpath
index 363e5ea..43d1080 100644
--- a/server/.classpath
+++ b/server/.classpath
@@ -5,7 +5,7 @@
-
+
diff --git a/server/build/makejar.xml b/server/build/makejar.xml
index 5aa6e2b..ecebe2a 100644
--- a/server/build/makejar.xml
+++ b/server/build/makejar.xml
@@ -14,7 +14,7 @@
-
+
diff --git a/server/dist/OOCSI_server.jar b/server/dist/OOCSI_server.jar
index dac3d27..4c064b0 100644
Binary files a/server/dist/OOCSI_server.jar and b/server/dist/OOCSI_server.jar differ
diff --git a/server/libs/gson-2.8.2.jar b/server/libs/gson-2.8.2.jar
deleted file mode 100644
index d0d030c..0000000
Binary files a/server/libs/gson-2.8.2.jar and /dev/null differ
diff --git a/server/libs/gson-2.8.6.jar b/server/libs/gson-2.8.6.jar
new file mode 100644
index 0000000..4765c4a
Binary files /dev/null and b/server/libs/gson-2.8.6.jar differ
diff --git a/server/src/nl/tue/id/oocsi/server/OOCSIServer.java b/server/src/nl/tue/id/oocsi/server/OOCSIServer.java
index ca8a0c0..6aaa11b 100644
--- a/server/src/nl/tue/id/oocsi/server/OOCSIServer.java
+++ b/server/src/nl/tue/id/oocsi/server/OOCSIServer.java
@@ -26,7 +26,7 @@
public class OOCSIServer extends Server {
// constants
- public static final String VERSION = "1.18";
+ public static final String VERSION = "1.19";
// defaults for different services
private int maxClients = 100;
diff --git a/server/src/nl/tue/id/oocsi/server/protocol/Protocol.java b/server/src/nl/tue/id/oocsi/server/protocol/Protocol.java
index cacab9f..67e65c0 100644
--- a/server/src/nl/tue/id/oocsi/server/protocol/Protocol.java
+++ b/server/src/nl/tue/id/oocsi/server/protocol/Protocol.java
@@ -7,7 +7,6 @@
import java.util.HashMap;
import java.util.Map;
-import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
@@ -110,8 +109,35 @@ else if (inputLine.startsWith("send")) {
Channel c = server.getChannel(recipient);
if (message.length() > 0) {
- try {
- Map map = parseJavaMessage(message);
+ Map map = null;
+ if (message.startsWith("{")) {
+ map = parseJSONMessage(message);
+ } else {
+ try {
+ map = parseJavaMessage(message);
+ if (c != null && c.accept(recipient)) {
+ c.send(new Message(sender.getName(), recipient, new Date(), map));
+ } else {
+ // log if not private message
+ if (!Channel.isPrivate(recipient)) {
+ OOCSIServer.logEvent(sender.getName(), recipient, "?", map, new Date());
+ }
+ }
+ } catch (IOException e) {
+ OOCSIServer.log("[MsgParser] I/O problem: " + e.getMessage() + "\n\nSender:\n"
+ + sender.getName() + "\nRecipient:\n" + recipient + "\nData:\n" + message);
+ } catch (IllegalArgumentException e) {
+ OOCSIServer.log("[MsgParser] Base64 encoder problem: " + e.getMessage());
+ } catch (ClassNotFoundException e) {
+ OOCSIServer.log("[MsgParser] Unknown class: " + e.getMessage());
+ } catch (Exception e) {
+ // just in case
+ OOCSIServer.log("[MsgParser] Unknown problem: " + e.getMessage());
+ }
+ }
+
+ // only send if there is useful data
+ if (map != null) {
if (c != null && c.accept(recipient)) {
c.send(new Message(sender.getName(), recipient, new Date(), map));
} else {
@@ -120,19 +146,10 @@ else if (inputLine.startsWith("send")) {
OOCSIServer.logEvent(sender.getName(), recipient, "?", map, new Date());
}
}
- } catch (IOException e) {
- OOCSIServer.log("[MsgParser] I/O problem: " + e.getMessage() + "\n\nSender:\n"
- + sender.getName() + "\nRecipient:\n" + recipient + "\nData:\n" + message);
- } catch (IllegalArgumentException e) {
- OOCSIServer.log("[MsgParser] Base64 encoder problem: " + e.getMessage());
- } catch (ClassNotFoundException e) {
- OOCSIServer.log("[MsgParser] Unknown class: " + e.getMessage());
- } catch (Exception e) {
- // just in case
- OOCSIServer.log("[MsgParser] Unknown problem: " + e.getMessage());
}
}
}
+ }
// respond to ping
else if (inputLine.equals("ping")) {
server.getChangeListener().refresh(sender, sender);
@@ -162,8 +179,7 @@ public static Map parseJSONMessage(String message) {
// try to parse input as JSON
try {
- Gson serializer = new Gson();
- JsonElement je = new JsonParser().parse(message);
+ JsonElement je = JsonParser.parseString(message);
if (je.isJsonObject()) {
JsonObject jo = je.getAsJsonObject();
for (Map.Entry element : jo.entrySet()) {
@@ -213,8 +229,10 @@ else if (asJsonArray.get(0).getAsJsonPrimitive().isString()) {
}
map.put(element.getKey(), array);
}
- } else if (!value.isJsonNull()) {
- map.put(element.getKey(), serializer.toJson(value));
+ }
+ // no primitives included on first level, so we include the JSON array directly
+ else if (!value.isJsonNull()) {
+ map.put(element.getKey(), value/* serializer.toJson(value) */);
}
}
}