diff options
author | Greg Wilkins | 2013-01-25 01:28:54 +0000 |
---|---|---|
committer | Greg Wilkins | 2013-01-25 01:28:54 +0000 |
commit | 4a1a4700c343b6e1eeed659ff56f867794c765e1 (patch) | |
tree | f4ad60b0487a84d592a08153a9ee30fdf47fcf9a | |
parent | c9d026703f85df4f23c21e4bae753dc2a4151dee (diff) | |
download | org.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.java | 20 |
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; } |