This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new 0db2085 Support serialized POJOs inside HTML5 beans.
0db2085 is described below
commit 0db2085a83c234fae050c0c8ecfd2778fa546bca
Author: JamesBognar <[email protected]>
AuthorDate: Sun Mar 18 12:23:00 2018 -0400
Support serialized POJOs inside HTML5 beans.
---
.../apache/juneau/html/HtmlSerializerSession.java | 66 ++++++++++------------
.../apache/juneau/xml/XmlSerializerSession.java | 3 +-
2 files changed, 31 insertions(+), 38 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
index fea125a..a64efc8 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
@@ -13,7 +13,7 @@
package org.apache.juneau.html;
import static org.apache.juneau.html.HtmlSerializer.*;
-import static org.apache.juneau.html.HtmlSerializerSession.ContentResult.*;
+import static org.apache.juneau.xml.XmlSerializerSession.ContentResult.*;
import static org.apache.juneau.internal.StringUtils.*;
import java.io.*;
@@ -206,10 +206,10 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
* @throws IOException If a problem occurred trying to send output to
the writer.
*/
private XmlWriter doSerialize(Object o, XmlWriter w) throws Exception {
- serializeAnything(w, o, getExpectedRootType(o), null,
getInitialDepth()-1, null, true);
+ serializeAnything(w, o, getExpectedRootType(o), null, null,
getInitialDepth()-1, true);
return w;
}
-
+
/**
* Serialize the specified object to the specified writer.
*
@@ -219,15 +219,15 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
* @param name
* The attribute name of this object if this object was a field in
a JSON object (i.e. key of a
* {@link java.util.Map.Entry} or property name of a bean).
- * @param xIndent The current indentation value.
* @param pMeta The bean property being serialized, or <jk>null</jk> if
we're not serializing a bean property.
+ * @param xIndent The current indentation value.
* @param isRoot <jk>true</jk> if this is the root element of the
document.
* @return The type of content encountered. Either simple (no
whitespace) or normal (elements with whitespace).
* @throws Exception If a problem occurred trying to convert the output.
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
protected ContentResult serializeAnything(XmlWriter out, Object o,
- ClassMeta<?> eType, String name, int xIndent,
BeanPropertyMeta pMeta, boolean isRoot) throws Exception {
+ ClassMeta<?> eType, String name, BeanPropertyMeta
pMeta, int xIndent, boolean isRoot) throws Exception {
ClassMeta<?> aType = null; // The actual type
ClassMeta<?> wType = null; // The wrapped type (delegate)
@@ -246,12 +246,12 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
indent += xIndent;
- ContentResult cr = CR_NORMAL;
+ ContentResult cr = CR_ELEMENTS;
// Determine the type.
if (o == null || (aType.isChar() && ((Character)o).charValue()
== 0)) {
out.tag("null");
- cr = ContentResult.CR_SIMPLE;
+ cr = ContentResult.CR_MIXED;
} else {
@@ -283,7 +283,7 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
pop();
indent -= xIndent;
IOUtils.pipe(o, out);
- return ContentResult.CR_SIMPLE;
+ return ContentResult.CR_MIXED;
}
HtmlClassMeta html =
sType.getExtendedMeta(HtmlClassMeta.class);
@@ -297,7 +297,7 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
indent -= xIndent;
pop();
out.nl(indent);
- return serializeAnything(out, o2, null,
typeName, xIndent, null, false);
+ return serializeAnything(out, o2, null,
typeName, null, xIndent, false);
}
}
@@ -310,25 +310,25 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
} else if (html.isAsPlainText() || (pMeta != null &&
pMeta.getExtendedMeta(HtmlBeanPropertyMeta.class).isAsPlainText())) {
out.write(o == null ? "null" : o.toString());
- cr = CR_SIMPLE;
+ cr = CR_MIXED;
} else if (o == null || (sType.isChar() &&
((Character)o).charValue() == 0)) {
out.tag("null");
- cr = CR_SIMPLE;
+ cr = CR_MIXED;
} else if (sType.isNumber()) {
if (eType.isNumber() && ! isRoot)
out.append(o);
else
out.sTag("number").append(o).eTag("number");
- cr = CR_SIMPLE;
+ cr = CR_MIXED;
} else if (sType.isBoolean()) {
if (eType.isBoolean() && ! isRoot)
out.append(o);
else
out.sTag("boolean").append(o).eTag("boolean");
- cr = CR_SIMPLE;
+ cr = CR_MIXED;
} else if (sType.isMap() || (wType != null &&
wType.isMap())) {
out.nlIf(! isRoot, xIndent+1);
@@ -345,7 +345,7 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
Object urlProp =
m.get(h.hrefProperty());
Object nameProp =
m.get(h.nameProperty());
out.oTag("a").attrUri("href",
urlProp).append('>').text(nameProp).eTag("a");
- cr = CR_SIMPLE;
+ cr = CR_MIXED;
} else {
out.nlIf(! isRoot, xIndent+2);
serializeBeanMap(out, m, eType, pMeta);
@@ -360,14 +360,14 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
out.oTag("a").attrUri("href", o).append('>');
out.text(label);
out.eTag("a");
- cr = CR_SIMPLE;
+ cr = CR_MIXED;
} else {
if (isRoot)
out.sTag("string").text(toString(o)).eTag("string");
else
out.text(toString(o));
- cr = CR_SIMPLE;
+ cr = CR_MIXED;
}
}
pop();
@@ -375,14 +375,6 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
return cr;
}
- /**
- * Identifies what the contents were of a serialized bean.
- */
- static enum ContentResult {
- CR_SIMPLE, // Simple content. Shouldn't use whitespace.
- CR_NORMAL // Normal content. Use whitespace.
- }
-
@SuppressWarnings({ "rawtypes" })
private void serializeMap(XmlWriter out, Map m, ClassMeta<?> sType,
ClassMeta<?> eKeyType, ClassMeta<?> eValueType, String
typeName, BeanPropertyMeta ppMeta) throws Exception {
@@ -428,15 +420,15 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
out.cTag();
if (link != null)
out.oTag(i+3, "a").attrUri("href",
link.replace("{#}", asString(value))).cTag();
- ContentResult cr = serializeAnything(out, key, keyType,
null, 2, null, false);
+ ContentResult cr = serializeAnything(out, key, keyType,
null, null, 2, false);
if (link != null)
out.eTag("a");
- if (cr == CR_NORMAL)
+ if (cr == CR_ELEMENTS)
out.i(i+2);
out.eTag("td").nl(i+2);
out.sTag(i+2, "td");
- cr = serializeAnything(out, value, valueType, (key ==
null ? "_x0000_" : toString(key)), 2, null, false);
- if (cr == CR_NORMAL)
+ cr = serializeAnything(out, value, valueType, (key ==
null ? "_x0000_" : toString(key)), null, 2, false);
+ if (cr == CR_ELEMENTS)
out.ie(i+2);
out.eTag("td").nl(i+2);
out.ie(i+1).eTag("tr").nl(i+1);
@@ -496,8 +488,8 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
try {
if (link != null)
out.oTag(i+3, "a").attrUri("href",
link).cTag();
- ContentResult cr = serializeAnything(out,
value, cMeta, key, 2, pMeta, false);
- if (cr == CR_NORMAL)
+ ContentResult cr = serializeAnything(out,
value, cMeta, key, pMeta, 2, false);
+ if (cr == CR_ELEMENTS)
out.i(i+2);
if (link != null)
out.eTag("a");
@@ -578,7 +570,7 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
if (cm == null) {
out.i(i+2);
- serializeAnything(out, o, null, null,
1, null, false);
+ serializeAnything(out, o, null, null,
null, 1, false);
out.nl(0);
} else if (cm.isMap() && ! (cm.isBeanMap())) {
@@ -586,8 +578,8 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
for (Object k : th) {
out.sTag(i+2, "td");
- ContentResult cr =
serializeAnything(out, m2.get(k), eType.getElementType(), toString(k), 2, null,
false);
- if (cr == CR_NORMAL)
+ ContentResult cr =
serializeAnything(out, m2.get(k), eType.getElementType(), toString(k), null, 2,
false);
+ if (cr == CR_ELEMENTS)
out.i(i+2);
out.eTag("td").nl(i+2);
}
@@ -620,8 +612,8 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
out.cTag();
if (link != null)
out.oTag("a").attrUri("href", link).cTag();
- ContentResult cr =
serializeAnything(out, value, pMeta.getClassMeta(), p.getKey().toString(), 2,
pMeta, false);
- if (cr == CR_NORMAL)
+ ContentResult cr =
serializeAnything(out, value, pMeta.getClassMeta(), p.getKey().toString(),
pMeta, 2, false);
+ if (cr == CR_ELEMENTS)
out.i(i+2);
if (link != null)
out.eTag("a");
@@ -647,10 +639,10 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
out.cTag();
if (link != null)
out.oTag(i+2, "a").attrUri("href",
link.replace("{#}", asString(o))).cTag();
- ContentResult cr = serializeAnything(out, o,
eType.getElementType(), name, 1, null, false);
+ ContentResult cr = serializeAnything(out, o,
eType.getElementType(), name, null, 1, false);
if (link != null)
out.eTag("a");
- if (cr == CR_NORMAL)
+ if (cr == CR_ELEMENTS)
out.ie(i+1);
out.eTag("li").nl(i+1);
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java
index 516f03c..6a17dd3 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java
@@ -736,7 +736,8 @@ public class XmlSerializerSession extends
WriterSerializerSession {
/**
* Identifies what the contents were of a serialized bean.
*/
- static enum ContentResult {
+ @SuppressWarnings("javadoc")
+ public static enum ContentResult {
CR_VOID, // No content...append "/>" to the start tag.
CR_EMPTY, // No content...append "/>" to the start tag if
XML, "/></end>" if HTML.
CR_MIXED, // Mixed content...don't add whitespace.
--
To stop receiving notification emails like this one, please contact
[email protected].