aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-ws-client/src/main/java/org/sonar/wsclient
diff options
context:
space:
mode:
authorEvgeny Mandrikov <mandrikov@gmail.com>2011-01-26 19:21:54 +0300
committerEvgeny Mandrikov <mandrikov@gmail.com>2011-01-27 17:11:11 +0300
commit815899837ca07904fe9dc9223b4a4e8ac486cb59 (patch)
treeb92834ad5dd92bdd9eb8504e8bd649e81e559d41 /sonar-ws-client/src/main/java/org/sonar/wsclient
parent40e0e78a54535e1a5009a626fb43dccad9230328 (diff)
downloadsonarqube-815899837ca07904fe9dc9223b4a4e8ac486cb59.tar.gz
sonarqube-815899837ca07904fe9dc9223b4a4e8ac486cb59.zip
SONAR-2046: Reuse unmarshallers from sonar-ws-client for sonar-gwt-api
* WSUtils has two implementations - one for GWT and another for Java, so can be used by unmarshallers in both cases. But this not very good, because code is not type-safe. In fact it would be better to use emulation of types from org.json.simple for GWT, but this solution is more straightforward.
Diffstat (limited to 'sonar-ws-client/src/main/java/org/sonar/wsclient')
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/JdkUtils.java59
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/services/WSUtils.java69
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/AbstractUnmarshaller.java22
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/DependencyTreeUnmarshaller.java30
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/DependencyUnmarshaller.java29
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/EventUnmarshaller.java19
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/FavouriteUnmarshaller.java17
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/MetricUnmarshaller.java21
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/PluginUnmarshaller.java11
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/PropertyUnmarshaller.java11
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ResourceUnmarshaller.java110
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/RuleUnmarshaller.java45
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ServerUnmarshaller.java14
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/SourceUnmarshaller.java12
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/TimeMachineUnmarshaller.java36
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ViolationUnmarshaller.java30
16 files changed, 341 insertions, 194 deletions
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/JdkUtils.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/JdkUtils.java
index 464fe78cb31..d1f21e42646 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/JdkUtils.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/JdkUtils.java
@@ -19,12 +19,17 @@
*/
package org.sonar.wsclient;
+import org.json.simple.JSONObject;
+import org.json.simple.JSONValue;
import org.sonar.wsclient.services.WSUtils;
+import org.sonar.wsclient.unmarshallers.JsonUtils;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.Set;
public final class JdkUtils extends WSUtils {
@@ -42,4 +47,58 @@ public final class JdkUtils extends WSUtils {
}
}
+ @Override
+ public Object getField(Object json, String field) {
+ return ((JSONObject) json).get(field);
+ }
+
+ @Override
+ public String getString(Object json, String field) {
+ return JsonUtils.getString((JSONObject) json, field);
+ }
+
+ @Override
+ public Boolean getBoolean(Object json, String field) {
+ return JsonUtils.getBoolean((JSONObject) json, field);
+ }
+
+ @Override
+ public Integer getInteger(Object json, String field) {
+ return JsonUtils.getInteger((JSONObject) json, field);
+ }
+
+ @Override
+ public Double getDouble(Object json, String field) {
+ return JsonUtils.getDouble((JSONObject) json, field);
+ }
+
+ @Override
+ public Long getLong(Object json, String field) {
+ return JsonUtils.getLong((JSONObject) json, field);
+ }
+
+ @Override
+ public Date getDateTime(Object json, String field) {
+ return JsonUtils.getDateTime((JSONObject) json, field);
+ }
+
+ @Override
+ public int getArraySize(Object array) {
+ return ((ArrayList) array).size();
+ }
+
+ @Override
+ public Object getArrayElement(Object array, int i) {
+ return ((ArrayList) array).get(i);
+ }
+
+ @Override
+ public Object parse(String jsonStr) {
+ return JSONValue.parse(jsonStr);
+ }
+
+ @Override
+ public Set<String> getFields(Object json) {
+ return ((JSONObject) json).keySet();
+ }
}
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/services/WSUtils.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/WSUtils.java
index ab4cd8d1028..8119bacee8c 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/services/WSUtils.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/WSUtils.java
@@ -20,7 +20,13 @@
package org.sonar.wsclient.services;
import java.util.Date;
+import java.util.Set;
+/**
+ * Compatibility layer between GWT and plain Java.
+ * Well, this is bad, because code is not type-safe, so all unmarshallers also,
+ * but this allows to remove duplications between sonar-gwt-api and sonar-ws-client.
+ */
public abstract class WSUtils {
private static WSUtils INSTANCE = null;
@@ -36,4 +42,67 @@ public abstract class WSUtils {
public abstract String format(Date date, String format);
public abstract String encodeUrl(String url);
+
+ /**
+ * @return value of specified field from specified JSON object,
+ * or <code>null</code> if field does not exist
+ */
+ public abstract Object getField(Object json, String field);
+
+ /**
+ * @return String value of specified field from specified JSON object,
+ * or <code>null</code> if field does not exist
+ */
+ public abstract String getString(Object json, String field);
+
+ /**
+ * @return Boolean value of specified field from specified JSON object,
+ * or <code>null</code> if field does not exist
+ */
+ public abstract Boolean getBoolean(Object json, String field);
+
+ /**
+ * @return Integer value of specified field from specified JSON object,
+ * or <code>null</code> if field does not exist
+ */
+ public abstract Integer getInteger(Object json, String field);
+
+ /**
+ * @return Double value of specified field from specified JSON object,
+ * or <code>null</code> if field does not exist
+ */
+ public abstract Double getDouble(Object json, String field);
+
+ /**
+ * @return Long value of specified field from specified JSON object,
+ * or <code>null</code> if field does not exist
+ */
+ public abstract Long getLong(Object json, String field);
+
+ /**
+ * @return Date value of specified field from specified JSON object,
+ * or <code>null</code> if field does not exist
+ */
+ public abstract Date getDateTime(Object json, String field);
+
+ /**
+ * @return size of specified JSON array
+ */
+ public abstract int getArraySize(Object array);
+
+ /**
+ * @return element from specified JSON array
+ */
+ public abstract Object getArrayElement(Object array, int i);
+
+ /**
+ * @return JSON object
+ */
+ public abstract Object parse(String jsonStr);
+
+ /**
+ * @return field names in specified JSON object
+ */
+ public abstract Set<String> getFields(Object json);
+
}
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/AbstractUnmarshaller.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/AbstractUnmarshaller.java
index d906f4ad9d8..13ddb93409d 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/AbstractUnmarshaller.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/AbstractUnmarshaller.java
@@ -19,10 +19,8 @@
*/
package org.sonar.wsclient.unmarshallers;
-import org.json.simple.JSONArray;
-import org.json.simple.JSONObject;
-import org.json.simple.JSONValue;
import org.sonar.wsclient.services.Model;
+import org.sonar.wsclient.services.WSUtils;
import java.util.ArrayList;
import java.util.List;
@@ -30,10 +28,11 @@ import java.util.List;
public abstract class AbstractUnmarshaller<MODEL extends Model> implements Unmarshaller<MODEL> {
public final MODEL toModel(String json) {
- MODEL result = null;
- JSONArray array = (JSONArray) JSONValue.parse(json);
- if (array.size() >= 1) {
- JSONObject elt = (JSONObject) array.get(0);
+ WSUtils utils = WSUtils.getINSTANCE();
+ MODEL result = null;
+ Object array = utils.parse(json);
+ if (utils.getArraySize(array) >= 1) {
+ Object elt = utils.getArrayElement(array, 0);
if (elt != null) {
result = parse(elt);
}
@@ -43,10 +42,11 @@ public abstract class AbstractUnmarshaller<MODEL extends Model> implements Unmar
}
public final List<MODEL> toModels(String json) {
+ WSUtils utils = WSUtils.getINSTANCE();
List<MODEL> result = new ArrayList<MODEL>();
- JSONArray array = (JSONArray) JSONValue.parse(json);
- for (Object anArray : array) {
- JSONObject elt = (JSONObject) anArray;
+ Object array = utils.parse(json);
+ for (int i = 0; i < utils.getArraySize(array); i++) {
+ Object elt = utils.getArrayElement(array, i);
if (elt != null) {
result.add(parse(elt));
}
@@ -54,5 +54,5 @@ public abstract class AbstractUnmarshaller<MODEL extends Model> implements Unmar
return result;
}
- protected abstract MODEL parse(JSONObject elt);
+ protected abstract MODEL parse(Object elt);
}
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/DependencyTreeUnmarshaller.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/DependencyTreeUnmarshaller.java
index f326ba02176..f91b8af085d 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/DependencyTreeUnmarshaller.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/DependencyTreeUnmarshaller.java
@@ -19,34 +19,34 @@
*/
package org.sonar.wsclient.unmarshallers;
-import org.json.simple.JSONArray;
-import org.json.simple.JSONObject;
import org.sonar.wsclient.services.DependencyTree;
+import org.sonar.wsclient.services.WSUtils;
import java.util.ArrayList;
import java.util.List;
public class DependencyTreeUnmarshaller extends AbstractUnmarshaller<DependencyTree> {
@Override
- protected DependencyTree parse(JSONObject json) {
+ protected DependencyTree parse(Object json) {
+ WSUtils utils = WSUtils.getINSTANCE();
DependencyTree tree = new DependencyTree()
- .setDepId(JsonUtils.getString(json, "did"))
- .setResourceId(JsonUtils.getString(json, "rid"))
- .setResourceKey(JsonUtils.getString(json, "k"))
- .setResourceName(JsonUtils.getString(json, "n"))
- .setResourceScope(JsonUtils.getString(json, "s"))
- .setResourceQualifier(JsonUtils.getString(json, "q"))
- .setResourceVersion(JsonUtils.getString(json, "v"))
- .setUsage(JsonUtils.getString(json, "u"))
- .setWeight(JsonUtils.getInteger(json, "w"));
+ .setDepId(utils.getString(json, "did"))
+ .setResourceId(utils.getString(json, "rid"))
+ .setResourceKey(utils.getString(json, "k"))
+ .setResourceName(utils.getString(json, "n"))
+ .setResourceScope(utils.getString(json, "s"))
+ .setResourceQualifier(utils.getString(json, "q"))
+ .setResourceVersion(utils.getString(json, "v"))
+ .setUsage(utils.getString(json, "u"))
+ .setWeight(utils.getInteger(json, "w"));
List<DependencyTree> to = new ArrayList<DependencyTree>();
tree.setTo(to);
- JSONArray toJson = (JSONArray) json.get("to");
+ Object toJson = utils.getField(json, "to");
if (toJson != null) {
- for (Object aToJson : toJson) {
- to.add(parse((JSONObject) aToJson));
+ for (int i = 0; i < utils.getArraySize(toJson); i++) {
+ to.add(parse(utils.getArrayElement(toJson, i)));
}
}
return tree;
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/DependencyUnmarshaller.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/DependencyUnmarshaller.java
index 803753aede7..bf8b19db704 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/DependencyUnmarshaller.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/DependencyUnmarshaller.java
@@ -19,24 +19,25 @@
*/
package org.sonar.wsclient.unmarshallers;
-import org.json.simple.JSONObject;
import org.sonar.wsclient.services.Dependency;
+import org.sonar.wsclient.services.WSUtils;
public class DependencyUnmarshaller extends AbstractUnmarshaller<Dependency> {
@Override
- protected Dependency parse(JSONObject json) {
+ protected Dependency parse(Object json) {
+ WSUtils utils = WSUtils.getINSTANCE();
return new Dependency()
- .setId(JsonUtils.getString(json, "id"))
- .setFromId(JsonUtils.getLong(json, "fi"))
- .setToId(JsonUtils.getLong(json, "ti"))
- .setFromKey(JsonUtils.getString(json, "fk"))
- .setToKey(JsonUtils.getString(json, "tk"))
- .setUsage(JsonUtils.getString(json, "u"))
- .setWeight(JsonUtils.getInteger(json, "w"))
- .setFromName(JsonUtils.getString(json, "fn"))
- .setFromQualifier(JsonUtils.getString(json, "fq"))
- .setToName(JsonUtils.getString(json, "tn"))
- .setToQualifier(JsonUtils.getString(json, "tq"));
+ .setId(utils.getString(json, "id"))
+ .setFromId(utils.getLong(json, "fi"))
+ .setToId(utils.getLong(json, "ti"))
+ .setFromKey(utils.getString(json, "fk"))
+ .setToKey(utils.getString(json, "tk"))
+ .setUsage(utils.getString(json, "u"))
+ .setWeight(utils.getInteger(json, "w"))
+ .setFromName(utils.getString(json, "fn"))
+ .setFromQualifier(utils.getString(json, "fq"))
+ .setToName(utils.getString(json, "tn"))
+ .setToQualifier(utils.getString(json, "tq"));
}
-} \ No newline at end of file
+}
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/EventUnmarshaller.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/EventUnmarshaller.java
index 2f7878e55ef..adff1c0f2db 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/EventUnmarshaller.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/EventUnmarshaller.java
@@ -19,20 +19,21 @@
*/
package org.sonar.wsclient.unmarshallers;
-import org.json.simple.JSONObject;
import org.sonar.wsclient.services.Event;
+import org.sonar.wsclient.services.WSUtils;
public class EventUnmarshaller extends AbstractUnmarshaller<Event> {
@Override
- protected Event parse(JSONObject json) {
+ protected Event parse(Object json) {
+ WSUtils utils = WSUtils.getINSTANCE();
return new Event()
- .setId(JsonUtils.getString(json, "id"))
- .setResourceKey(JsonUtils.getString(json, "rk"))
- .setName(JsonUtils.getString(json, "n"))
- .setCategory(JsonUtils.getString(json, "c"))
- .setDate(JsonUtils.getDateTime(json, "dt"))
- .setDescription(JsonUtils.getString(json, "ds"))
- .setData(JsonUtils.getString(json, "data"));
+ .setId(utils.getString(json, "id"))
+ .setResourceKey(utils.getString(json, "rk"))
+ .setName(utils.getString(json, "n"))
+ .setCategory(utils.getString(json, "c"))
+ .setDate(utils.getDateTime(json, "dt"))
+ .setDescription(utils.getString(json, "ds"))
+ .setData(utils.getString(json, "data"));
}
}
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/FavouriteUnmarshaller.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/FavouriteUnmarshaller.java
index ab93ef28082..1d40609208e 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/FavouriteUnmarshaller.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/FavouriteUnmarshaller.java
@@ -19,19 +19,20 @@
*/
package org.sonar.wsclient.unmarshallers;
-import org.json.simple.JSONObject;
import org.sonar.wsclient.services.Favourite;
+import org.sonar.wsclient.services.WSUtils;
public class FavouriteUnmarshaller extends AbstractUnmarshaller<Favourite> {
@Override
- protected Favourite parse(JSONObject json) {
+ protected Favourite parse(Object json) {
+ WSUtils utils = WSUtils.getINSTANCE();
return new Favourite()
- .setId(JsonUtils.getInteger(json, "id"))
- .setKey(JsonUtils.getString(json, "key"))
- .setName(JsonUtils.getString(json, "name"))
- .setScope(JsonUtils.getString(json, "scope"))
- .setQualifier(JsonUtils.getString(json, "qualifier"))
- .setLanguage(JsonUtils.getString(json, "lang"));
+ .setId(utils.getInteger(json, "id"))
+ .setKey(utils.getString(json, "key"))
+ .setName(utils.getString(json, "name"))
+ .setScope(utils.getString(json, "scope"))
+ .setQualifier(utils.getString(json, "qualifier"))
+ .setLanguage(utils.getString(json, "lang"));
}
}
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/MetricUnmarshaller.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/MetricUnmarshaller.java
index e63bcd8c08b..123e94583c1 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/MetricUnmarshaller.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/MetricUnmarshaller.java
@@ -19,21 +19,22 @@
*/
package org.sonar.wsclient.unmarshallers;
-import org.json.simple.JSONObject;
import org.sonar.wsclient.services.Metric;
+import org.sonar.wsclient.services.WSUtils;
public class MetricUnmarshaller extends AbstractUnmarshaller<Metric> {
@Override
- protected Metric parse(JSONObject json) {
+ protected Metric parse(Object json) {
+ WSUtils utils = WSUtils.getINSTANCE();
return new Metric()
- .setKey(JsonUtils.getString(json, "key"))
- .setName(JsonUtils.getString(json, "name"))
- .setDomain(JsonUtils.getString(json, "domain"))
- .setDescription(JsonUtils.getString(json, "description"))
- .setDirection(JsonUtils.getInteger(json, "direction"))
- .setType(JsonUtils.getString(json, "val_type"))
- .setUserManaged(JsonUtils.getBoolean(json, "user_managed"))
- .setHidden(JsonUtils.getBoolean(json, "hidden"));
+ .setKey(utils.getString(json, "key"))
+ .setName(utils.getString(json, "name"))
+ .setDomain(utils.getString(json, "domain"))
+ .setDescription(utils.getString(json, "description"))
+ .setDirection(utils.getInteger(json, "direction"))
+ .setType(utils.getString(json, "val_type"))
+ .setUserManaged(utils.getBoolean(json, "user_managed"))
+ .setHidden(utils.getBoolean(json, "hidden"));
}
}
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/PluginUnmarshaller.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/PluginUnmarshaller.java
index 29d785f485e..dbcfafa6faa 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/PluginUnmarshaller.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/PluginUnmarshaller.java
@@ -1,7 +1,7 @@
package org.sonar.wsclient.unmarshallers;
-import org.json.simple.JSONObject;
import org.sonar.wsclient.services.Plugin;
+import org.sonar.wsclient.services.WSUtils;
/**
* @since 2.4
@@ -9,11 +9,12 @@ import org.sonar.wsclient.services.Plugin;
public class PluginUnmarshaller extends AbstractUnmarshaller<Plugin> {
@Override
- protected Plugin parse(JSONObject json) {
+ protected Plugin parse(Object json) {
+ WSUtils utils = WSUtils.getINSTANCE();
return new Plugin()
- .setKey(JsonUtils.getString(json, "key"))
- .setName(JsonUtils.getString(json, "name"))
- .setVersion(JsonUtils.getString(json, "version"));
+ .setKey(utils.getString(json, "key"))
+ .setName(utils.getString(json, "name"))
+ .setVersion(utils.getString(json, "version"));
}
}
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/PropertyUnmarshaller.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/PropertyUnmarshaller.java
index 9df96d1433d..5efea1ca841 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/PropertyUnmarshaller.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/PropertyUnmarshaller.java
@@ -19,15 +19,16 @@
*/
package org.sonar.wsclient.unmarshallers;
-import org.json.simple.JSONObject;
import org.sonar.wsclient.services.Property;
+import org.sonar.wsclient.services.WSUtils;
public class PropertyUnmarshaller extends AbstractUnmarshaller<Property> {
@Override
- protected Property parse(JSONObject json) {
+ protected Property parse(Object json) {
+ WSUtils utils = WSUtils.getINSTANCE();
return new Property()
- .setKey(JsonUtils.getString(json, "key"))
- .setValue(JsonUtils.getString(json, "value"));
+ .setKey(utils.getString(json, "key"))
+ .setValue(utils.getString(json, "value"));
}
-} \ No newline at end of file
+}
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ResourceUnmarshaller.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ResourceUnmarshaller.java
index fba424d4bbe..bdb9db20e17 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ResourceUnmarshaller.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ResourceUnmarshaller.java
@@ -19,10 +19,9 @@
*/
package org.sonar.wsclient.unmarshallers;
-import org.json.simple.JSONArray;
-import org.json.simple.JSONObject;
import org.sonar.wsclient.services.Measure;
import org.sonar.wsclient.services.Resource;
+import org.sonar.wsclient.services.WSUtils;
import java.util.ArrayList;
import java.util.List;
@@ -30,53 +29,56 @@ import java.util.List;
public class ResourceUnmarshaller extends AbstractUnmarshaller<Resource> {
@Override
- protected Resource parse(JSONObject json) {
+ protected Resource parse(Object json) {
Resource resource = new Resource();
parseResourceFields(json, resource);
parseMeasures(json, resource);
return resource;
}
- private void parseResourceFields(JSONObject json, Resource resource) {
- resource.setId(JsonUtils.getInteger(json, "id"))
- .setKey(JsonUtils.getString(json, "key"))
- .setName(JsonUtils.getString(json, "name"))
- .setLongName(JsonUtils.getString(json, "lname"))
- .setScope(JsonUtils.getString(json, "scope"))
- .setQualifier(JsonUtils.getString(json, "qualifier"))
- .setLanguage(JsonUtils.getString(json, "lang"))
- .setDescription(JsonUtils.getString(json, "description"))
- .setDate(JsonUtils.getDateTime(json, "date"))
- .setVersion(JsonUtils.getString(json, "version"))
- .setPeriod1Mode(JsonUtils.getString(json, "p1"))
- .setPeriod1Param(JsonUtils.getString(json, "p1p"))
- .setPeriod1Date(JsonUtils.getDateTime(json, "p1d"))
- .setPeriod2Mode(JsonUtils.getString(json, "p2"))
- .setPeriod2Param(JsonUtils.getString(json, "p2p"))
- .setPeriod2Date(JsonUtils.getDateTime(json, "p2d"))
- .setPeriod3Mode(JsonUtils.getString(json, "p3"))
- .setPeriod3Param(JsonUtils.getString(json, "p3p"))
- .setPeriod3Date(JsonUtils.getDateTime(json, "p3d"))
- .setPeriod4Mode(JsonUtils.getString(json, "p4"))
- .setPeriod4Param(JsonUtils.getString(json, "p4p"))
- .setPeriod4Date(JsonUtils.getDateTime(json, "p4d"))
- .setPeriod5Mode(JsonUtils.getString(json, "p5"))
- .setPeriod5Param(JsonUtils.getString(json, "p5p"))
- .setPeriod5Date(JsonUtils.getDateTime(json, "p5d"));
+ private void parseResourceFields(Object json, Resource resource) {
+ WSUtils utils = WSUtils.getINSTANCE();
+ resource.setId(utils.getInteger(json, "id"))
+ .setKey(utils.getString(json, "key"))
+ .setName(utils.getString(json, "name"))
+ .setLongName(utils.getString(json, "lname"))
+ .setScope(utils.getString(json, "scope"))
+ .setQualifier(utils.getString(json, "qualifier"))
+ .setLanguage(utils.getString(json, "lang"))
+ .setDescription(utils.getString(json, "description"))
+ .setDate(utils.getDateTime(json, "date"))
+ .setVersion(utils.getString(json, "version"))
+ .setPeriod1Mode(utils.getString(json, "p1"))
+ .setPeriod1Param(utils.getString(json, "p1p"))
+ .setPeriod1Date(utils.getDateTime(json, "p1d"))
+ .setPeriod2Mode(utils.getString(json, "p2"))
+ .setPeriod2Param(utils.getString(json, "p2p"))
+ .setPeriod2Date(utils.getDateTime(json, "p2d"))
+ .setPeriod3Mode(utils.getString(json, "p3"))
+ .setPeriod3Param(utils.getString(json, "p3p"))
+ .setPeriod3Date(utils.getDateTime(json, "p3d"))
+ .setPeriod4Mode(utils.getString(json, "p4"))
+ .setPeriod4Param(utils.getString(json, "p4p"))
+ .setPeriod4Date(utils.getDateTime(json, "p4d"))
+ .setPeriod5Mode(utils.getString(json, "p5"))
+ .setPeriod5Param(utils.getString(json, "p5p"))
+ .setPeriod5Date(utils.getDateTime(json, "p5d"));
}
- private void parseMeasures(JSONObject json, Resource resource) {
- JSONArray measuresJson = JsonUtils.getArray(json, "msr");
+ private void parseMeasures(Object json, Resource resource) {
+ WSUtils utils = WSUtils.getINSTANCE();
+ Object measuresJson = utils.getField(json, "msr");
if (measuresJson != null) {
resource.setMeasures(parseMeasures(measuresJson));
}
}
- private List<Measure> parseMeasures(JSONArray measuresJson) {
+ private List<Measure> parseMeasures(Object measuresJson) {
+ WSUtils utils = WSUtils.getINSTANCE();
List<Measure> projectMeasures = new ArrayList<Measure>();
- int len = measuresJson.size();
+ int len = utils.getArraySize(measuresJson);
for (int i = 0; i < len; i++) {
- JSONObject measureJson = (JSONObject) measuresJson.get(i);
+ Object measureJson = utils.getArrayElement(measuresJson, i);
if (measureJson != null) {
Measure measure = parseMeasure(measureJson);
projectMeasures.add(measure);
@@ -85,27 +87,29 @@ public class ResourceUnmarshaller extends AbstractUnmarshaller<Resource> {
return projectMeasures;
}
- private Measure parseMeasure(JSONObject json) {
+ private Measure parseMeasure(Object json) {
+ WSUtils utils = WSUtils.getINSTANCE();
+
Measure measure = new Measure();
measure
- .setMetricKey(JsonUtils.getString(json, "key"))
- .setMetricName(JsonUtils.getString(json, "name"))
- .setValue(JsonUtils.getDouble(json, "val"))
- .setFormattedValue(JsonUtils.getString(json, "frmt_val"))
- .setTrend(JsonUtils.getInteger(json, "trend"))
- .setVar(JsonUtils.getInteger(json, "var"))
- .setData(JsonUtils.getString(json, "data"))
- .setRuleKey(JsonUtils.getString(json, "rule_key"))
- .setRuleName(JsonUtils.getString(json, "rule_name"))
- .setRuleCategory(JsonUtils.getString(json, "rule_category"))
- .setRuleSeverity(JsonUtils.getString(json, "rule_priority"))
- .setCharacteristicKey(JsonUtils.getString(json, "ctic_key"))
- .setCharacteristicName(JsonUtils.getString(json, "ctic_name"))
- .setVariation1(JsonUtils.getDouble(json, "var1"))
- .setVariation2(JsonUtils.getDouble(json, "var2"))
- .setVariation3(JsonUtils.getDouble(json, "var3"))
- .setVariation4(JsonUtils.getDouble(json, "var4"))
- .setVariation5(JsonUtils.getDouble(json, "var5"));
+ .setMetricKey(utils.getString(json, "key"))
+ .setMetricName(utils.getString(json, "name"))
+ .setValue(utils.getDouble(json, "val"))
+ .setFormattedValue(utils.getString(json, "frmt_val"))
+ .setTrend(utils.getInteger(json, "trend"))
+ .setVar(utils.getInteger(json, "var"))
+ .setData(utils.getString(json, "data"))
+ .setRuleKey(utils.getString(json, "rule_key"))
+ .setRuleName(utils.getString(json, "rule_name"))
+ .setRuleCategory(utils.getString(json, "rule_category"))
+ .setRuleSeverity(utils.getString(json, "rule_priority"))
+ .setCharacteristicKey(utils.getString(json, "ctic_key"))
+ .setCharacteristicName(utils.getString(json, "ctic_name"))
+ .setVariation1(utils.getDouble(json, "var1"))
+ .setVariation2(utils.getDouble(json, "var2"))
+ .setVariation3(utils.getDouble(json, "var3"))
+ .setVariation4(utils.getDouble(json, "var4"))
+ .setVariation5(utils.getDouble(json, "var5"));
return measure;
}
}
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/RuleUnmarshaller.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/RuleUnmarshaller.java
index 041d3afd573..9cb3b12f56e 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/RuleUnmarshaller.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/RuleUnmarshaller.java
@@ -19,10 +19,9 @@
*/
package org.sonar.wsclient.unmarshallers;
-import org.json.simple.JSONArray;
-import org.json.simple.JSONObject;
import org.sonar.wsclient.services.Rule;
import org.sonar.wsclient.services.RuleParam;
+import org.sonar.wsclient.services.WSUtils;
import java.util.ArrayList;
import java.util.List;
@@ -33,34 +32,40 @@ import java.util.List;
public class RuleUnmarshaller extends AbstractUnmarshaller<Rule> {
@Override
- protected Rule parse(JSONObject json) {
+ protected Rule parse(Object json) {
Rule rule = new Rule();
parseRuleFields(json, rule);
parseParams(json, rule);
return rule;
}
- private void parseRuleFields(JSONObject json, Rule rule) {
- rule.setTitle(JsonUtils.getString(json, "title"))
- .setKey(JsonUtils.getString(json, "key"))
- .setRepository(JsonUtils.getString(json, "plugin"))
- .setDescription(JsonUtils.getString(json, "description"))
- .setSeverity(JsonUtils.getString(json, "priority"))
- .setActive("ACTIVE".equals(JsonUtils.getString(json, "status")));
+ private void parseRuleFields(Object json, Rule rule) {
+ WSUtils utils = WSUtils.getINSTANCE();
+
+ rule.setTitle(utils.getString(json, "title"))
+ .setKey(utils.getString(json, "key"))
+ .setRepository(utils.getString(json, "plugin"))
+ .setDescription(utils.getString(json, "description"))
+ .setSeverity(utils.getString(json, "priority"))
+ .setActive("ACTIVE".equals(utils.getString(json, "status")));
}
- private void parseParams(JSONObject json, Rule rule) {
- JSONArray paramsJson = (JSONArray) json.get("params");
+ private void parseParams(Object json, Rule rule) {
+ WSUtils utils = WSUtils.getINSTANCE();
+
+ Object paramsJson = utils.getField(json, "params");
if (paramsJson != null) {
rule.setParams(parseParams(paramsJson));
}
}
- private List<RuleParam> parseParams(JSONArray paramsJson) {
+ private List<RuleParam> parseParams(Object paramsJson) {
+ WSUtils utils = WSUtils.getINSTANCE();
+
List<RuleParam> ruleParams = new ArrayList<RuleParam>();
- int len = paramsJson.size();
+ int len = utils.getArraySize(paramsJson);
for (int i = 0; i < len; i++) {
- JSONObject paramJson = (JSONObject) paramsJson.get(i);
+ Object paramJson = utils.getArrayElement(paramsJson, i);
if (paramJson != null) {
RuleParam param = parseParam(paramJson);
ruleParams.add(param);
@@ -69,11 +74,13 @@ public class RuleUnmarshaller extends AbstractUnmarshaller<Rule> {
return ruleParams;
}
- private RuleParam parseParam(JSONObject json) {
+ private RuleParam parseParam(Object json) {
+ WSUtils utils = WSUtils.getINSTANCE();
+
RuleParam param = new RuleParam();
- param.setName(JsonUtils.getString(json, "name"))
- .setDescription(JsonUtils.getString(json, "description"))
- .setValue(JsonUtils.getString(json, "value"));
+ param.setName(utils.getString(json, "name"))
+ .setDescription(utils.getString(json, "description"))
+ .setValue(utils.getString(json, "value"));
return param;
}
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ServerUnmarshaller.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ServerUnmarshaller.java
index a17a36189d4..829b174dc47 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ServerUnmarshaller.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ServerUnmarshaller.java
@@ -19,9 +19,8 @@
*/
package org.sonar.wsclient.unmarshallers;
-import org.json.simple.JSONObject;
-import org.json.simple.JSONValue;
import org.sonar.wsclient.services.Server;
+import org.sonar.wsclient.services.WSUtils;
import java.util.List;
@@ -30,12 +29,13 @@ import java.util.List;
*/
public class ServerUnmarshaller implements Unmarshaller<Server> {
public Server toModel(String json) {
- JSONObject map = (JSONObject) JSONValue.parse(json);
+ WSUtils utils = WSUtils.getINSTANCE();
+ Object map = utils.parse(json);
Server server = new Server()
- .setId(JsonUtils.getString(map, "id"))
- .setVersion(JsonUtils.getString(map, "version"))
- .setStatusMessage(JsonUtils.getString(map, "status_msg"));
- String status = JsonUtils.getString(map, "status");
+ .setId(utils.getString(map, "id"))
+ .setVersion(utils.getString(map, "version"))
+ .setStatusMessage(utils.getString(map, "status_msg"));
+ String status = utils.getString(map, "status");
if (status != null) {
server.setStatus(Server.Status.valueOf(status));
}
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/SourceUnmarshaller.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/SourceUnmarshaller.java
index cbda6b4c5d0..16eb4aff98d 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/SourceUnmarshaller.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/SourceUnmarshaller.java
@@ -19,20 +19,18 @@
*/
package org.sonar.wsclient.unmarshallers;
-import org.json.simple.JSONObject;
import org.sonar.wsclient.services.Source;
-
-import java.util.Map;
+import org.sonar.wsclient.services.WSUtils;
public class SourceUnmarshaller extends AbstractUnmarshaller<Source> {
@Override
- protected Source parse(JSONObject json) {
+ protected Source parse(Object json) {
+ WSUtils utils = WSUtils.getINSTANCE();
Source source = new Source();
- for (Object o : json.entrySet()) {
- Map.Entry<String, String> entry = (Map.Entry<String, String>) o;
- source.addLine(Integer.parseInt(entry.getKey()), entry.getValue());
+ for (String field : utils.getFields(json)) {
+ source.addLine(Integer.parseInt(field), utils.getString(json, field));
}
return source;
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/TimeMachineUnmarshaller.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/TimeMachineUnmarshaller.java
index b59a364bc31..08a0ac26d87 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/TimeMachineUnmarshaller.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/TimeMachineUnmarshaller.java
@@ -19,43 +19,45 @@
*/
package org.sonar.wsclient.unmarshallers;
-import org.json.simple.JSONArray;
-import org.json.simple.JSONObject;
import org.sonar.wsclient.services.TimeMachine;
import org.sonar.wsclient.services.TimeMachineCell;
import org.sonar.wsclient.services.TimeMachineColumn;
+import org.sonar.wsclient.services.WSUtils;
public class TimeMachineUnmarshaller extends AbstractUnmarshaller<TimeMachine> {
- protected TimeMachine parse(JSONObject json) {
- JSONArray cols = JsonUtils.getArray(json, "cols");
- JSONArray cells = JsonUtils.getArray(json, "cells");
+ protected TimeMachine parse(Object json) {
+ WSUtils utils = WSUtils.getINSTANCE();
+ Object cols = utils.getField(json, "cols");
+ Object cells = utils.getField(json, "cells");
return new TimeMachine(toColumns(cols), toCells(cells));
}
- private TimeMachineColumn[] toColumns(JSONArray cols) {
- int size = cols.size();
+ private TimeMachineColumn[] toColumns(Object cols) {
+ WSUtils utils = WSUtils.getINSTANCE();
+ int size = utils.getArraySize(cols);
TimeMachineColumn[] result = new TimeMachineColumn[size];
for (int index = 0; index < size; index++) {
- JSONObject colJson = (JSONObject) cols.get(index);
- result[index] = new TimeMachineColumn(index, JsonUtils.getString(colJson, "metric"), null, null);
+ Object colJson = utils.getArrayElement(cols, index);
+ result[index] = new TimeMachineColumn(index, utils.getString(colJson, "metric"), null, null);
}
return result;
}
- private TimeMachineCell[] toCells(JSONArray cells) {
- int size = cells.size();
+ private TimeMachineCell[] toCells(Object cells) {
+ WSUtils utils = WSUtils.getINSTANCE();
+ int size = utils.getArraySize(cells);
TimeMachineCell[] result = new TimeMachineCell[size];
for (int i = 0; i < size; i++) {
- JSONObject cellJson = (JSONObject) cells.get(i);
- JSONArray valuesJson = JsonUtils.getArray(cellJson, "v");
+ Object cellJson = utils.getArrayElement(cells, i);
+ Object valuesJson = utils.getField(cellJson, "v");
- Object[] resultValues = new Object[valuesJson.size()];
- for (int indexValue = 0; indexValue < valuesJson.size(); indexValue++) {
- Object value = valuesJson.get(indexValue);
+ Object[] resultValues = new Object[utils.getArraySize(valuesJson)];
+ for (int indexValue = 0; indexValue < utils.getArraySize(valuesJson); indexValue++) {
+ Object value = utils.getArrayElement(valuesJson, indexValue);
resultValues[indexValue] = value;
}
- result[i] = new TimeMachineCell(JsonUtils.getDateTime(cellJson, "d"), resultValues);
+ result[i] = new TimeMachineCell(utils.getDateTime(cellJson, "d"), resultValues);
}
return result;
}
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ViolationUnmarshaller.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ViolationUnmarshaller.java
index 258e5938570..18c297b22cb 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ViolationUnmarshaller.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ViolationUnmarshaller.java
@@ -19,31 +19,33 @@
*/
package org.sonar.wsclient.unmarshallers;
-import org.json.simple.JSONObject;
import org.sonar.wsclient.services.Violation;
+import org.sonar.wsclient.services.WSUtils;
public class ViolationUnmarshaller extends AbstractUnmarshaller<Violation> {
@Override
- protected Violation parse(JSONObject json) {
+ protected Violation parse(Object json) {
+ WSUtils utils = WSUtils.getINSTANCE();
+
Violation violation = new Violation();
- violation.setMessage(JsonUtils.getString(json, "message"));
- violation.setLine(JsonUtils.getInteger(json, "line"));
- violation.setSeverity(JsonUtils.getString(json, "priority"));
- violation.setCreatedAt(JsonUtils.getDateTime(json, "createdAt"));
+ violation.setMessage(utils.getString(json, "message"));
+ violation.setLine(utils.getInteger(json, "line"));
+ violation.setSeverity(utils.getString(json, "priority"));
+ violation.setCreatedAt(utils.getDateTime(json, "createdAt"));
- JSONObject rule = (JSONObject) json.get("rule");
+ Object rule = utils.getField(json, "rule");
if (rule != null) {
- violation.setRuleKey(JsonUtils.getString(rule, "key"));
- violation.setRuleName(JsonUtils.getString(rule, "name"));
+ violation.setRuleKey(utils.getString(rule, "key"));
+ violation.setRuleName(utils.getString(rule, "name"));
}
- JSONObject resource = (JSONObject) json.get("resource");
+ Object resource = utils.getField(json, "resource");
if (resource != null) {
- violation.setResourceKey(JsonUtils.getString(resource, "key"));
- violation.setResourceName(JsonUtils.getString(resource, "name"));
- violation.setResourceQualifier(JsonUtils.getString(resource, "qualifier"));
- violation.setResourceScope(JsonUtils.getString(resource, "scope"));
+ violation.setResourceKey(utils.getString(resource, "key"));
+ violation.setResourceName(utils.getString(resource, "name"));
+ violation.setResourceQualifier(utils.getString(resource, "qualifier"));
+ violation.setResourceScope(utils.getString(resource, "scope"));
}
return violation;
}