You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by an...@apache.org on 2016/06/20 02:58:34 UTC
[11/50] [abbrv] ignite git commit: JSON: workaround for false cycle
detection in case of spring exceptions.
JSON: workaround for false cycle detection in case of spring exceptions.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/cba61d78
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/cba61d78
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/cba61d78
Branch: refs/heads/ignite-3262
Commit: cba61d785e3cea110b19a0f34eee4907a1ab5a79
Parents: 2cf3241
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Fri Jun 3 14:06:21 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Fri Jun 3 14:06:21 2016 +0700
----------------------------------------------------------------------
.../protocols/http/jetty/GridJettyJsonConfig.java | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/cba61d78/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyJsonConfig.java
----------------------------------------------------------------------
diff --git a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyJsonConfig.java b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyJsonConfig.java
index b85d01e..9e1532a 100644
--- a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyJsonConfig.java
+++ b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyJsonConfig.java
@@ -205,16 +205,20 @@ class GridJettyJsonConfig extends JsonConfig {
};
/**
- * Helper class for simple to-string conversion for {@link UUID}.
+ * Workaround for false cycle detection in Spring exceptions.
+ *
+ * Cycle detection of json-lib is quite primitive.
+ * If some bean has more than one reference to same object false cycle will be detected.
*/
- private static JsonValueProcessor THROWABLE_PROCESSOR = new AbstractJsonValueProcessor() {
+ private static JsonValueProcessor RUNTIME_EXCEPTION_PROCESSOR = new AbstractJsonValueProcessor() {
/** {@inheritDoc} */
protected Object processBean(Object bean, JsonConfig jsonCfg) {
if (bean == null)
return new JSONObject(true);
- if (bean instanceof Throwable) {
- Throwable e = (Throwable)bean;
+ if (bean instanceof RuntimeException &&
+ bean.getClass().getCanonicalName().startsWith("org.springframework.")) {
+ RuntimeException e = (RuntimeException)bean;
final JSONObject ret = new JSONObject();
@@ -226,7 +230,7 @@ class GridJettyJsonConfig extends JsonConfig {
return ret;
}
- throw new UnsupportedOperationException("Serialize value to json is not supported: " + bean);
+ return JSONObject.fromObject(bean, jsonCfg);
}
};
@@ -244,7 +248,7 @@ class GridJettyJsonConfig extends JsonConfig {
registerJsonValueProcessor(Date.class, DATE_PROCESSOR);
registerJsonValueProcessor(java.sql.Date.class, DATE_PROCESSOR);
registerJsonValueProcessor(HashMap.class, NULL_MAP_PREPROCESSOR);
- registerJsonValueProcessor(Throwable.class, THROWABLE_PROCESSOR);
+ registerJsonValueProcessor(RuntimeException.class, RUNTIME_EXCEPTION_PROCESSOR);
final LessNamingProcessor lessNamingProcessor = new LessNamingProcessor();