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) */); } } }