Repository: incubator-juneau
Updated Branches:
  refs/heads/master 864893f23 -> f479285a7


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java 
b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java
index 948be20..8b8da03 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java
@@ -343,14 +343,14 @@ public class UonSerializer extends WriterSerializer {
                return out;
        }
 
-       private SerializerWriter serializeBeanMap(UonSerializerSession session, 
UonWriter out, BeanMap<?> m, boolean addClassAttr) throws Exception {
+       private SerializerWriter serializeBeanMap(UonSerializerSession session, 
UonWriter out, BeanMap<?> m, boolean addTypeProperty) throws Exception {
                int depth = session.getIndent();
 
                out.startFlag('o');
 
                boolean addComma = false;
 
-               for (BeanPropertyValue p : m.getValues(session.isTrimNulls(), 
addClassAttr ? session.createBeanTypeNameProperty(m, null) : null)) {
+               for (BeanPropertyValue p : m.getValues(session.isTrimNulls(), 
addTypeProperty ? session.createBeanTypeNameProperty(m) : null)) {
                        BeanPropertyMeta pMeta = p.getMeta();
                        ClassMeta<?> cMeta = p.getClassMeta();
 
@@ -452,6 +452,12 @@ public class UonSerializer extends WriterSerializer {
        }
 
        @Override /* CoreApi */
+       public UonSerializer addToDictionary(Class<?>...classes) throws 
LockedException {
+               super.addToDictionary(classes);
+               return this;
+       }
+
+       @Override /* CoreApi */
        public <T> UonSerializer addImplClass(Class<T> interfaceClass, Class<? 
extends T> implClass) throws LockedException {
                super.addImplClass(interfaceClass, implClass);
                return this;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializerContext.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializerContext.java
 
b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializerContext.java
index 5e0e440..cfcb1c6 100644
--- 
a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializerContext.java
+++ 
b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializerContext.java
@@ -28,6 +28,7 @@ import org.apache.juneau.serializer.*;
  *     <li>{@link UonSerializer#addNotBeanClasses(Class[])}
  *     <li>{@link UonSerializer#addBeanFilters(Class[])}
  *     <li>{@link UonSerializer#addPojoSwaps(Class[])}
+ *     <li>{@link UonSerializer#addToDictionary(Class[])}
  *     <li>{@link UonSerializer#addImplClass(Class,Class)}
  * </ul>
  * <p>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
 
b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
index cda21ba..103e16c 100644
--- 
a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
+++ 
b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
@@ -76,6 +76,7 @@ public class UrlEncodingParser extends UonParser {
                        eType = (ClassMeta<T>)object();
                PojoSwap<T,Object> transform = 
(PojoSwap<T,Object>)eType.getPojoSwap();
                ClassMeta<?> sType = eType.getSerializedClassMeta();
+               BeanDictionary bd = bc.getBeanDictionary();
 
                int c = r.peek();
                if (c == '?')
@@ -89,7 +90,7 @@ public class UrlEncodingParser extends UonParser {
                        if (m.containsKey("_value"))
                                o = m.get("_value");
                        else
-                               o = m.cast();
+                               o = bd.cast(m);
                } else if (sType.isMap()) {
                        Map m = (sType.canCreateNewInstance() ? 
(Map)sType.newInstance() : new ObjectMap(bc));
                        o = parseIntoMap(session, r, m, sType.getKeyType(), 
sType.getValueType());
@@ -107,7 +108,7 @@ public class UrlEncodingParser extends UonParser {
                        ClassMeta<Object> valueType = object();
                        parseIntoMap(session, r, m, string(), valueType);
                        if (m.containsKey(bc.getBeanTypePropertyName()))
-                               o = m.cast();
+                               o = bd.cast(m);
                        else if (m.containsKey("_value"))
                                o = 
session.getBeanContext().convertToType(m.get("_value"), sType);
                        else if (sType.isCollection()) {
@@ -183,7 +184,7 @@ public class UrlEncodingParser extends UonParser {
                                                state = S1;
                                        } else  {
                                                // For performance, we bypass 
parseAnything for string values.
-                                               V value = 
(V)(valueType.isString() ? super.parseString(session, r.unread(), true) : 
super.parseAnything(session, valueType, r.unread(), m, true));
+                                               V value = 
(V)(valueType.isString() ? super.parseString(session, r.unread(), true) : 
super.parseAnything(session, valueType, r.unread(), m, true, null));
 
                                                // If we already encountered 
this parameter, turn it into a list.
                                                if (m.containsKey(currAttr) && 
valueType.isObject()) {
@@ -289,22 +290,22 @@ public class UrlEncodingParser extends UonParser {
                                                        BeanPropertyMeta pMeta 
= m.getPropertyMeta(currAttr);
                                                        if (pMeta == null) {
                                                                if 
(m.getMeta().isSubTyped()) {
-                                                                       Object 
value = parseAnything(session, object(), r.unread(), m.getBean(false), true);
+                                                                       Object 
value = parseAnything(session, object(), r.unread(), m.getBean(false), true, 
null);
                                                                        
m.put(currAttr, value);
                                                                } else {
                                                                        
onUnknownProperty(session, currAttr, m, currAttrLine, currAttrCol);
-                                                                       
parseAnything(session, object(), r.unread(), m.getBean(false), true); // Read 
content anyway to ignore it
+                                                                       
parseAnything(session, object(), r.unread(), m.getBean(false), true, null); // 
Read content anyway to ignore it
                                                                }
                                                        } else {
                                                                
session.setCurrentProperty(pMeta);
                                                                if 
(session.shouldUseExpandedParams(pMeta)) {
                                                                        
ClassMeta et = pMeta.getClassMeta().getElementType();
-                                                                       Object 
value = parseAnything(session, et, r.unread(), m.getBean(false), true);
+                                                                       Object 
value = parseAnything(session, et, r.unread(), m.getBean(false), true, pMeta);
                                                                        
setName(et, value, currAttr);
                                                                        
pMeta.add(m, value);
                                                                } else {
                                                                        
ClassMeta<?> cm = pMeta.getClassMeta();
-                                                                       Object 
value = parseAnything(session, cm, r.unread(), m.getBean(false), true);
+                                                                       Object 
value = parseAnything(session, cm, r.unread(), m.getBean(false), true, pMeta);
                                                                        
setName(cm, value, currAttr);
                                                                        
pMeta.set(m, value);
                                                                }
@@ -431,7 +432,7 @@ public class UrlEncodingParser extends UonParser {
                        throw new ParseException(session, "Argument lengths 
don't match.  vals={0}, argTypes={1}", vals.length, argTypes.length);
                for (int i = 0; i < vals.length; i++) {
                        String s = String.valueOf(vals[i]);
-                       vals[i] = super.parseAnything(session, argTypes[i], new 
UonReader(s, false), session.getOuter(), true);
+                       vals[i] = super.parseAnything(session, argTypes[i], new 
UonReader(s, false), session.getOuter(), true, null);
                }
 
                return vals;
@@ -451,7 +452,7 @@ public class UrlEncodingParser extends UonParser {
                UonParserSession session = createParameterContext(in);
                try {
                        UonReader r = session.getReader();
-                       return super.parseAnything(session, type, r, null, 
true);
+                       return super.parseAnything(session, type, r, null, 
true, null);
                } catch (ParseException e) {
                        throw e;
                } catch (Exception e) {
@@ -540,6 +541,12 @@ public class UrlEncodingParser extends UonParser {
        }
 
        @Override /* CoreApi */
+       public UrlEncodingParser addToDictionary(Class<?>...classes) throws 
LockedException {
+               super.addToDictionary(classes);
+               return this;
+       }
+
+       @Override /* CoreApi */
        public <T> UrlEncodingParser addImplClass(Class<T> interfaceClass, 
Class<? extends T> implClass) throws LockedException {
                super.addImplClass(interfaceClass, implClass);
                return this;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserContext.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserContext.java
 
b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserContext.java
index b7a75c3..43f7da4 100644
--- 
a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserContext.java
+++ 
b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserContext.java
@@ -27,6 +27,7 @@ import org.apache.juneau.*;
  *     <li>{@link UrlEncodingParser#addNotBeanClasses(Class[])}
  *     <li>{@link UrlEncodingParser#addBeanFilters(Class[])}
  *     <li>{@link UrlEncodingParser#addPojoSwaps(Class[])}
+ *     <li>{@link UrlEncodingParser#addToDictionary(Class[])}
  *     <li>{@link UrlEncodingParser#addImplClass(Class,Class)}
  * </ul>
  * <p>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
 
b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
index 3863386..714309c 100644
--- 
a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
+++ 
b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
@@ -321,12 +321,12 @@ public class UrlEncodingSerializer extends UonSerializer {
        }
 
        @SuppressWarnings({ "rawtypes" })
-       private SerializerWriter serializeBeanMap(UrlEncodingSerializerSession 
session, UonWriter out, BeanMap<?> m, boolean addClassAttr) throws Exception {
+       private SerializerWriter serializeBeanMap(UrlEncodingSerializerSession 
session, UonWriter out, BeanMap<?> m, boolean addTypeProperty) throws Exception 
{
                int depth = session.getIndent();
 
                boolean addAmp = false;
 
-               for (BeanPropertyValue p : m.getValues(session.isTrimNulls(), 
addClassAttr ? session.createBeanTypeNameProperty(m, null) : null)) {
+               for (BeanPropertyValue p : m.getValues(session.isTrimNulls(), 
addTypeProperty ? session.createBeanTypeNameProperty(m) : null)) {
                        BeanPropertyMeta pMeta = p.getMeta();
                        ClassMeta<?> cMeta = p.getClassMeta();
 
@@ -444,6 +444,12 @@ public class UrlEncodingSerializer extends UonSerializer {
        }
 
        @Override /* CoreApi */
+       public UrlEncodingSerializer addToDictionary(Class<?>...classes) throws 
LockedException {
+               super.addToDictionary(classes);
+               return this;
+       }
+
+       @Override /* CoreApi */
        public <T> UrlEncodingSerializer addImplClass(Class<T> interfaceClass, 
Class<? extends T> implClass) throws LockedException {
                super.addImplClass(interfaceClass, implClass);
                return this;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerContext.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerContext.java
 
b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerContext.java
index 6ccfb6b..6f5f7c8 100644
--- 
a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerContext.java
+++ 
b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerContext.java
@@ -27,6 +27,7 @@ import org.apache.juneau.*;
  *     <li>{@link UrlEncodingSerializer#addNotBeanClasses(Class[])}
  *     <li>{@link UrlEncodingSerializer#addBeanFilters(Class[])}
  *     <li>{@link UrlEncodingSerializer#addPojoSwaps(Class[])}
+ *     <li>{@link UrlEncodingSerializer#addToDictionary(Class[])}
  *     <li>{@link UrlEncodingSerializer#addImplClass(Class,Class)}
  * </ul>
  * <p>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java 
b/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
index 2311a52..f066c84 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
@@ -62,7 +62,7 @@ public class XmlParser extends ReaderParser {
        private static final int UNKNOWN=0, OBJECT=1, ARRAY=2, STRING=3, 
NUMBER=4, BOOLEAN=5, NULL=6;
 
 
-       private <T> T parseAnything(XmlParserSession session, ClassMeta<T> 
eType, String currAttr, XMLStreamReader r, Object outer, boolean isRoot) throws 
Exception {
+       private <T> T parseAnything(XmlParserSession session, ClassMeta<T> 
eType, String currAttr, XMLStreamReader r, Object outer, boolean isRoot, 
BeanPropertyMeta pMeta) throws Exception {
 
                BeanContext bc = session.getBeanContext();
                if (eType == null)
@@ -70,6 +70,7 @@ public class XmlParser extends ReaderParser {
                PojoSwap<T,Object> transform = 
(PojoSwap<T,Object>)eType.getPojoSwap();
                ClassMeta<?> sType = eType.getSerializedClassMeta();
                session.setCurrentClass(sType);
+               BeanDictionary bd = (pMeta == null ? bc.getBeanDictionary() : 
pMeta.getBeanDictionary());
 
                String wrapperAttr = (isRoot && 
session.isPreserveRootElement()) ? r.getName().getLocalPart() : null;
                String typeAttr = r.getAttributeValue(null, "type");
@@ -108,12 +109,12 @@ public class XmlParser extends ReaderParser {
                if (sType.isObject()) {
                        if (jsonType == OBJECT) {
                                ObjectMap m = new ObjectMap(bc);
-                               parseIntoMap(session, r, m, string(), object());
+                               parseIntoMap(session, r, m, string(), object(), 
pMeta);
                                if (wrapperAttr != null)
                                        m = new 
ObjectMap(bc).append(wrapperAttr, m);
-                               o = m.cast();
+                               o = bd.cast(m);
                        } else if (jsonType == ARRAY)
-                               o = parseIntoCollection(session, r, new 
ObjectList(bc), object());
+                               o = parseIntoCollection(session, r, new 
ObjectList(bc), object(), pMeta);
                        else if (jsonType == STRING) {
                                o = session.decodeString(r.getElementText());
                                if (sType.isChar())
@@ -133,17 +134,17 @@ public class XmlParser extends ReaderParser {
                        o = session.decodeString(r.getElementText()).charAt(0);
                } else if (sType.isMap()) {
                        Map m = (sType.canCreateNewInstance(outer) ? 
(Map)sType.newInstance(outer) : new ObjectMap(bc));
-                       o = parseIntoMap(session, r, m, sType.getKeyType(), 
sType.getValueType());
+                       o = parseIntoMap(session, r, m, sType.getKeyType(), 
sType.getValueType(), pMeta);
                        if (wrapperAttr != null)
                                o = new ObjectMap(bc).append(wrapperAttr, m);
                } else if (sType.isCollection()) {
                        Collection l = (sType.canCreateNewInstance(outer) ? 
(Collection)sType.newInstance(outer) : new ObjectList(bc));
-                       o = parseIntoCollection(session, r, l, 
sType.getElementType());
+                       o = parseIntoCollection(session, r, l, 
sType.getElementType(), pMeta);
                } else if (sType.isNumber()) {
                        o = 
parseNumber(session.decodeLiteral(r.getElementText()), (Class<? extends 
Number>)sType.getInnerClass());
                } else if (sType.canCreateNewInstanceFromObjectMap(outer)) {
                        ObjectMap m = new ObjectMap(bc);
-                       parseIntoMap(session, r, m, string(), object());
+                       parseIntoMap(session, r, m, string(), object(), pMeta);
                        o = sType.newInstanceFromObjectMap(outer, m);
                } else if (sType.canCreateNewBean(outer)) {
                        if 
(sType.getExtendedMeta(XmlClassMeta.class).getFormat() == XmlFormat.COLLAPSED) {
@@ -151,7 +152,7 @@ public class XmlParser extends ReaderParser {
                                BeanMap<?> m = bc.newBeanMap(outer, 
sType.getInnerClass());
                                BeanPropertyMeta bpm = 
m.getMeta().getExtendedMeta(XmlBeanMeta.class).getPropertyMeta(fieldName);
                                ClassMeta<?> cm = m.getMeta().getClassMeta();
-                               Object value = parseAnything(session, cm, 
currAttr, r, m.getBean(false), false);
+                               Object value = parseAnything(session, cm, 
currAttr, r, m.getBean(false), false, null);
                                setName(cm, value, currAttr);
                                bpm.set(m, value);
                                o = m.getBean();
@@ -160,7 +161,7 @@ public class XmlParser extends ReaderParser {
                                o = parseIntoBean(session, r, m).getBean();
                        }
                } else if (sType.isArray()) {
-                       ArrayList l = (ArrayList)parseIntoCollection(session, 
r, new ArrayList(), sType.getElementType());
+                       ArrayList l = (ArrayList)parseIntoCollection(session, 
r, new ArrayList(), sType.getElementType(), pMeta);
                        o = bc.toArray(sType, l);
                } else if (sType.canCreateNewInstanceFromString(outer)) {
                        o = sType.newInstanceFromString(outer, 
session.decodeString(r.getElementText()));
@@ -179,7 +180,7 @@ public class XmlParser extends ReaderParser {
                return (T)o;
        }
 
-       private <K,V> Map<K,V> parseIntoMap(XmlParserSession session, 
XMLStreamReader r, Map<K,V> m, ClassMeta<K> keyType, ClassMeta<V> valueType) 
throws Exception {
+       private <K,V> Map<K,V> parseIntoMap(XmlParserSession session, 
XMLStreamReader r, Map<K,V> m, ClassMeta<K> keyType, ClassMeta<V> valueType, 
BeanPropertyMeta pMeta) throws Exception {
                BeanContext bc = session.getBeanContext();
                int depth = 0;
                for (int i = 0; i < r.getAttributeCount(); i++) {
@@ -199,7 +200,7 @@ public class XmlParser extends ReaderParser {
                                depth++;
                                currAttr = 
session.decodeString(r.getLocalName());
                                K key = convertAttrToType(session, m, currAttr, 
keyType);
-                               V value = parseAnything(session, valueType, 
currAttr, r, m, false);
+                               V value = parseAnything(session, valueType, 
currAttr, r, m, false, pMeta);
                                setName(valueType, value, currAttr);
                                if (valueType.isObject() && m.containsKey(key)) 
{
                                        Object o = m.get(key);
@@ -218,13 +219,13 @@ public class XmlParser extends ReaderParser {
                return m;
        }
 
-       private <E> Collection<E> parseIntoCollection(XmlParserSession session, 
XMLStreamReader r, Collection<E> l, ClassMeta<E> elementType) throws Exception {
+       private <E> Collection<E> parseIntoCollection(XmlParserSession session, 
XMLStreamReader r, Collection<E> l, ClassMeta<E> elementType, BeanPropertyMeta 
pMeta) throws Exception {
                int depth = 0;
                do {
                        int event = r.nextTag();
                        if (event == START_ELEMENT) {
                                depth++;
-                               E value = parseAnything(session, elementType, 
null, r, l, false);
+                               E value = parseAnything(session, elementType, 
null, r, l, false, pMeta);
                                l.add(value);
                        } else if (event == END_ELEMENT) {
                                depth--;
@@ -242,7 +243,7 @@ public class XmlParser extends ReaderParser {
                        int event = r.nextTag();
                        if (event == START_ELEMENT) {
                                depth++;
-                               o[i] = parseAnything(session, argTypes[i], 
null, r, null, false);
+                               o[i] = parseAnything(session, argTypes[i], 
null, r, null, false, null);
                                i++;
                        } else if (event == END_ELEMENT) {
                                depth--;
@@ -315,7 +316,7 @@ public class XmlParser extends ReaderParser {
                                BeanPropertyMeta pMeta = 
xmlMeta.getPropertyMeta(currAttr);
                                if (pMeta == null) {
                                        if (m.getMeta().isSubTyped()) {
-                                               Object value = 
parseAnything(session, string(), currAttr, r, m.getBean(false), false);
+                                               Object value = 
parseAnything(session, string(), currAttr, r, m.getBean(false), false, null);
                                                m.put(currAttr, value);
                                        } else {
                                                Location l = r.getLocation();
@@ -327,7 +328,7 @@ public class XmlParser extends ReaderParser {
                                        XmlFormat xf = 
pMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getXmlFormat();
                                        if (xf == COLLAPSED) {
                                                ClassMeta<?> et = 
pMeta.getClassMeta().getElementType();
-                                               Object value = 
parseAnything(session, et, currAttr, r, m.getBean(false), false);
+                                               Object value = 
parseAnything(session, et, currAttr, r, m.getBean(false), false, pMeta);
                                                setName(et, value, currAttr);
                                                pMeta.add(m, value);
                                        } else if (xf == ATTR)  {
@@ -335,7 +336,7 @@ public class XmlParser extends ReaderParser {
                                                r.nextTag();
                                        } else {
                                                ClassMeta<?> cm = 
pMeta.getClassMeta();
-                                               Object value = 
parseAnything(session, cm, currAttr, r, m.getBean(false), false);
+                                               Object value = 
parseAnything(session, cm, currAttr, r, m.getBean(false), false, pMeta);
                                                setName(cm, value, currAttr);
                                                pMeta.set(m, value);
                                        }
@@ -399,7 +400,7 @@ public class XmlParser extends ReaderParser {
                                                depth++;
                                                currAttr = 
session.decodeString(r.getLocalName());
                                                String key = 
convertAttrToType(session, null, currAttr, string());
-                                               Object value = 
parseAnything(session, object(), currAttr, r, null, false);
+                                               Object value = 
parseAnything(session, object(), currAttr, r, null, false, null);
                                                if (m.containsKey(key)) {
                                                        Object o = m.get(key);
                                                        if (o instanceof 
ObjectList)
@@ -446,7 +447,7 @@ public class XmlParser extends ReaderParser {
        protected <T> T doParse(ParserSession session, ClassMeta<T> type) 
throws Exception {
                XmlParserSession s = (XmlParserSession)session;
                type = s.getBeanContext().normalizeClassMeta(type);
-               return parseAnything(s, type, null, s.getXmlStreamReader(), 
s.getOuter(), true);
+               return parseAnything(s, type, null, s.getXmlStreamReader(), 
s.getOuter(), true, null);
        }
 
        @Override /* ReaderParser */
@@ -500,6 +501,12 @@ public class XmlParser extends ReaderParser {
        }
 
        @Override /* CoreApi */
+       public XmlParser addToDictionary(Class<?>...classes) throws 
LockedException {
+               super.addToDictionary(classes);
+               return this;
+       }
+
+       @Override /* CoreApi */
        public <T> XmlParser addImplClass(Class<T> interfaceClass, Class<? 
extends T> implClass) throws LockedException {
                super.addImplClass(interfaceClass, implClass);
                return this;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParserContext.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParserContext.java 
b/juneau-core/src/main/java/org/apache/juneau/xml/XmlParserContext.java
index 09307a6..22bf648 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParserContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlParserContext.java
@@ -31,6 +31,7 @@ import org.apache.juneau.parser.*;
  *     <li>{@link XmlParser#addNotBeanClasses(Class[])}
  *     <li>{@link XmlParser#addBeanFilters(Class[])}
  *     <li>{@link XmlParser#addPojoSwaps(Class[])}
+ *     <li>{@link XmlParser#addToDictionary(Class[])}
  *     <li>{@link XmlParser#addImplClass(Class,Class)}
  * </ul>
  * <p>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java 
b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
index b848532..601e9e5 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
@@ -473,19 +473,11 @@ public class XmlSchemaSerializer extends XmlSerializer {
                                                Namespace cNs = 
first(elementType.getExtendedMeta(XmlClassMeta.class).getNamespace(), 
cm.getExtendedMeta(XmlClassMeta.class).getNamespace(), defaultNs);
                                                schemas.queueType(cNs, null, 
elementType);
                                                w.sTag(i+1, "sequence").nl();
-                                               w.oTag(i+2, "choice")
-                                                       .attr("minOccurs", 0)
+                                               w.oTag(i+2, "any")
+                                                       
.attr("processContents", "skip")
                                                        .attr("maxOccurs", 
"unbounded")
-                                                       .cTag().nl();
-                                               w.oTag(i+3, "element")
-                                                       .attr("name", 
XmlUtils.encodeElementName(getElementName(elementType)))
-                                                       .attr("type", 
getXmlType(cNs, elementType))
-                                                       .ceTag().nl();
-                                               w.oTag(i+3, "element")
-                                                       .attr("name", "null")
-                                                       .attr("type", "string")
+                                                       .attr("minOccurs", "0")
                                                        .ceTag().nl();
-                                               w.eTag(i+2, "choice").nl();
                                                w.eTag(i+1, "sequence").nl();
                                        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java 
b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
index cdc7d0e..32f618e 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
@@ -690,6 +690,12 @@ public class XmlSerializer extends WriterSerializer {
        }
 
        @Override /* CoreApi */
+       public XmlSerializer addToDictionary(Class<?>...classes) throws 
LockedException {
+               super.addToDictionary(classes);
+               return this;
+       }
+
+       @Override /* CoreApi */
        public <T> XmlSerializer addImplClass(Class<T> interfaceClass, Class<? 
extends T> implClass) throws LockedException {
                super.addImplClass(interfaceClass, implClass);
                return this;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerContext.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerContext.java 
b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerContext.java
index 97704d6..c1fba2e 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerContext.java
@@ -28,6 +28,7 @@ import org.apache.juneau.serializer.*;
  *     <li>{@link XmlSerializer#addNotBeanClasses(Class[])}
  *     <li>{@link XmlSerializer#addBeanFilters(Class[])}
  *     <li>{@link XmlSerializer#addPojoSwaps(Class[])}
+ *     <li>{@link XmlSerializer#addToDictionary(Class[])}
  *     <li>{@link XmlSerializer#addImplClass(Class,Class)}
  * </ul>
  * <p>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/test/java/org/apache/juneau/BeanMapTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/BeanMapTest.java 
b/juneau-core/src/test/java/org/apache/juneau/BeanMapTest.java
index df431d5..c51757b 100755
--- a/juneau-core/src/test/java/org/apache/juneau/BeanMapTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/BeanMapTest.java
@@ -457,23 +457,23 @@ public class BeanMapTest {
                m.put("b", new D2());
                assertEquals("default", t.b.s);
 
-               JsonParser p = new 
JsonParser().setClassLoader(BeanMapTest.class.getClassLoader());
-               m.put("lb1", new 
ObjectList("[{_type:'"+D2.class.getName()+"',s:'foobar'}]", p));
+               JsonParser p = new 
JsonParser().setClassLoader(BeanMapTest.class.getClassLoader()).addToDictionary(D2.class);
+               m.put("lb1", new ObjectList("[{_type:'D2',s:'foobar'}]", p));
                assertEquals(ObjectList.class.getName(), 
t.lb1.getClass().getName());
                assertEquals(D2.class.getName(), 
t.lb1.get(0).getClass().getName());
                assertEquals("foobar", (t.lb1.get(0)).s);
 
-               m.put("lb2", new 
ObjectList("[{_type:'"+D2.class.getName()+"',s:'foobar'}]", p));
+               m.put("lb2", new ObjectList("[{_type:'D2',s:'foobar'}]", p));
                assertEquals(ArrayList.class.getName(), 
t.lb2.getClass().getName());
                assertEquals(D2.class.getName(), 
t.lb2.get(0).getClass().getName());
                assertEquals("foobar", (t.lb2.get(0)).s);
 
-               m.put("ab1", new 
ObjectList("[{_type:'"+D2.class.getName()+"',s:'foobar'}]", p));
+               m.put("ab1", new ObjectList("[{_type:'D2',s:'foobar'}]", p));
                assertEquals("[L"+D2.class.getName()+";", 
t.ab1.getClass().getName());
                assertEquals(D2.class.getName(), t.ab1[0].getClass().getName());
                assertEquals("foobar", t.ab1[0].s);
 
-               m.put("ab2", new 
ObjectList("[{_type:'"+D2.class.getName()+"',s:'foobar'}]", p));
+               m.put("ab2", new ObjectList("[{_type:'D2',s:'foobar'}]", p));
                assertEquals("[L"+D2.class.getName()+";", 
t.ab2.getClass().getName());
                assertEquals(D2.class.getName(), t.ab2[0].getClass().getName());
                assertEquals("foobar", t.ab2[0].s);
@@ -487,6 +487,7 @@ public class BeanMapTest {
                public D2[] ab2 = new D2[0];
        }
 
+       @Bean(typeName="D2")
        public static class D2 {
                public String s = "default";
        }
@@ -643,8 +644,8 @@ public class BeanMapTest {
                assertEquals(HEnum.THREE, t7.getEnum2());
 
                // Create instance directly from JSON.
-               JsonParser p = new 
JsonParser().setClassLoader(BeanMapTest.class.getClassLoader());
-               t7 = 
(H)p.parse("{_type:'"+H.class.getName()+"',enum1:'THREE',enum2:'ONE'}", 
Object.class);
+               JsonParser p = new 
JsonParser().setClassLoader(BeanMapTest.class.getClassLoader()).addToDictionary(H.class);
+               t7 = (H)p.parse("{_type:'H',enum1:'THREE',enum2:'ONE'}", 
Object.class);
                assertEquals("{enum1:'THREE',enum2:'ONE'}", 
serializer.serialize(t7));
                assertEquals(HEnum.THREE, t7.enum1);
                assertEquals(HEnum.ONE, t7.getEnum2());
@@ -654,6 +655,7 @@ public class BeanMapTest {
                ONE, TWO, THREE
        }
 
+       @Bean(typeName="H")
        public static class H {
 
                public HEnum enum1;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripAddClassAttrsTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripAddClassAttrsTest.java
 
b/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripAddClassAttrsTest.java
index 1f46926..a325b08 100755
--- 
a/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripAddClassAttrsTest.java
+++ 
b/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripAddClassAttrsTest.java
@@ -19,6 +19,7 @@ import static org.junit.Assert.*;
 
 import java.util.*;
 
+import org.apache.juneau.annotation.*;
 import org.apache.juneau.html.*;
 import org.apache.juneau.jena.*;
 import org.apache.juneau.json.*;
@@ -107,6 +108,11 @@ public class RoundTripAddClassAttrsTest extends 
RoundTripTest {
                super(label, s, p, flags);
        }
 
+       @Override
+       public Class<?>[] getDictionary() {
+               return new Class<?>[]{A.class, B.class, C.class, D.class, 
E.class, F.class};
+       }
+
        
//====================================================================================================
        // testBean
        
//====================================================================================================
@@ -137,6 +143,7 @@ public class RoundTripAddClassAttrsTest extends 
RoundTripTest {
        public static abstract class AA implements IA {
        }
 
+       @Bean(typeName="A")
        public static class A extends AA {
                private String f1;
 
@@ -193,6 +200,7 @@ public class RoundTripAddClassAttrsTest extends 
RoundTripTest {
                assertEquals("foo", ((A)t.f2d).getF1());
        }
 
+       @Bean(typeName="B")
        public static class B {
                public A f2a;
                public AA f2b;
@@ -223,6 +231,7 @@ public class RoundTripAddClassAttrsTest extends 
RoundTripTest {
                assertEquals("foo", t.f3d.get("foo").getF1());
        }
 
+       @Bean(typeName="C")
        public static class C {
                public Map<String,A> f3a = new HashMap<String,A>();
                public Map<String,A> f3b = new HashMap<String,A>();
@@ -258,6 +267,7 @@ public class RoundTripAddClassAttrsTest extends 
RoundTripTest {
                assertEquals("foo", ((A)t.f4d[0]).getF1());
        }
 
+       @Bean(typeName="D")
        public static class D {
                public A[] f4a;
                public AA[] f4b;
@@ -293,6 +303,7 @@ public class RoundTripAddClassAttrsTest extends 
RoundTripTest {
                assertEquals("foo", ((A)t.f5d.get(0)).getF1());
        }
 
+       @Bean(typeName="E")
        public static class E {
                public List<A> f5a = new LinkedList<A>();
                public List<AA> f5b = new LinkedList<AA>();
@@ -328,6 +339,7 @@ public class RoundTripAddClassAttrsTest extends 
RoundTripTest {
                assertEquals("foo", ((A)t.f6d.get(0)[0]).getF1());
        }
 
+       @Bean(typeName="F")
        public static class F {
                public List<A[]> f6a = new LinkedList<A[]>();
                public List<AA[]> f6b = new LinkedList<AA[]>();

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java 
b/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
index 5cf2d81..14bb115 100755
--- a/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
@@ -189,8 +189,8 @@ public abstract class RoundTripTest {
        public boolean debug = false;
 
        public RoundTripTest(String label, Serializer s, Parser p, int flags) 
throws Exception {
-               this.s = 
s.clone().addBeanFilters(getBeanFilters()).addPojoSwaps(getPojoSwaps());
-               this.p = p == null ? null : 
p.clone().addBeanFilters(getBeanFilters()).addPojoSwaps(getPojoSwaps());
+               this.s = 
s.clone().addBeanFilters(getBeanFilters()).addPojoSwaps(getPojoSwaps()).addToDictionary(getDictionary());
+               this.p = p == null ? null : 
p.clone().addBeanFilters(getBeanFilters()).addPojoSwaps(getPojoSwaps()).addToDictionary(getDictionary());
                this.label = label;
 
                Map<Class<Object>, Class<? extends Object>> m = 
getImplClasses();
@@ -215,6 +215,10 @@ public abstract class RoundTripTest {
                return new Class<?>[0];
        }
 
+       public Class<?>[] getDictionary() {
+               return new Class<?>[0];
+       }
+
        public <T> Map<Class<T>,Class<? extends T>> getImplClasses() {
                return null;
        }
@@ -282,6 +286,12 @@ public abstract class RoundTripTest {
                        p.addPojoSwaps(c);
        }
 
+       protected void addToDictionary(Class<?>...c) {
+               s.addToDictionary(c);
+               if (p != null)
+                       p.addToDictionary(c);
+       }
+
        public boolean isValidationOnly() {
                return returnOriginalObject;
        }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/test/java/org/apache/juneau/html/CommonParserTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/test/java/org/apache/juneau/html/CommonParserTest.java 
b/juneau-core/src/test/java/org/apache/juneau/html/CommonParserTest.java
index 3b8df3e..6fb6e6f 100755
--- a/juneau-core/src/test/java/org/apache/juneau/html/CommonParserTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/html/CommonParserTest.java
@@ -19,6 +19,7 @@ import static org.junit.Assert.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
 import org.apache.juneau.parser.*;
 import org.junit.*;
 
@@ -30,7 +31,7 @@ public class CommonParserTest {
        
//====================================================================================================
        @Test
        public void testFromSerializer() throws Exception {
-               ReaderParser p = 
HtmlParser.DEFAULT.clone().setClassLoader(getClass().getClassLoader());
+               ReaderParser p = 
HtmlParser.DEFAULT.clone().setClassLoader(getClass().getClassLoader()).addToDictionary(A1.class);
                Map m = null;
                String in;
 
@@ -65,6 +66,7 @@ public class CommonParserTest {
                t2.add(new A3("name1","value1"));
                t1.list = t2;
                in = new 
HtmlSerializer().setProperty(SERIALIZER_addBeanTypeProperties, 
true).serialize(t1);
+               System.err.println(in);
                t1 = (A1)p.parse(in, Object.class);
                assertEquals("value1", t1.list.get(1).value);
 
@@ -73,6 +75,7 @@ public class CommonParserTest {
                assertEquals("value1", t1.list.get(1).value);
        }
 
+       @Bean(typeName="A1")
        public static class A1 {
                public A2 list;
        }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/test/java/org/apache/juneau/json/CommonParserTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/test/java/org/apache/juneau/json/CommonParserTest.java 
b/juneau-core/src/test/java/org/apache/juneau/json/CommonParserTest.java
index f9fe1f0..f621811 100755
--- a/juneau-core/src/test/java/org/apache/juneau/json/CommonParserTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/json/CommonParserTest.java
@@ -19,6 +19,7 @@ import static org.junit.Assert.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
 import org.apache.juneau.parser.*;
 import org.junit.*;
 
@@ -30,7 +31,7 @@ public class CommonParserTest {
        
//====================================================================================================
        @Test
        public void testFromSerializer() throws Exception {
-               ReaderParser p = 
JsonParser.DEFAULT.clone().setClassLoader(getClass().getClassLoader());
+               ReaderParser p = 
JsonParser.DEFAULT.clone().setClassLoader(getClass().getClassLoader()).addToDictionary(A1.class);
 
                Map m = null;
                m = (Map)p.parse("{a:1}", Object.class);
@@ -84,7 +85,7 @@ public class CommonParserTest {
                tl.add(new A3("name0","value0"));
                tl.add(new A3("name1","value1"));
                b.list = tl;
-               String json = new 
JsonSerializer().setProperty(SERIALIZER_addBeanTypeProperties, 
true).serialize(b);
+               String json = new 
JsonSerializer().setProperty(SERIALIZER_addBeanTypeProperties, 
true).addToDictionary(A1.class).serialize(b);
                b = (A1)p.parse(json, Object.class);
                assertEquals("value1", b.list.get(1).value);
 
@@ -93,6 +94,7 @@ public class CommonParserTest {
                assertEquals("value1", b.list.get(1).value);
        }
 
+       @Bean(typeName="A1")
        public static class A1 {
                public A2 list;
        }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/test/java/org/apache/juneau/urlencoding/CommonParser_UonTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/test/java/org/apache/juneau/urlencoding/CommonParser_UonTest.java
 
b/juneau-core/src/test/java/org/apache/juneau/urlencoding/CommonParser_UonTest.java
index bac9a2c..d55b456 100755
--- 
a/juneau-core/src/test/java/org/apache/juneau/urlencoding/CommonParser_UonTest.java
+++ 
b/juneau-core/src/test/java/org/apache/juneau/urlencoding/CommonParser_UonTest.java
@@ -19,13 +19,14 @@ import static org.junit.Assert.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
 import org.apache.juneau.parser.*;
 import org.junit.*;
 
 @SuppressWarnings({"rawtypes","hiding","serial","javadoc"})
 public class CommonParser_UonTest {
 
-       ReaderParser p = 
UonParser.DEFAULT.clone().setClassLoader(getClass().getClassLoader());
+       ReaderParser p = 
UonParser.DEFAULT.clone().setClassLoader(getClass().getClassLoader()).addToDictionary(A1.class);
        ReaderParser pe = 
UonParser.DEFAULT_DECODING.clone().setClassLoader(getClass().getClassLoader());
 
        
//====================================================================================================
@@ -79,6 +80,7 @@ public class CommonParser_UonTest {
                assertEquals("value1", b.list.get(1).value);
        }
 
+       @Bean(typeName="A1")
        public static class A1 {
                public A2 list;
        }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
 
b/juneau-core/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
index d33854a..1254916 100755
--- 
a/juneau-core/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
+++ 
b/juneau-core/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
@@ -20,6 +20,7 @@ import static org.junit.Assert.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 import org.junit.*;
@@ -27,7 +28,7 @@ import org.junit.*;
 @SuppressWarnings({"rawtypes","hiding","serial","javadoc"})
 public class CommonParser_UrlEncodingTest {
 
-       ReaderParser p = 
UrlEncodingParser.DEFAULT.clone().setClassLoader(getClass().getClassLoader());
+       ReaderParser p = 
UrlEncodingParser.DEFAULT.clone().setClassLoader(getClass().getClassLoader()).addToDictionary(A1.class);
 
        
//====================================================================================================
        // testFromSerializer
@@ -81,6 +82,7 @@ public class CommonParser_UrlEncodingTest {
                assertEquals("value1", b.list.get(1).value);
        }
 
+       @Bean(typeName="A1")
        public static class A1 {
                public A2 list;
        }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f479285a/juneau-core/src/test/java/org/apache/juneau/utils/PojoRestTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/test/java/org/apache/juneau/utils/PojoRestTest.java 
b/juneau-core/src/test/java/org/apache/juneau/utils/PojoRestTest.java
index 5addefc..8661c71 100755
--- a/juneau-core/src/test/java/org/apache/juneau/utils/PojoRestTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/utils/PojoRestTest.java
@@ -18,6 +18,7 @@ import static org.junit.Assert.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.parser.*;
 import org.junit.*;
@@ -90,18 +91,18 @@ public class PojoRestTest {
 
                // Serialize it to JSON.
                String s = serializer.serialize(p);
-               String expectedValue = 
"{_type:'org.apache.juneau.utils.PojoRestTest$Person',name:'some 
name',age:123,addresses:[{street:'street A',city:'city A',state:'state 
A',zip:12345,isCurrent:true},{street:'street B',city:'city B',state:'state 
B',zip:12345,isCurrent:false}]}";
+               String expectedValue = "{_type:'Person',name:'some 
name',age:123,addresses:[{street:'street A',city:'city A',state:'state 
A',zip:12345,isCurrent:true},{street:'street B',city:'city B',state:'state 
B',zip:12345,isCurrent:false}]}";
                assertEquals(expectedValue, s);
 
                // Parse it back to Java objects.
-               p = 
(Person)JsonParser.DEFAULT.clone().setClassLoader(getClass().getClassLoader()).parse(s,
 Object.class);
+               p = 
(Person)JsonParser.DEFAULT.clone().setClassLoader(getClass().getClassLoader()).addToDictionary(Person.class).parse(s,
 Object.class);
                expectedValue = "city B";
                s = p.addresses[1].city;
                assertEquals(expectedValue, s);
 
                // Parse it back into JSON again.
                s = serializer.serialize(p);
-               expectedValue = 
"{_type:'org.apache.juneau.utils.PojoRestTest$Person',name:'some 
name',age:123,addresses:[{street:'street A',city:'city A',state:'state 
A',zip:12345,isCurrent:true},{street:'street B',city:'city B',state:'state 
B',zip:12345,isCurrent:false}]}";
+               expectedValue = "{_type:'Person',name:'some 
name',age:123,addresses:[{street:'street A',city:'city A',state:'state 
A',zip:12345,isCurrent:true},{street:'street B',city:'city B',state:'state 
B',zip:12345,isCurrent:false}]}";
                assertEquals(expectedValue, s);
 
                // Try adding an address
@@ -242,6 +243,7 @@ public class PojoRestTest {
                }
        }
 
+       @Bean(typeName="Person")
        public static class Person {
                public String name;
                public int age;


Reply via email to