Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2013-01-25 01:28:54 +0000
committerGreg Wilkins2013-01-25 01:28:54 +0000
commit4a1a4700c343b6e1eeed659ff56f867794c765e1 (patch)
treef4ad60b0487a84d592a08153a9ee30fdf47fcf9a
parentc9d026703f85df4f23c21e4bae753dc2a4151dee (diff)
downloadorg.eclipse.jetty.project-4a1a4700c343b6e1eeed659ff56f867794c765e1.tar.gz
org.eclipse.jetty.project-4a1a4700c343b6e1eeed659ff56f867794c765e1.tar.xz
org.eclipse.jetty.project-4a1a4700c343b6e1eeed659ff56f867794c765e1.zip
382237 support non java JSON classes
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/ajax/JSON.java20
1 files changed, 17 insertions, 3 deletions
diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/ajax/JSON.java b/jetty-util/src/main/java/org/eclipse/jetty/util/ajax/JSON.java
index 2f14f0ce22..d40567752e 100644
--- a/jetty-util/src/main/java/org/eclipse/jetty/util/ajax/JSON.java
+++ b/jetty-util/src/main/java/org/eclipse/jetty/util/ajax/JSON.java
@@ -86,8 +86,12 @@ import org.eclipse.jetty.util.log.Logger;
* . These convertors are looked up by class, interface and super class by
* {@link #getConvertor(Class)}.
* </p>
- *
- *
+ * <p>If a JSON object has a "class" field, then a java class for that name is
+ * looked up and the method {@link convertTo(Class,Map)} is used to find a
+ * Convertor for that class. If a JSON object has a "x-class" field then a
+ * direct lookup for a Convertor for that named x-class is done, so that none
+ * java classes may be converted.
+ * </p>
*/
public class JSON
{
@@ -945,6 +949,15 @@ public class JSON
next = seekTo("\"}",source);
}
+ String xclassname = (String)map.get("x-class");
+ if (xclassname != null)
+ {
+ Convertor c = getConvertorFor(xclassname);
+ if (c != null)
+ return c.fromJSON(map);
+ LOG.warn("no Convertor for xclassname '%s'", xclassname);
+ }
+
String classname = (String)map.get("class");
if (classname != null)
{
@@ -955,9 +968,10 @@ public class JSON
}
catch (ClassNotFoundException e)
{
- LOG.warn(e);
+ LOG.warn("no Class for classname '%s'", classname);
}
}
+
return map;
}

Back to the top