Output correct JSON strings for object keys; base decision to return text/json from HTTP API on Accepts header rather than Content-type
Change-Id: I14a71d7ec4ffd432691bfa795079e5c8a51037bb
Reviewed-on: http://fulliautomatix.ics.uci.edu:8443/85
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Zachary Heilbron <zheilbron@gmail.com>
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/RESTAPIServlet.java b/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/RESTAPIServlet.java
index 49d08f6..5c24d83 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/RESTAPIServlet.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/RESTAPIServlet.java
@@ -76,10 +76,10 @@
 
         PrintWriter out = response.getWriter();
         DisplayFormat format = DisplayFormat.HTML;
-        String contentType = request.getContentType();
-        if ((contentType == null) || (contentType.equals("text/plain"))) {
+        String accept = request.getHeader("Accept");
+        if ((accept == null) || (accept.contains("text/plain"))) {
             format = DisplayFormat.TEXT;
-        } else if (contentType.equals("application/json")) {
+        } else if (accept.contains("application/json")) {
             format = DisplayFormat.JSON;
         }
 
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ACirclePrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ACirclePrinter.java
index 33123d7..35095a5 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ACirclePrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ACirclePrinter.java
@@ -31,12 +31,12 @@
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
-        ps.print("{ circle: [");
+        ps.print("{ \"circle\": [");
         ps.print(ADoubleSerializerDeserializer.getDouble(b, s + 1));
-        ps.print(", { point: [");
+        ps.print(", { \"point\": [");
         ps.print(ADoubleSerializerDeserializer.getDouble(b, s + 9));
-        ps.print(",");
+        ps.print(", ");
         ps.print(ADoubleSerializerDeserializer.getDouble(b, s + 17));
-        ps.print("]}]}");
+        ps.print("] } ] }");
     }
-}
\ No newline at end of file
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADatePrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADatePrinter.java
index a759963..0ed6155 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADatePrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADatePrinter.java
@@ -34,8 +34,8 @@
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
         long chrononTime = AInt32SerializerDeserializer.getInt(b, s + 1) * CHRONON_OF_DAY;
 
-        ps.print("{ date: ");
+        ps.print("{ \"date\": ");
         ps.print(chrononTime);
         ps.print("}");
     }
-}
\ No newline at end of file
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADateTimePrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADateTimePrinter.java
index 7e734dc..4b74d88 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADateTimePrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADateTimePrinter.java
@@ -33,8 +33,8 @@
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
         long chrononTime = AInt64SerializerDeserializer.getLong(b, s + 1);
 
-        ps.print("{ datetime: ");
+        ps.print("{ \"datetime\": ");
         ps.print(chrononTime);
         ps.print("}");
     }
-}
\ No newline at end of file
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADayTimeDurationPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADayTimeDurationPrinter.java
index 66c05d7..64fec3f 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADayTimeDurationPrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADayTimeDurationPrinter.java
@@ -34,7 +34,7 @@
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
         long milliseconds = AInt64SerializerDeserializer.getLong(b, s + 1);
 
-        ps.print("{ day-time-duration: ");
+        ps.print("{ \"day-time-duration\": ");
         ps.print(milliseconds);
         ps.print("}");
     }
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADurationPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADurationPrinter.java
index 8bde759..b80093f 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADurationPrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADurationPrinter.java
@@ -35,11 +35,11 @@
         int months = AInt32SerializerDeserializer.getInt(b, s + 1);
         long milliseconds = AInt64SerializerDeserializer.getLong(b, s + 5);
 
-        ps.print("{ duration: {");
-        ps.print("months: ");
+        ps.print("{ \"duration\": { ");
+        ps.print("\"months\": ");
         ps.print(months);
-        ps.print("millis: ");
+        ps.print("\"millis\": ");
         ps.print(milliseconds);
-        ps.print("}}");
+        ps.print("} }");
     }
-}
\ No newline at end of file
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AInt16Printer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AInt16Printer.java
index b97152c..8f676d2 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AInt16Printer.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AInt16Printer.java
@@ -32,8 +32,8 @@
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
         short i = AInt16SerializerDeserializer.getShort(b, s + 1);
 
-        ps.println("{ int16: ");
+        ps.println("{ \"int16\": ");
         ps.println(i);
         ps.println("}");
     }
-}
\ No newline at end of file
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AInt32Printer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AInt32Printer.java
index ae4b224..7ed3ee2 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AInt32Printer.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AInt32Printer.java
@@ -33,8 +33,8 @@
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
         int d = AInt32SerializerDeserializer.getInt(b, s + 1);
 
-        ps.println("{ int32: ");
+        ps.println("{ \"int32\": ");
         ps.println(d);
         ps.println("}");
     }
-}
\ No newline at end of file
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AInt64Printer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AInt64Printer.java
index 10f20a3..33af3eb 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AInt64Printer.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AInt64Printer.java
@@ -30,8 +30,8 @@
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
         long d = AInt64SerializerDeserializer.getLong(b, s + 1);
-        ps.println("{ int64: ");
+        ps.println("{ \"int64\": ");
         ps.println(d);
         ps.println("}");
     }
-}
\ No newline at end of file
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AInt8Printer.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AInt8Printer.java
index 7bcc5dc..6407f07 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AInt8Printer.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AInt8Printer.java
@@ -33,8 +33,8 @@
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
         byte o = AInt8SerializerDeserializer.getByte(b, s + 1);
 
-        ps.println("{ int8: ");
+        ps.println("{ \"int8\": ");
         ps.println(o);
         ps.println("}");
     }
-}
\ No newline at end of file
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AIntervalPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AIntervalPrinter.java
index 6331caa..860188e 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AIntervalPrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AIntervalPrinter.java
@@ -37,7 +37,7 @@
      */
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
-        ps.print("{ interval: { start: ");
+        ps.print("{ \"interval\": { \"start\": ");
 
         short typetag = AInt8SerializerDeserializer.getByte(b, s + 1 + 8 * 2);
 
@@ -46,17 +46,17 @@
         if (typetag == ATypeTag.DATE.serialize()) {
             timeInstancePrinter = ADatePrinter.INSTANCE;
             ((ADatePrinter) timeInstancePrinter).print(b, s + 4, 4, ps);
-            ps.print(", end: ");
+            ps.print(", \"end\": ");
             ((ADatePrinter) timeInstancePrinter).print(b, s + 12, 4, ps);
         } else if (typetag == ATypeTag.TIME.serialize()) {
             timeInstancePrinter = ATimePrinter.INSTANCE;
             ((ATimePrinter) timeInstancePrinter).print(b, s + 4, 4, ps);
-            ps.print(", end: ");
+            ps.print(", \"end\": ");
             ((ATimePrinter) timeInstancePrinter).print(b, s + 12, 4, ps);
         } else if (typetag == ATypeTag.DATETIME.serialize()) {
             timeInstancePrinter = ADateTimePrinter.INSTANCE;
             ((ADateTimePrinter) timeInstancePrinter).print(b, s, 8, ps);
-            ps.print(", end: ");
+            ps.print(", \"end\": ");
             ((ADateTimePrinter) timeInstancePrinter).print(b, s + 8, 8, ps);
         } else {
             throw new AlgebricksException("Unsupport internal time types in interval: " + typetag);
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ALinePrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ALinePrinter.java
index 9a881fd..bcaa832 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ALinePrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ALinePrinter.java
@@ -31,15 +31,15 @@
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
-        ps.print("{ line: ");
-        ps.print(" [{ point: [");
+        ps.print("{ \"line\": ");
+        ps.print(" [ { \"point\": [");
         ps.print(ADoubleSerializerDeserializer.getDouble(b, s + 1));
         ps.print(", ");
         ps.print(ADoubleSerializerDeserializer.getDouble(b, s + 9));
-        ps.print("]}, { point: [");
+        ps.print("] }, { \"point\": [");
         ps.print(ADoubleSerializerDeserializer.getDouble(b, s + 17));
         ps.print(", ");
         ps.print(ADoubleSerializerDeserializer.getDouble(b, s + 25));
-        ps.print("]}]}");
+        ps.print("] } ] }");
     }
-}
\ No newline at end of file
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/APoint3DPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/APoint3DPrinter.java
index 3f8c4b6..6725090 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/APoint3DPrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/APoint3DPrinter.java
@@ -31,12 +31,12 @@
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
-        ps.print("{ point3d: [");
+        ps.print("{ \"point3d\": [");
         ps.print(ADoubleSerializerDeserializer.getDouble(b, s + 1));
         ps.print(", ");
         ps.print(ADoubleSerializerDeserializer.getDouble(b, s + 9));
         ps.print(", ");
         ps.print(ADoubleSerializerDeserializer.getDouble(b, s + 17));
-        ps.print("]}");
+        ps.print("] }");
     }
-}
\ No newline at end of file
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/APointPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/APointPrinter.java
index 4f56e80..b2bfcf9 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/APointPrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/APointPrinter.java
@@ -31,10 +31,10 @@
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
-        ps.print("{ point: [");
+        ps.print("{ \"point\": [");
         ps.print(ADoubleSerializerDeserializer.getDouble(b, s + 1));
         ps.print(", ");
         ps.print(ADoubleSerializerDeserializer.getDouble(b, s + 9));
-        ps.print("]}");
+        ps.print("] }");
     }
-}
\ No newline at end of file
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/APolygonPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/APolygonPrinter.java
index 82d715e..7cc4405 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/APolygonPrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/APolygonPrinter.java
@@ -35,22 +35,22 @@
         short numberOfPoints = AInt16SerializerDeserializer.getShort(b, s + 1);
         s += 3;
 
-        ps.print("{ polygon: [");
+        ps.print("{ \"polygon\": [");
 
         for (int i = 0; i < numberOfPoints; i++) {
             if (i > 0)
                 ps.print(",");
 
-            ps.print("{ point: [");
+            ps.print("{ \"point\": [");
             ps.print(ADoubleSerializerDeserializer.getDouble(b, s));
-            ps.print(",");
+            ps.print(", ");
             ps.print(ADoubleSerializerDeserializer.getDouble(b, s + 8));
-            ps.print("]}");
+            ps.print("] }");
 
             s += 16;
         }
 
-        ps.print("]}");
+        ps.print("] }");
 
     }
-}
\ No newline at end of file
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ARectanglePrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ARectanglePrinter.java
index ed34d08..ffdb92a 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ARectanglePrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ARectanglePrinter.java
@@ -31,15 +31,15 @@
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
-        ps.print("{ rectangle: [");
-        ps.print("{ point: [");
+        ps.print("{ \"rectangle\": [");
+        ps.print("{ \"point\": [");
         ps.print(ADoubleSerializerDeserializer.getDouble(b, s + 1));
         ps.print(", ");
         ps.print(ADoubleSerializerDeserializer.getDouble(b, s + 9));
-        ps.print("]}, { point: [");
+        ps.print("] }, { \"point\": [");
         ps.print(ADoubleSerializerDeserializer.getDouble(b, s + 17));
         ps.print(", ");
         ps.print(ADoubleSerializerDeserializer.getDouble(b, s + 25));
-        ps.print("]}]}");
+        ps.print("] } ] }");
     }
-}
\ No newline at end of file
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ATimePrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ATimePrinter.java
index eacf501..a3a94cf 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ATimePrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ATimePrinter.java
@@ -33,9 +33,9 @@
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
         int time = AInt32SerializerDeserializer.getInt(b, s + 1);
 
-        ps.print("{ time: ");
+        ps.print("{ \"time\": ");
         ps.print(time);
         ps.print("}");
     }
 
-}
\ No newline at end of file
+}
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AYearMonthDurationPrinter.java b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AYearMonthDurationPrinter.java
index 163dc52..d932f9f 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AYearMonthDurationPrinter.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/AYearMonthDurationPrinter.java
@@ -39,7 +39,7 @@
 
         int months = AInt32SerializerDeserializer.getInt(b, s + 1);
 
-        ps.print("{ year-month-duration: ");
+        ps.print("{ \"year-month-duration\": ");
         ps.print(months);
         ps.print("}");
     }