Repository: incubator-juneau
Updated Branches:
  refs/heads/master 7b4384b02 -> daa17605a


Ongoing work for lexicon support.

Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/daa17605
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/daa17605
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/daa17605

Branch: refs/heads/master
Commit: daa17605a4a87a6db870ec09784f1823c90d76f9
Parents: 7b4384b
Author: jamesbognar <[email protected]>
Authored: Tue Aug 30 16:11:57 2016 -0400
Committer: jamesbognar <[email protected]>
Committed: Wed Aug 31 12:01:02 2016 -0400

----------------------------------------------------------------------
 .../java/org/apache/juneau/BeanContext.java     |  8 ++--
 .../main/java/org/apache/juneau/BeanMap.java    | 16 ++++---
 .../org/apache/juneau/BeanPropertyValue.java    | 10 ++++-
 .../main/java/org/apache/juneau/ClassMeta.java  |  4 ++
 .../apache/juneau/annotation/BeanProperty.java  |  2 +
 .../apache/juneau/annotation/BeanSubType.java   | 46 --------------------
 .../org/apache/juneau/html/HtmlSerializer.java  |  7 +--
 .../org/apache/juneau/jena/RdfSerializer.java   |  8 ++--
 .../org/apache/juneau/json/JsonSerializer.java  |  8 ++--
 .../juneau/msgpack/MsgPackSerializer.java       |  5 ++-
 .../juneau/serializer/SerializerSession.java    | 19 ++++++++
 .../juneau/urlencoding/UonSerializer.java       |  7 +--
 .../urlencoding/UrlEncodingSerializer.java      | 12 ++---
 .../org/apache/juneau/xml/XmlSerializer.java    | 14 +++---
 .../java/org/apache/juneau/BeanMapTest.java     |  6 +--
 15 files changed, 85 insertions(+), 87 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/daa17605/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanContext.java 
b/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
index 9b9ce4a..90d2135 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
@@ -446,9 +446,9 @@ public class BeanContext extends Context {
         */
        public static final String BEAN_implClasses_put = 
"BeanContext.implClasses.map.put";
 
-       public static final String BEAN_classLexicon = 
"BeanContext.pojoSwaps.list";
-       public static final String BEAN_classLexicon_add = 
"BeanContext.pojoSwaps.list.add";
-       public static final String BEAN_classLexicon_remove = 
"BeanContext.pojoSwaps.list.remove";
+       public static final String BEAN_classLexicon = 
"BeanContext.classLexicon.list";
+       public static final String BEAN_classLexicon_add = 
"BeanContext.classLexicon.list.add";
+       public static final String BEAN_classLexicon_remove = 
"BeanContext.classLexicon.list.remove";
 
        /**
         * Specifies the default parser to use when converting 
<code>Strings</code> to POJOs in the {@link BeanContext#convertToType(Object, 
Class)} method (<code>Class</code>).
@@ -620,7 +620,7 @@ public class BeanContext extends Context {
                }
                pojoSwaps = lpf.toArray(new PojoSwap[0]);
 
-               classLexicon = new ClassLexicon(pm.get(BEAN_pojoSwaps, 
Class[].class, new Class[0]));
+               classLexicon = new ClassLexicon(pm.get(BEAN_classLexicon, 
Class[].class, new Class[0]));
 
                implClasses = new TreeMap<Class<?>,Class<?>>(new 
ClassComparator());
                Map<Class,Class> m = pm.getMap(BEAN_implClasses, Class.class, 
Class.class, null);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/daa17605/juneau-core/src/main/java/org/apache/juneau/BeanMap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanMap.java 
b/juneau-core/src/main/java/org/apache/juneau/BeanMap.java
index 9e39951..0c2235e 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanMap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanMap.java
@@ -392,16 +392,20 @@ public class BeanMap<T> extends 
AbstractMap<String,Object> implements Delegate<T
         * <p>
         * This allows a snapshot of all values to be grabbed from a bean in 
one call.
         *
-        * @param addClassAttr Add a <jk>"_class"</jk> bean property to the 
returned list.
-        * @param ignoreNulls Don't return properties whose values are null.
+        * @param ignoreNulls
+        *      Don't return properties whose values are null.
+        * @param prependVals
+        *      Additional bean property values to prepended to this list.
+        *      Any <jk>null</jk> values in this list will be ignored.
         * @return The list of all bean property values.
         */
-       public List<BeanPropertyValue> getValues(final boolean addClassAttr, 
final boolean ignoreNulls) {
+       public List<BeanPropertyValue> getValues(final boolean ignoreNulls, 
BeanPropertyValue...prependVals) {
                Collection<BeanPropertyMeta> properties = getProperties();
-               int capacity = (ignoreNulls && properties.size() > 10) ? 10 : 
properties.size() + (addClassAttr ? 1 : 0);
+               int capacity = (ignoreNulls && properties.size() > 10) ? 10 : 
properties.size() + prependVals.length;
                List<BeanPropertyValue> l = new 
ArrayList<BeanPropertyValue>(capacity);
-               if (addClassAttr)
-                       l.add(new BeanPropertyValue(meta.getClassProperty(), 
meta.c.getName(), null));
+               for (BeanPropertyValue v : prependVals)
+                       if (v != null)
+                               l.add(v);
                for (BeanPropertyMeta bpm : properties) {
                        try {
                                Object val = bpm.get(this);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/daa17605/juneau-core/src/main/java/org/apache/juneau/BeanPropertyValue.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanPropertyValue.java 
b/juneau-core/src/main/java/org/apache/juneau/BeanPropertyValue.java
index 043dcb3..10676e8 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanPropertyValue.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanPropertyValue.java
@@ -32,7 +32,7 @@ public class BeanPropertyValue {
         * @param value The bean property value.
         * @param thrown The exception thrown by calling the property getter.
         */
-       protected BeanPropertyValue(BeanPropertyMeta pMeta, Object value, 
Throwable thrown) {
+       public BeanPropertyValue(BeanPropertyMeta pMeta, Object value, 
Throwable thrown) {
                this.pMeta = pMeta;
                this.value = value;
                this.thrown = thrown;
@@ -47,6 +47,14 @@ public class BeanPropertyValue {
        }
 
        /**
+        * Returns the bean property metadata.
+        * @return The bean property metadata.
+        */
+       public final ClassMeta<?> getClassMeta() {
+               return pMeta.getClassMeta();
+       }
+
+       /**
         * Returns the bean property name.
         * @return The bean property name.
         */

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/daa17605/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java 
b/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
index ba31b41..64487cc 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
@@ -384,6 +384,10 @@ public final class ClassMeta<T> implements Type {
                return this;
        }
 
+       public ClassLexicon getClassLexicon() {
+               return classLexicon;
+       }
+
        /**
         * Returns the category of this class.
         *

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/daa17605/juneau-core/src/main/java/org/apache/juneau/annotation/BeanProperty.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/annotation/BeanProperty.java 
b/juneau-core/src/main/java/org/apache/juneau/annotation/BeanProperty.java
index 81a3b0d..9fa2557 100644
--- a/juneau-core/src/main/java/org/apache/juneau/annotation/BeanProperty.java
+++ b/juneau-core/src/main/java/org/apache/juneau/annotation/BeanProperty.java
@@ -167,5 +167,7 @@ public @interface BeanProperty {
         * </dl>
         */
        String[] properties() default {};
+
+       Class<?>[] lexicon() default {};
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/daa17605/juneau-core/src/main/java/org/apache/juneau/annotation/BeanSubType.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/annotation/BeanSubType.java 
b/juneau-core/src/main/java/org/apache/juneau/annotation/BeanSubType.java
deleted file mode 100644
index f4486a9..0000000
--- a/juneau-core/src/main/java/org/apache/juneau/annotation/BeanSubType.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/***************************************************************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 
or implied.  See the License for the
- * specific language governing permissions and limitations under the License.
- 
***************************************************************************************************************************/
-package org.apache.juneau.annotation;
-
-import static java.lang.annotation.RetentionPolicy.*;
-
-import java.lang.annotation.*;
-
-/**
- * Maps a bean subclass with a string identifier.
- * <p>
- *     Used in conjunction with {@link Bean#subTypes()} for defining mappings 
of bean subclasses with string identifiers.
- *
- * @author James Bognar ([email protected])
- */
-@Documented
-@Target({})
-@Retention(RUNTIME)
-@Inherited
-public @interface BeanSubType {
-
-       /**
-        * The bean subclass.
-        * <p>
-        * Must be a subclass or subinterface of the parent bean.
-        */
-       Class<?> type();
-
-       /**
-        * A string identifier for this subtype.
-        * <p>
-        * This identifier is used in conjunction with the {@link 
Bean#subTypeProperty()} during serialization
-        *      to create a <code>{subType:<js>'id'</js>}</code> property on 
the serialized object.
-        */
-       String id();
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/daa17605/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java 
b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
index 8b8c070..4d06376 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
@@ -344,8 +344,9 @@ public class HtmlSerializer extends XmlSerializer {
                        out.eTag(i+1, "tr").nl();
                }
 
-               for (BeanPropertyValue p : m.getValues(false, 
session.isTrimNulls())) {
+               for (BeanPropertyValue p : m.getValues(session.isTrimNulls())) {
                        BeanPropertyMeta pMeta = p.getMeta();
+                       ClassMeta<?> cMeta = p.getClassMeta();
 
                        String key = p.getName();
                        Object value = p.getValue();
@@ -353,7 +354,7 @@ public class HtmlSerializer extends XmlSerializer {
                        if (t != null)
                                session.addBeanGetterWarning(pMeta, t);
 
-                       if (session.canIgnoreValue(pMeta.getClassMeta(), key, 
value))
+                       if (session.canIgnoreValue(cMeta, key, value))
                                continue;
 
                        out.sTag(i+1, "tr").nl();
@@ -362,7 +363,7 @@ public class HtmlSerializer extends XmlSerializer {
                        out.eTag(i+2, "td").nl();
                        out.sTag(i+2, "td").nl();
                        try {
-                               serializeAnything(session, out, value, 
p.getMeta().getClassMeta(), key, 2, pMeta);
+                               serializeAnything(session, out, value, cMeta, 
key, 2, pMeta);
                        } catch (SerializeException e) {
                                throw e;
                        } catch (Error e) {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/daa17605/juneau-core/src/main/java/org/apache/juneau/jena/RdfSerializer.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/jena/RdfSerializer.java 
b/juneau-core/src/main/java/org/apache/juneau/jena/RdfSerializer.java
index bdc7e95..fd37609 100644
--- a/juneau-core/src/main/java/org/apache/juneau/jena/RdfSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/jena/RdfSerializer.java
@@ -325,11 +325,11 @@ public class RdfSerializer extends WriterSerializer {
        }
 
        private void serializeBeanMap(RdfSerializerSession session, BeanMap<?> 
m, Resource r) throws SerializeException {
-               List<BeanPropertyValue> l = m.getValues(false, 
session.isTrimNulls());
+               List<BeanPropertyValue> l = m.getValues(session.isTrimNulls());
                Collections.reverse(l);
                for (BeanPropertyValue bpv : l) {
                        BeanPropertyMeta pMeta = bpv.getMeta();
-                       ClassMeta<?> cm = pMeta.getClassMeta();
+                       ClassMeta<?> cMeta = pMeta.getClassMeta();
 
                        if 
(pMeta.getExtendedMeta(RdfBeanPropertyMeta.class).isBeanUri())
                                continue;
@@ -340,7 +340,7 @@ public class RdfSerializer extends WriterSerializer {
                        if (t != null)
                                session.addBeanGetterWarning(pMeta, t);
 
-                       if (session.canIgnoreValue(cm, key, value))
+                       if (session.canIgnoreValue(cMeta, key, value))
                                continue;
 
                        BeanPropertyMeta bpm = bpv.getMeta();
@@ -353,7 +353,7 @@ public class RdfSerializer extends WriterSerializer {
                                session.addModelPrefix(ns);
 
                        Property p = 
session.getModel().createProperty(ns.getUri(), session.encodeElementName(key));
-                       RDFNode n = serializeAnything(session, value, 
pMeta.isUri(), cm, key, pMeta, r);
+                       RDFNode n = serializeAnything(session, value, 
pMeta.isUri(), cMeta, key, pMeta, r);
                        if (n != null)
                                r.addProperty(p, n);
                }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/daa17605/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java 
b/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
index 05ece00..7ae0ac5 100644
--- a/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
@@ -295,16 +295,16 @@ public class JsonSerializer extends WriterSerializer {
                out.append('{');
 
                boolean addComma = false;
-
-               for (BeanPropertyValue p : m.getValues(addClassAttr, 
session.isTrimNulls())) {
+               for (BeanPropertyValue p : m.getValues(session.isTrimNulls(), 
addClassAttr ? session.createBeanClassProperty(m, null) : null)) {
                        BeanPropertyMeta pMeta = p.getMeta();
+                       ClassMeta<?> cMeta = p.getClassMeta();
                        String key = p.getName();
                        Object value = p.getValue();
                        Throwable t = p.getThrown();
                        if (t != null)
                                session.addBeanGetterWarning(pMeta, t);
 
-                       if (session.canIgnoreValue(pMeta.getClassMeta(), key, 
value))
+                       if (session.canIgnoreValue(cMeta, key, value))
                                continue;
 
                        if (addComma)
@@ -312,7 +312,7 @@ public class JsonSerializer extends WriterSerializer {
 
                        out.cr(depth).attr(key).append(':').s();
 
-                       serializeAnything(session, out, value, 
pMeta.getClassMeta(), key, pMeta);
+                       serializeAnything(session, out, value, cMeta, key, 
pMeta);
 
                        addComma = true;
                }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/daa17605/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java 
b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
index f66452f..340ff78 100644
--- a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
@@ -162,7 +162,7 @@ public class MsgPackSerializer extends 
OutputStreamSerializer {
 
        private void serializeBeanMap(MsgPackSerializerSession session, 
MsgPackOutputStream out, final BeanMap<?> m, boolean addClassAttr) throws 
Exception {
 
-               List<BeanPropertyValue> values = m.getValues(addClassAttr, 
session.isTrimNulls());
+               List<BeanPropertyValue> values = 
m.getValues(session.isTrimNulls(), addClassAttr ? 
session.createBeanClassProperty(m, null) : null);
 
                int size = values.size();
                for (BeanPropertyValue p : values)
@@ -172,6 +172,7 @@ public class MsgPackSerializer extends 
OutputStreamSerializer {
 
                for (BeanPropertyValue p : values) {
                        BeanPropertyMeta pMeta = p.getMeta();
+                       ClassMeta<?> cMeta = p.getClassMeta();
                        String key = p.getName();
                        Object value = p.getValue();
                        Throwable t = p.getThrown();
@@ -179,7 +180,7 @@ public class MsgPackSerializer extends 
OutputStreamSerializer {
                                session.addBeanGetterWarning(pMeta, t);
                        else {
                                serializeAnything(session, out, key, null, 
null, null);
-                               serializeAnything(session, out, value, pMeta == 
null ? session.getBeanContext().string() : pMeta.getClassMeta(), key, pMeta);
+                               serializeAnything(session, out, value, cMeta, 
key, pMeta);
                        }
                }
        }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/daa17605/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerSession.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerSession.java 
b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerSession.java
index 3ea28e3..47d0c3d 100644
--- 
a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerSession.java
+++ 
b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerSession.java
@@ -740,4 +740,23 @@ public class SerializerSession extends Session {
                        m.put("stack", stack);
                return m;
        }
+
+       /**
+        * Create a "_class" property that represents the name of the bean.
+        * 
+        * @param m 
+        *      The bean map to create a class property on.
+        * @param lexicon
+        *      The bean/pojo lexicon map to use to resolve the name of the 
bean class.
+        * @return 
+        *      A new bean property value.
+        */
+       public BeanPropertyValue createBeanClassProperty(BeanMap<?> m, 
ClassLexicon lexicon) {
+               BeanMeta<?> bm = m.getMeta();
+               Class<?> c = bm.getClassMeta().getInnerClass();
+               String name = (lexicon == null ? null : 
lexicon.getNameForClass(c));
+               if (name == null)
+                       name = c.getName();
+               return new BeanPropertyValue(bm.getClassProperty(), name, null);
+       }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/daa17605/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 b5204d1..dbdb939 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
@@ -373,8 +373,9 @@ public class UonSerializer extends WriterSerializer {
 
                boolean addComma = false;
 
-               for (BeanPropertyValue p : m.getValues(addClassAttr, 
session.isTrimNulls())) {
+               for (BeanPropertyValue p : m.getValues(session.isTrimNulls(), 
addClassAttr ? session.createBeanClassProperty(m, null) : null)) {
                        BeanPropertyMeta pMeta = p.getMeta();
+                       ClassMeta<?> cMeta = p.getClassMeta();
 
                        String key = p.getName();
                        Object value = p.getValue();
@@ -382,7 +383,7 @@ public class UonSerializer extends WriterSerializer {
                        if (t != null)
                                session.addBeanGetterWarning(pMeta, t);
 
-                       if (session.canIgnoreValue(pMeta.getClassMeta(), key, 
value))
+                       if (session.canIgnoreValue(cMeta, key, value))
                                continue;
 
                        if (addComma)
@@ -390,7 +391,7 @@ public class UonSerializer extends WriterSerializer {
 
                        out.cr(depth).appendObject(key, false, false, 
false).append('=');
 
-                       serializeAnything(session, out, value, 
pMeta.getClassMeta(), key, pMeta, false, false);
+                       serializeAnything(session, out, value, cMeta, key, 
pMeta, false, false);
 
                        addComma = true;
                }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/daa17605/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 4b9f4fd..bf10562 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
@@ -326,8 +326,9 @@ public class UrlEncodingSerializer extends UonSerializer {
 
                boolean addAmp = false;
 
-               for (BeanPropertyValue p : m.getValues(addClassAttr, 
session.isTrimNulls())) {
+               for (BeanPropertyValue p : m.getValues(session.isTrimNulls(), 
addClassAttr ? session.createBeanClassProperty(m, null) : null)) {
                        BeanPropertyMeta pMeta = p.getMeta();
+                       ClassMeta<?> cMeta = p.getClassMeta();
 
                        String key = p.getName();
                        Object value = p.getValue();
@@ -335,21 +336,20 @@ public class UrlEncodingSerializer extends UonSerializer {
                        if (t != null)
                                session.addBeanGetterWarning(pMeta, t);
 
-                       if (session.canIgnoreValue(pMeta.getClassMeta(), key, 
value))
+                       if (session.canIgnoreValue(cMeta, key, value))
                                continue;
 
                        if (value != null && 
session.shouldUseExpandedParams(pMeta)) {
-                               ClassMeta cm = pMeta.getClassMeta();
                                // Transformed object array bean properties may 
be transformed resulting in ArrayLists,
                                // so we need to check type if we think it's an 
array.
-                               Iterator i = (cm.isCollection() || value 
instanceof Collection) ? ((Collection)value).iterator() : 
ArrayUtils.iterator(value);
+                               Iterator i = (cMeta.isCollection() || value 
instanceof Collection) ? ((Collection)value).iterator() : 
ArrayUtils.iterator(value);
                                while (i.hasNext()) {
                                        if (addAmp)
                                                out.cr(depth).append('&');
 
                                        out.appendObject(key, false, true, 
true).append('=');
 
-                                       super.serializeAnything(session, out, 
i.next(), pMeta.getClassMeta().getElementType(), key, pMeta, false, true);
+                                       super.serializeAnything(session, out, 
i.next(), cMeta.getElementType(), key, pMeta, false, true);
 
                                        addAmp = true;
                                }
@@ -359,7 +359,7 @@ public class UrlEncodingSerializer extends UonSerializer {
 
                                out.appendObject(key, false, true, 
true).append('=');
 
-                               super.serializeAnything(session, out, value, 
pMeta.getClassMeta(), key, pMeta, false, true);
+                               super.serializeAnything(session, out, value, 
cMeta, key, pMeta, false, true);
 
                                addAmp = true;
                        }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/daa17605/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 0dcbf0b..61b08b1 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
@@ -262,7 +262,7 @@ public class XmlSerializer extends WriterSerializer {
                                        findNsfMappings(session, o2);
                        }
                        if (bm != null) {
-                               for (BeanPropertyValue p : bm.getValues(false, 
session.isTrimNulls())) {
+                               for (BeanPropertyValue p : 
bm.getValues(session.isTrimNulls())) {
 
                                        Namespace ns = 
p.getMeta().getExtendedMeta(XmlBeanPropertyMeta.class).getNamespace();
                                        if (ns != null && ns.uri != null)
@@ -530,20 +530,22 @@ public class XmlSerializer extends WriterSerializer {
                boolean hasChildren = false;
                BeanMeta<?> bm = m.getMeta();
 
-               List<BeanPropertyValue> lp = m.getValues(false, 
session.isTrimNulls());
+               List<BeanPropertyValue> lp = m.getValues(session.isTrimNulls());
 
                Map<String,BeanPropertyMeta> xmlAttrs = 
bm.getExtendedMeta(XmlBeanMeta.class).getXmlAttrProperties();
                Object content = null;
                for (BeanPropertyValue p : lp) {
                        if (xmlAttrs.containsKey(p.getName())) {
                                BeanPropertyMeta pMeta = p.getMeta();
+                               ClassMeta<?> cMeta = p.getClassMeta();
+
                                String key = p.getName();
                                Object value = p.getValue();
                                Throwable t = p.getThrown();
                                if (t != null)
                                        session.addBeanGetterWarning(pMeta, t);
 
-                               if 
(session.canIgnoreValue(pMeta.getClassMeta(), key, value))
+                               if (session.canIgnoreValue(cMeta, key, value))
                                        continue;
 
                                Namespace ns = (session.isEnableNamespaces() && 
pMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getNamespace() != elementNs ? 
pMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getNamespace() : null);
@@ -559,6 +561,8 @@ public class XmlSerializer extends WriterSerializer {
 
                for (BeanPropertyValue p : lp) {
                        BeanPropertyMeta pMeta = p.getMeta();
+                       ClassMeta<?> cMeta = p.getClassMeta();
+
                        XmlFormat xf = 
pMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getXmlFormat();
 
                        if (xf == CONTENT) {
@@ -573,14 +577,14 @@ public class XmlSerializer extends WriterSerializer {
                                if (t != null)
                                        session.addBeanGetterWarning(pMeta, t);
 
-                               if 
(session.canIgnoreValue(pMeta.getClassMeta(), key, value))
+                               if (session.canIgnoreValue(cMeta, key, value))
                                        continue;
 
                                if (! hasChildren) {
                                        hasChildren = true;
                                        out.appendIf(! isCollapsed, '>').nl();
                                }
-                               serializeAnything(session, out, value, 
pMeta.getClassMeta(), key, 
pMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getNamespace(), false, 
pMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getXmlFormat(), pMeta);
+                               serializeAnything(session, out, value, cMeta, 
key, pMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getNamespace(), false, 
pMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getXmlFormat(), pMeta);
                        }
                }
                if ((! hasContent) || session.canIgnoreValue(string(), null, 
content))

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/daa17605/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 e6f6f28..8db2cff 100755
--- a/juneau-core/src/test/java/org/apache/juneau/BeanMapTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/BeanMapTest.java
@@ -1895,16 +1895,16 @@ public class BeanMapTest {
                Z z = new Z();
                BeanMap<Z> bm = BeanContext.DEFAULT.forBean(z);
 
-               Iterator i = bm.getValues(false, true).iterator();
+               Iterator i = bm.getValues(true).iterator();
                assertFalse(i.hasNext());
 
                z.b = "";
-               i = bm.getValues(false, true).iterator();
+               i = bm.getValues(true).iterator();
                assertTrue(i.hasNext());
                i.next();
                assertFalse(i.hasNext());
 
-               i = bm.getValues(false, false).iterator();
+               i = bm.getValues(false).iterator();
                assertTrue(i.hasNext());
                i.next();
                assertTrue(i.hasNext());

Reply via email to