382237 support non java JSON classes
This commit is contained in:
parent
c9d026703f
commit
4a1a4700c3
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue