382237 support non java JSON classes

This commit is contained in:
Greg Wilkins 2013-01-25 12:28:54 +11:00
parent c9d026703f
commit 4a1a4700c3
1 changed files with 17 additions and 3 deletions

View File

@ -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;
}