From 9ea2dbe8400bd1ab30451e3dc2b85aa7a583a8e1 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sat, 25 Apr 2015 11:02:26 +1200 Subject: Use Java standard Json library --- pom.xml | 6 ++-- src/org/traccar/database/DataManager.java | 4 +-- src/org/traccar/database/ResultSetConverter.java | 42 +++++++++++++----------- src/org/traccar/http/MainServlet.java | 17 +++++----- 4 files changed, 37 insertions(+), 32 deletions(-) diff --git a/pom.xml b/pom.xml index fab894aa6..8b8b80e79 100644 --- a/pom.xml +++ b/pom.xml @@ -46,9 +46,9 @@ 3.10.1.Final - org.json - json - 20140107 + org.glassfish + javax.json + 1.0.4 org.eclipse.jetty.aggregate diff --git a/src/org/traccar/database/DataManager.java b/src/org/traccar/database/DataManager.java index 172fbf763..2f029e74c 100644 --- a/src/org/traccar/database/DataManager.java +++ b/src/org/traccar/database/DataManager.java @@ -22,11 +22,11 @@ import java.net.URL; import java.net.URLClassLoader; import java.sql.*; import java.util.*; +import javax.json.JsonArray; import javax.sql.DataSource; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; -import org.json.JSONArray; import org.traccar.helper.DriverDelegate; import org.traccar.helper.Log; import org.traccar.model.Device; @@ -362,7 +362,7 @@ public class DataManager { } } - public JSONArray getDevices(long userId) throws SQLException { + public JsonArray getDevices(long userId) throws SQLException { Connection connection = dataSource.getConnection(); try { diff --git a/src/org/traccar/database/ResultSetConverter.java b/src/org/traccar/database/ResultSetConverter.java index 32289f756..e4aec956c 100644 --- a/src/org/traccar/database/ResultSetConverter.java +++ b/src/org/traccar/database/ResultSetConverter.java @@ -15,24 +15,29 @@ */ package org.traccar.database; -import org.json.JSONArray; -import org.json.JSONObject; - -import java.sql.SQLException; import java.sql.ResultSet; import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import javax.json.Json; +import javax.json.JsonArray; +import javax.json.JsonArrayBuilder; +import javax.json.JsonObjectBuilder; public class ResultSetConverter { + + private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ"); - public static JSONArray convert(ResultSet rs) throws SQLException { + public static JsonArray convert(ResultSet rs) throws SQLException { - JSONArray json = new JSONArray(); + JsonArrayBuilder json = Json.createArrayBuilder(); ResultSetMetaData rsmd = rs.getMetaData(); while (rs.next()) { int numColumns = rsmd.getColumnCount(); - JSONObject obj = new JSONObject(); + JsonObjectBuilder obj = Json.createObjectBuilder(); for (int i = 1; i <= numColumns; i++) { @@ -40,41 +45,40 @@ public class ResultSetConverter { switch (rsmd.getColumnType(i)) { case java.sql.Types.BIGINT: - obj.put(columnName, rs.getInt(columnName)); + obj.add(columnName, rs.getInt(columnName)); break; case java.sql.Types.BOOLEAN: - obj.put(columnName, rs.getBoolean(columnName)); + obj.add(columnName, rs.getBoolean(columnName)); break; case java.sql.Types.DOUBLE: - obj.put(columnName, rs.getDouble(columnName)); + obj.add(columnName, rs.getDouble(columnName)); break; case java.sql.Types.FLOAT: - obj.put(columnName, rs.getFloat(columnName)); + obj.add(columnName, rs.getFloat(columnName)); break; case java.sql.Types.INTEGER: - obj.put(columnName, rs.getInt(columnName)); + obj.add(columnName, rs.getInt(columnName)); break; case java.sql.Types.NVARCHAR: - obj.put(columnName, rs.getNString(columnName)); + obj.add(columnName, rs.getNString(columnName)); break; case java.sql.Types.VARCHAR: - obj.put(columnName, rs.getString(columnName)); + obj.add(columnName, rs.getString(columnName)); break; case java.sql.Types.DATE: - obj.put(columnName, rs.getDate(columnName)); + obj.add(columnName, dateFormat.format(rs.getDate(columnName))); break; case java.sql.Types.TIMESTAMP: - obj.put(columnName, rs.getTimestamp(columnName)); + obj.add(columnName, dateFormat.format(rs.getTimestamp(columnName))); break; default: - obj.put(columnName, rs.getObject(columnName)); break; } } - json.put(obj); + json.add(obj.build()); } - return json; + return json.build(); } } diff --git a/src/org/traccar/http/MainServlet.java b/src/org/traccar/http/MainServlet.java index e569b4892..7483b22b4 100644 --- a/src/org/traccar/http/MainServlet.java +++ b/src/org/traccar/http/MainServlet.java @@ -17,13 +17,14 @@ package org.traccar.http; import java.io.IOException; import java.sql.SQLException; +import javax.json.Json; +import javax.json.JsonObjectBuilder; import javax.servlet.AsyncContext; import javax.servlet.ServletException; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.json.JSONObject; import org.traccar.Context; import org.traccar.helper.Log; @@ -72,19 +73,19 @@ public class MainServlet extends HttpServlet { private void device(HttpServletRequest req, HttpServletResponse resp) throws IOException { - long userId = 1;//(Long) req.getSession().getAttribute(USER_ID); + long userId = (Long) req.getSession().getAttribute(USER_ID); - JSONObject result = new JSONObject(); + JsonObjectBuilder result = Json.createObjectBuilder(); try { - result.put("success", true); - result.put("data", Context.getDataManager().getDevices(userId)); + result.add("success", true); + result.add("data", Context.getDataManager().getDevices(userId)); } catch(SQLException error) { - result.put("success", false); - result.put("error", error.getMessage()); + result.add("success", false); + result.add("error", error.getMessage()); } - resp.getWriter().println(result.toString()); + resp.getWriter().println(result.build().toString()); } private void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { -- cgit v1.2.3