Repository: incubator-juneau
Updated Branches:
  refs/heads/master 257776b98 -> 7239f3e34


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7239f3e3/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 aeb5fc2..71179fd 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
@@ -267,7 +267,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
                        this.defaultNs = defaultNs;
                        this.targetNs = targetNs;
                        this.session = session;
-                       w = new XmlWriter(sw, session.isUseWhitespace(), 
session.isTrimStrings(), session.getQuoteChar(), null, true, null);
+                       w = new XmlWriter(sw, session.isUseWhitespace(), 
session.getMaxIndent(), session.isTrimStrings(), session.getQuoteChar(), null, 
true, null);
                        int i = session.getIndent();
                        w.oTag(i, "schema");
                        w.attr("xmlns", xs.getUri());
@@ -277,13 +277,13 @@ public class XmlSchemaSerializer extends XmlSerializer {
                                w.attr("attributeFormDefault", "qualified");
                        for (Namespace ns2 : allNs)
                                w.attr("xmlns", ns2.name, ns2.uri);
-                       w.append('>').nl();
+                       w.append('>').nl(i);
                        for (Namespace ns : allNs) {
                                if (ns != targetNs) {
                                        w.oTag(i+1, "import")
                                                .attr("namespace", ns.getUri())
                                                .attr("schemaLocation", 
ns.getName()+".xsd")
-                                               .append("/>").nl();
+                                               .append("/>").nl(i+1);
                                }
                        }
                }
@@ -303,7 +303,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
                        w.oTag(i, "element")
                                .attr("name", XmlUtils.encodeElementName(name))
                                .attr("type", type)
-                               .append('/').append('>').nl();
+                               .append('/').append('>').nl(i);
 
                        schemas.queueType(ns, null, ft);
                        schemas.processQueue();
@@ -321,7 +321,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
                        w.oTag(i, "attribute")
                                .attr("name", name)
                                .attr("type", type)
-                               .append('/').append('>').nl();
+                               .append('/').append('>').nl(i);
 
                        return true;
                }
@@ -345,10 +345,10 @@ public class XmlSchemaSerializer extends XmlSerializer {
                        if ((xbm != null && (xbm.getContentFormat() != null && 
xbm.getContentFormat().isOneOf(TEXT,TEXT_PWS,MIXED,MIXED_PWS,XMLTEXT))) || ! 
cm.isMapOrBean())
                                w.attr("mixed", "true");
 
-                       w.cTag().nl();
+                       w.cTag().nl(i);
 
                        if (! (cm.isMapOrBean() || cm.isCollectionOrArray() || 
(cm.isAbstract() && ! cm.isNumber()) || cm.isObject())) {
-                               w.oTag(i+1, "attribute").attr("name", 
session.getBeanTypePropertyName(cm)).attr("type", "string").ceTag().nl();
+                               w.oTag(i+1, "attribute").attr("name", 
session.getBeanTypePropertyName(cm)).attr("type", "string").ceTag().nl(i+1);
 
                        } else {
 
@@ -366,12 +366,12 @@ public class XmlSchemaSerializer extends XmlSerializer {
 
                                        XmlBeanMeta xbm2 = 
bm.getExtendedMeta(XmlBeanMeta.class);
                                        if (xbm2.getContentProperty() != null 
&& xbm2.getContentFormat() == ELEMENTS) {
-                                               w.sTag(i+1, "sequence").nl();
+                                               w.sTag(i+1, "sequence").nl(i+1);
                                                w.oTag(i+2, "any")
                                                        
.attr("processContents", "skip")
                                                        .attr("minOccurs", 0)
-                                                       .ceTag().nl();
-                                               w.eTag(i+1, "sequence").nl();
+                                                       .ceTag().nl(i+2);
+                                               w.eTag(i+1, "sequence").nl(i+1);
 
                                        } else if (hasChildElements) {
 
@@ -396,15 +396,15 @@ public class XmlSchemaSerializer extends XmlSerializer {
                                                if (hasOtherNsElement || 
hasCollapsed) {
                                                        // If this bean has any 
child elements in another namespace,
                                                        // we need to add an 
<any> element.
-                                                       w.oTag(i+1, 
"choice").attr("maxOccurs", "unbounded").cTag().nl();
+                                                       w.oTag(i+1, 
"choice").attr("maxOccurs", "unbounded").cTag().nl(i+1);
                                                        w.oTag(i+2, "any")
                                                                
.attr("processContents", "skip")
                                                                
.attr("minOccurs", 0)
-                                                               .ceTag().nl();
-                                                       w.eTag(i+1, 
"choice").nl();
+                                                               
.ceTag().nl(i+2);
+                                                       w.eTag(i+1, 
"choice").nl(i+1);
 
                                                } else {
-                                                       w.sTag(i+1, "all").nl();
+                                                       w.sTag(i+1, 
"all").nl(i+1);
                                                        for (BeanPropertyMeta 
pMeta : bm.getPropertyMetas()) {
                                                                
XmlBeanPropertyMeta xmlMeta = pMeta.getExtendedMeta(XmlBeanPropertyMeta.class);
                                                                if 
(xmlMeta.getXmlFormat() != ATTR) {
@@ -423,7 +423,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
                                                                                
        .attr("type", getXmlType(cNs, ct2))
                                                                                
        .attr("minOccurs", 0);
 
-                                                                               
w.ceTag().nl();
+                                                                               
w.ceTag().nl(i+2);
                                                                        } else {
                                                                                
// Child element is in another namespace.
                                                                                
schemas.queueElement(cNs, pMeta.getName(), ct2);
@@ -432,7 +432,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
 
                                                                }
                                                        }
-                                                       w.eTag(i+1, "all").nl();
+                                                       w.eTag(i+1, 
"all").nl(i+1);
                                                }
 
                                        }
@@ -447,9 +447,9 @@ public class XmlSchemaSerializer extends XmlSerializer {
                                                if (pNs != targetNs) {
                                                        
schemas.queueAttribute(pNs, pMeta.getName(), pMeta.getClassMeta());
                                                        w.oTag(i+1, "attribute")
-                                                       //.attr("name", 
pMeta.getName(), true)
-                                                       .attr("ref", 
pNs.getName() + ':' + pMeta.getName())
-                                                       .ceTag().nl();
+                                                               //.attr("name", 
pMeta.getName(), true)
+                                                               .attr("ref", 
pNs.getName() + ':' + pMeta.getName())
+                                                               
.ceTag().nl(i+1);
                                                }
 
                                                // Otherwise, it's just a plain 
attribute of this bean.
@@ -457,7 +457,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
                                                        w.oTag(i+1, "attribute")
                                                                .attr("name", 
pMeta.getName(), true)
                                                                .attr("type", 
getXmlAttrType(pMeta.getClassMeta()))
-                                                               .ceTag().nl();
+                                                               
.ceTag().nl(i+1);
                                                }
                                        }
 
@@ -465,43 +465,43 @@ public class XmlSchemaSerializer extends XmlSerializer {
                                } else if (cm.isCollectionOrArray()) {
                                        ClassMeta<?> elementType = 
cm.getElementType();
                                        if (elementType.isObject()) {
-                                               w.sTag(i+1, "sequence").nl();
+                                               w.sTag(i+1, "sequence").nl(i+1);
                                                w.oTag(i+2, "any")
                                                        
.attr("processContents", "skip")
                                                        .attr("maxOccurs", 
"unbounded")
                                                        .attr("minOccurs", "0")
-                                                       .ceTag().nl();
-                                               w.eTag(i+1, "sequence").nl();
+                                                       .ceTag().nl(i+2);
+                                               w.eTag(i+1, "sequence").nl(i+1);
                                        } else {
                                                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.sTag(i+1, "sequence").nl(i+1);
                                                w.oTag(i+2, "any")
                                                        
.attr("processContents", "skip")
                                                        .attr("maxOccurs", 
"unbounded")
                                                        .attr("minOccurs", "0")
-                                                       .ceTag().nl();
-                                               w.eTag(i+1, "sequence").nl();
+                                                       .ceTag().nl(i+2);
+                                               w.eTag(i+1, "sequence").nl(i+1);
                                        }
 
                                //----- Map -----
                                } else if (cm.isMap() || cm.isAbstract() || 
cm.isObject()) {
-                                       w.sTag(i+1, "sequence").nl();
+                                       w.sTag(i+1, "sequence").nl(i+1);
                                        w.oTag(i+2, "any")
                                                .attr("processContents", "skip")
                                                .attr("maxOccurs", "unbounded")
                                                .attr("minOccurs", "0")
-                                               .ceTag().nl();
-                                       w.eTag(i+1, "sequence").nl();
+                                               .ceTag().nl(i+2);
+                                       w.eTag(i+1, "sequence").nl(i+1);
                                }
 
                                w.oTag(i+1, "attribute")
                                        .attr("name", 
session.getBeanTypePropertyName(null))
                                        .attr("type", "string")
-                                       .ceTag().nl();
+                                       .ceTag().nl(i+1);
                        }
 
-                       w.eTag(i, "complexType").nl();
+                       w.eTag(i, "complexType").nl(i);
                        schemas.processQueue();
 
                        return true;
@@ -529,7 +529,8 @@ public class XmlSchemaSerializer extends XmlSerializer {
                @Override /* Object */
                public String toString() {
                        try {
-                               w.eTag(session.getIndent(), "schema").nl();
+                               int i = session.getIndent();
+                               w.eTag(i, "schema").nl(i);
                        } catch (IOException e) {
                                throw new RuntimeException(e); // Shouldn't 
happen.
                        }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7239f3e3/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 84c86aa..73fdf7e 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
@@ -512,7 +512,7 @@ public class XmlSerializer extends WriterSerializer {
                                out.append('>');
 
                        if (cr && ! (sType.isMapOrBean()))
-                               out.nl();
+                               out.nl(indent+1);
                }
 
                ContentResult rc = CR_ELEMENTS;
@@ -568,9 +568,9 @@ public class XmlSerializer extends WriterSerializer {
                                out.append('/').append('>');
                        }
                        else
-                               out.i(cr && rc != CR_MIXED ? indent : 
0).eTag(elementNs, en, encodeEn);
+                               out.ie(cr && rc != CR_MIXED ? indent : 
0).eTag(elementNs, en, encodeEn);
                        if (! isMixed)
-                               out.nl();
+                               out.nl(indent);
                }
 
                return out;
@@ -600,7 +600,7 @@ public class XmlSerializer extends WriterSerializer {
 
                        if (! hasChildren) {
                                hasChildren = true;
-                               out.append('>').nlIf(! isMixed);
+                               out.append('>').nlIf(! isMixed, 
session.getIndent());
                        }
                        serializeAnything(session, out, value, valueType, 
session.toString(k), null, false, XmlFormat.DEFAULT, isMixed, false, null);
                }
@@ -704,7 +704,7 @@ public class XmlSerializer extends WriterSerializer {
 
                                if (! hasChildren) {
                                        hasChildren = true;
-                                       out.appendIf(! isCollapsed, '>').nlIf(! 
isMixed);
+                                       out.appendIf(! isCollapsed, '>').nlIf(! 
isMixed, session.getIndent());
                                }
 
                                XmlBeanPropertyMeta xbpm = 
pMeta.getExtendedMeta(XmlBeanPropertyMeta.class);
@@ -713,7 +713,7 @@ public class XmlSerializer extends WriterSerializer {
                }
                if (! hasContent)
                        return (hasChildren ? CR_ELEMENTS : isVoidElement ? 
CR_VOID : CR_EMPTY);
-               out.append('>').nlIf(! isMixed);
+               out.append('>').nlIf(! isMixed, session.getIndent());
 
                // Serialize XML content.
                if (content != null) {
@@ -739,7 +739,7 @@ public class XmlSerializer extends WriterSerializer {
                                        out.i(session.indent);
                                out.text(content);
                                if (! isMixed)
-                                       out.nl();
+                                       out.nl(session.indent);
                        }
                }
                return isMixed ? CR_MIXED : CR_ELEMENTS;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7239f3e3/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java 
b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
index a4db76c..bcf450f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
@@ -273,6 +273,12 @@ public class XmlSerializerBuilder extends 
SerializerBuilder {
        }
 
        @Override /* SerializerBuilder */
+       public XmlSerializerBuilder maxIndent(int value) {
+               super.maxIndent(value);
+               return this;
+       }
+
+       @Override /* SerializerBuilder */
        public XmlSerializerBuilder addBeanTypeProperties(boolean value) {
                super.addBeanTypeProperties(value);
                return this;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7239f3e3/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java 
b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java
index 5ee1962..ca67989 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java
@@ -201,6 +201,6 @@ public class XmlSerializerSession extends SerializerSession 
{
                Object output = getOutput();
                if (output instanceof XmlWriter)
                        return (XmlWriter)output;
-               return new XmlWriter(super.getWriter(), isUseWhitespace(), 
isTrimStrings(), getQuoteChar(), getUriResolver(), isEnableNamespaces(), 
getDefaultNamespace());
+               return new XmlWriter(super.getWriter(), isUseWhitespace(), 
getMaxIndent(), isTrimStrings(), getQuoteChar(), getUriResolver(), 
isEnableNamespaces(), getDefaultNamespace());
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7239f3e3/juneau-core/src/main/java/org/apache/juneau/xml/XmlWriter.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlWriter.java 
b/juneau-core/src/main/java/org/apache/juneau/xml/XmlWriter.java
index 3166b98..21d1d2a 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlWriter.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlWriter.java
@@ -37,14 +37,15 @@ public class XmlWriter extends SerializerWriter {
         *
         * @param out The wrapped writer.
         * @param useWhitespace If <jk>true</jk> XML elements will be indented.
+        * @param maxIndent The maximum indentation level.
         * @param trimStrings If <jk>true</jk>, strings should be trimmed 
before they're serialized.
         * @param quoteChar The quote character to use for attributes.  Should 
be <js>'\''</js> or <js>'"'</js>.
         * @param uriResolver The URI resolver for resolving URIs to absolute 
or root-relative form.
         * @param enableNs Flag to indicate if XML namespaces are enabled.
         * @param defaultNamespace The default namespace if XML namespaces are 
enabled.
         */
-       public XmlWriter(Writer out, boolean useWhitespace, boolean 
trimStrings, char quoteChar, UriResolver uriResolver, boolean enableNs, 
Namespace defaultNamespace) {
-               super(out, useWhitespace, trimStrings, quoteChar, uriResolver);
+       public XmlWriter(Writer out, boolean useWhitespace, int maxIndent, 
boolean trimStrings, char quoteChar, UriResolver uriResolver, boolean enableNs, 
Namespace defaultNamespace) {
+               super(out, useWhitespace, maxIndent, trimStrings, quoteChar, 
uriResolver);
                this.enableNs = enableNs;
                this.defaultNsPrefix = defaultNamespace == null ? null : 
defaultNamespace.name;
        }
@@ -570,6 +571,12 @@ public class XmlWriter extends SerializerWriter {
        }
 
        @Override /* SerializerWriter */
+       public XmlWriter cre(int depth) throws IOException {
+               super.cre(depth);
+               return this;
+       }
+
+       @Override /* SerializerWriter */
        public XmlWriter appendln(int indent, String text) throws IOException {
                super.appendln(indent, text);
                return this;
@@ -612,8 +619,14 @@ public class XmlWriter extends SerializerWriter {
        }
 
        @Override /* SerializerWriter */
-       public XmlWriter nl() throws IOException {
-               super.nl();
+       public XmlWriter ie(int indent) throws IOException {
+               super.ie(indent);
+               return this;
+       }
+
+       @Override /* SerializerWriter */
+       public XmlWriter nl(int indent) throws IOException {
+               super.nl(indent);
                return this;
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7239f3e3/juneau-core/src/main/javadoc/overview.html
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/javadoc/overview.html 
b/juneau-core/src/main/javadoc/overview.html
index 81a3f33..460915d 100644
--- a/juneau-core/src/main/javadoc/overview.html
+++ b/juneau-core/src/main/javadoc/overview.html
@@ -6263,6 +6263,7 @@
                                                <li>{@link 
org.apache.juneau.serializer.SerializerContext#SERIALIZER_uriContext}
                                                <li>{@link 
org.apache.juneau.serializer.SerializerContext#SERIALIZER_uriRelativity}
                                                <li>{@link 
org.apache.juneau.serializer.SerializerContext#SERIALIZER_uriResolution}
+                                               <li>{@link 
org.apache.juneau.serializer.SerializerContext#SERIALIZER_maxIndent}
                                </ul>
                        <li>New annotation property: {@link 
org.apache.juneau.annotation.BeanProperty#value()}.
                                <br>The following two annotations are 
considered equivalent:

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7239f3e3/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
----------------------------------------------------------------------
diff --git 
a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
 
b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
index 23b31bf..fd2b66a 100644
--- 
a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
+++ 
b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
@@ -913,6 +913,17 @@ public class RestClientBuilder extends CoreObjectBuilder {
        }
 
        /**
+        * Sets the {@link SerializerContext#SERIALIZER_maxIndent} property on 
all serializers in this group.
+        *
+        * @param value The new value for this property.
+        * @return This object (for method chaining).
+        * @see SerializerContext#SERIALIZER_maxIndent
+        */
+       public RestClientBuilder maxIndent(boolean value) {
+               return property(SERIALIZER_maxIndent, value);
+       }
+
+       /**
         * Sets the {@link SerializerContext#SERIALIZER_addBeanTypeProperties} 
property on all serializers in this group.
         *
         * @param value The new value for this property.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7239f3e3/juneau-rest/src/main/java/org/apache/juneau/rest/RestRequest.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/RestRequest.java 
b/juneau-rest/src/main/java/org/apache/juneau/rest/RestRequest.java
index b4ef754..755109f 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/RestRequest.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/RestRequest.java
@@ -201,6 +201,18 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
                return "HTTP " + getMethod() + " " + getRequestURI() + (qs == 
null ? "" : "?" + qs);
        }
 
+       /**
+        * Same as {@link #getAttribute(String)} but returns a default value if 
not found.
+        *
+        * @param name The request attribute name.
+        * @param def The default value if the attribute doesn't exist.
+        * @return The request attribute value.
+        */
+       public Object getAttribute(String name, Object def) {
+               Object o = super.getAttribute(name);
+               return (o == null ? def : o);
+       }
+
 
        
//--------------------------------------------------------------------------------
        // Properties

Reply via email to