You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2016/08/31 16:01:09 UTC
incubator-juneau git commit: Ongoing work for lexicon support.
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 <ja...@gmail.com>
Authored: Tue Aug 30 16:11:57 2016 -0400
Committer: jamesbognar <ja...@gmail.com>
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 (james.bognar@salesforce.com)
- */
-@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());