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 2018/07/10 16:57:06 UTC
[juneau] branch master updated: Session init optimization.
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 35fdd18 Session init optimization.
35fdd18 is described below
commit 35fdd18c9a4f194488acaaa03e343ed6f255d95b
Author: JamesBognar <ja...@apache.org>
AuthorDate: Tue Jul 10 12:56:53 2018 -0400
Session init optimization.
---
.../juneau/transforms/LocalizedDatesTest.java | 2 +-
.../java/org/apache/juneau/xml/XmlContentTest.java | 8 ++++----
.../main/java/org/apache/juneau/BeanContext.java | 3 ++-
.../main/java/org/apache/juneau/BeanSession.java | 8 ++++----
.../java/org/apache/juneau/BeanSessionArgs.java | 22 ++++++++++++++++++++--
.../src/main/java/org/apache/juneau/Session.java | 2 +-
.../juneau/httppart/OpenApiPartSerializer.java | 12 +++++++++---
.../main/java/org/apache/juneau/parser/Parser.java | 2 +-
.../apache/juneau/parser/ParserSessionArgs.java | 7 +++++--
.../org/apache/juneau/serializer/Serializer.java | 2 +-
.../juneau/serializer/SerializerSession.java | 12 ++++++------
.../juneau/serializer/SerializerSessionArgs.java | 13 +++++++++++--
.../apache/juneau/uon/UonSerializerSession.java | 2 +-
.../org/apache/juneau/rest/jaxrs/BaseProvider.java | 4 ++--
.../apache/juneau/rest/BasicRestInfoProvider.java | 2 +-
.../java/org/apache/juneau/rest/RequestBody.java | 2 +-
.../java/org/apache/juneau/rest/RestRequest.java | 11 +++++++++++
.../juneau/rest/response/DefaultHandler.java | 2 +-
.../apache/juneau/rest/widget/MenuItemWidget.java | 2 +-
19 files changed, 83 insertions(+), 35 deletions(-)
diff --git a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/transforms/LocalizedDatesTest.java b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/transforms/LocalizedDatesTest.java
index d8a5f69..0c101c0 100644
--- a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/transforms/LocalizedDatesTest.java
+++ b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/transforms/LocalizedDatesTest.java
@@ -642,7 +642,7 @@ public class LocalizedDatesTest {
@Test
public void test() {
- BeanSession session = bc.createSession(new BeanSessionArgs(null, sessionLocale, sessionTimeZone, null));
+ BeanSession session = bc.createSession(new BeanSessionArgs(null, sessionLocale, sessionTimeZone, null, null));
String actual = session.convertToType(calendar, String.class);
String actual2 = actual;
if (expected.indexOf('(') == -1)
diff --git a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/xml/XmlContentTest.java b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/xml/XmlContentTest.java
index f3085d6..047e3e7 100755
--- a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/xml/XmlContentTest.java
+++ b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/xml/XmlContentTest.java
@@ -44,7 +44,7 @@ public class XmlContentTest {
t.f2 = null;
sw = new StringWriter();
- session = s1.createSession(new SerializerSessionArgs(null, null, null, null, null, null));
+ session = s1.createSession(new SerializerSessionArgs(null, null, null, null, null, null, null));
session.serialize(t, sw);
r = sw.toString();
assertEquals("<A f1='f1'>_x0000_</A>", r);
@@ -52,7 +52,7 @@ public class XmlContentTest {
assertEqualObjects(t, t2);
sw = new StringWriter();
- session = s2.createSession(new SerializerSessionArgs(null, null, null, null, null, null));
+ session = s2.createSession(new SerializerSessionArgs(null, null, null, null, null, null, null));
session.serialize(t, sw);
r = sw.toString();
assertEquals("<A f1='f1'>_x0000_</A>\n", r);
@@ -152,7 +152,7 @@ public class XmlContentTest {
t.f2 = null;
sw = new StringWriter();
- session = s1.createSession(new SerializerSessionArgs(null, null, null, null, null, null));
+ session = s1.createSession(new SerializerSessionArgs(null, null, null, null, null, null, null));
session.serialize(t, sw);
r = sw.toString();
assertEquals("<A f1='f1'>_x0000_</A>", r);
@@ -160,7 +160,7 @@ public class XmlContentTest {
assertEqualObjects(t, t2);
sw = new StringWriter();
- session = s2.createSession(new SerializerSessionArgs(null, null, null, null, null, null));
+ session = s2.createSession(new SerializerSessionArgs(null, null, null, null, null, null, null));
session.serialize(t, sw);
r = sw.toString();
assertEquals("<A f1='f1'>_x0000_</A>\n", r);
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
index 30a4199..b1f8e91 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
@@ -752,6 +752,7 @@ public class BeanContext extends Context {
* <ul>
* <li class='jm'>{@link BeanContextBuilder#debug(boolean)}
* <li class='jm'>{@link BeanContextBuilder#debug()}
+ * <li class='jm'>{@link BeanSessionArgs#debug(Boolean)}
* </ul>
* </ul>
*
@@ -2141,7 +2142,7 @@ public class BeanContext extends Context {
* @return A new session arguments object.
*/
public final BeanSessionArgs createDefaultBeanSessionArgs() {
- return new BeanSessionArgs(null, null, null, null);
+ return new BeanSessionArgs();
}
/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
index 69b706c..bb15230 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
@@ -58,10 +58,10 @@ public class BeanSession extends Session {
protected BeanSession(BeanContext ctx, BeanSessionArgs args) {
super(args);
this.ctx = ctx;
- locale = getProperty(BEAN_locale, Locale.class, args.locale, ctx.getLocale(), Locale.getDefault());
- timeZone = getProperty(BEAN_timeZone, TimeZone.class, args.timeZone, ctx.getTimeZone());
- debug = getProperty(BEAN_debug, boolean.class, ctx.isDebug());
- mediaType = getProperty(BEAN_mediaType, MediaType.class, args.mediaType, ctx.getMediaType());
+ locale = ObjectUtils.firstNonNull(args.locale, ctx.getLocale(), Locale.getDefault());
+ timeZone = ObjectUtils.firstNonNull(args.timeZone, ctx.getTimeZone());
+ debug = ObjectUtils.firstNonNull(args.debug, ctx.isDebug(), false);
+ mediaType = ObjectUtils.firstNonNull(args.mediaType, ctx.getMediaType());
}
@Override /* Session */
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSessionArgs.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSessionArgs.java
index f562e7a..d14a929 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSessionArgs.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSessionArgs.java
@@ -24,11 +24,12 @@ public class BeanSessionArgs extends SessionArgs {
/**
* Default empty session arguments.
*/
- public static final BeanSessionArgs DEFAULT = new BeanSessionArgs(ObjectMap.EMPTY_MAP, null, null, null);
+ public static final BeanSessionArgs DEFAULT = new BeanSessionArgs();
Locale locale;
TimeZone timeZone;
MediaType mediaType;
+ Boolean debug;
/**
* Constructor
@@ -51,12 +52,16 @@ public class BeanSessionArgs extends SessionArgs {
* @param mediaType
* The session media type (e.g. <js>"application/json"</js>).
* <br>Can be <jk>null</jk>.
+ * @param debug
+ * Enable debug mode for this session.
+ * <br>Can be <jk>null</jk> to use the debug setting on the bean context..
*/
- public BeanSessionArgs(ObjectMap properties, Locale locale, TimeZone timeZone, MediaType mediaType) {
+ public BeanSessionArgs(ObjectMap properties, Locale locale, TimeZone timeZone, MediaType mediaType, Boolean debug) {
super(properties);
this.locale = locale;
this.timeZone = timeZone;
this.mediaType = mediaType;
+ this.debug = debug;
}
/**
@@ -98,6 +103,19 @@ public class BeanSessionArgs extends SessionArgs {
return this;
}
+ /**
+ * Debug mode.
+ *
+ * @param debug
+ * Debug mode flag.
+ * <br>Can be <jk>null</jk>.
+ * @return This object (for method chaining).
+ */
+ public BeanSessionArgs debug(Boolean debug) {
+ this.debug = debug;
+ return this;
+ }
+
@Override /* SessionArgs */
public BeanSessionArgs properties(ObjectMap properties) {
super.properties(properties);
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java
index 6e34b47..783a1c9 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java
@@ -45,7 +45,7 @@ public abstract class Session {
* Runtime arguments.
*/
protected Session(SessionArgs args) {
- this.properties = args.properties;
+ this.properties = args.properties == null ? ObjectMap.EMPTY_MAP : args.properties;
}
/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/OpenApiPartSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/OpenApiPartSerializer.java
index f14c42a..6344926 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/OpenApiPartSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/OpenApiPartSerializer.java
@@ -263,7 +263,7 @@ public class OpenApiPartSerializer extends UonPartSerializer {
}
@SuppressWarnings("rawtypes")
- private ObjectMap toMap(HttpPartType partType, ClassMeta<?> type, Object o, HttpPartSchema s) throws SerializeException, SchemaValidationException {
+ private Map toMap(HttpPartType partType, ClassMeta<?> type, Object o, HttpPartSchema s) throws SerializeException, SchemaValidationException {
if (s == null)
s = DEFAULT_SCHEMA;
ObjectMap m = new ObjectMap();
@@ -279,10 +279,13 @@ public class OpenApiPartSerializer extends UonPartSerializer {
for (Map.Entry e : (Set<Map.Entry>)((Map)o).entrySet())
m.put(asString(e.getKey()), toObject(partType, e.getValue(), s.getProperty(asString(e.getKey()))));
}
+ if (isSortMaps())
+ return createSession().sort(m);
return m;
}
- private ObjectList toList(HttpPartType partType, ClassMeta<?> type, Object o, HttpPartSchema s) throws SerializeException, SchemaValidationException {
+ @SuppressWarnings("rawtypes")
+ private Collection toList(HttpPartType partType, ClassMeta<?> type, Object o, HttpPartSchema s) throws SerializeException, SchemaValidationException {
if (s == null)
s = DEFAULT_SCHEMA;
ObjectList l = new ObjectList();
@@ -296,9 +299,12 @@ public class OpenApiPartSerializer extends UonPartSerializer {
} else {
l.add(toObject(partType, o, items));
}
+ if (isSortCollections())
+ return createSession().sort(l);
return l;
}
+ @SuppressWarnings("rawtypes")
private Object toObject(HttpPartType partType, Object o, HttpPartSchema s) throws SerializeException, SchemaValidationException {
if (o == null)
return null;
@@ -321,7 +327,7 @@ public class OpenApiPartSerializer extends UonPartSerializer {
return toIsoDateTime(toType(o, CM_Calendar));
return o;
} else if (t == ARRAY) {
- ObjectList l = toList(partType, getClassMetaForObject(o), o, s);
+ Collection l = toList(partType, getClassMetaForObject(o), o, s);
if (cf == CSV)
return joine(l, ',');
if (cf == PIPES)
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
index 6c8a318..d3a4a6c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
@@ -699,7 +699,7 @@ public abstract class Parser extends BeanContext {
@Override /* Context */
public final ParserSessionArgs createDefaultSessionArgs() {
- return new ParserSessionArgs(ObjectMap.EMPTY_MAP, null, null, null, getPrimaryMediaType(), null);
+ return new ParserSessionArgs().mediaType(getPrimaryMediaType());
}
//--------------------------------------------------------------------------------
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSessionArgs.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSessionArgs.java
index 9532dab..8e3c5bb 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSessionArgs.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSessionArgs.java
@@ -50,11 +50,14 @@ public final class ParserSessionArgs extends BeanSessionArgs {
* @param mediaType
* The session media type (e.g. <js>"application/json"</js>).
* <br>Can be <jk>null</jk>.
+ * @param debug
+ * Enable debug mode for this session.
+ * <br>Can be <jk>null</jk> to use the debug setting on the bean context..
* @param outer
* The outer object for instantiating top-level non-static inner classes.
*/
- public ParserSessionArgs(ObjectMap properties, Method javaMethod, Locale locale, TimeZone timeZone, MediaType mediaType, Object outer) {
- super(properties, locale, timeZone, mediaType);
+ public ParserSessionArgs(ObjectMap properties, Method javaMethod, Locale locale, TimeZone timeZone, MediaType mediaType, Boolean debug, Object outer) {
+ super(properties, locale, timeZone, mediaType, debug);
this.javaMethod = javaMethod;
this.outer = outer;
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
index b630877..e086afa 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
@@ -959,7 +959,7 @@ public abstract class Serializer extends BeanContext {
@Override /* Context */
public final SerializerSessionArgs createDefaultSessionArgs() {
- return new SerializerSessionArgs(ObjectMap.EMPTY_MAP, null, null, null, getResponseContentType(), null);
+ return new SerializerSessionArgs().mediaType(getResponseContentType());
}
/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
index d8bc0bd..96437f2 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
@@ -83,8 +83,8 @@ public abstract class SerializerSession extends BeanSession {
super(ctx, args);
this.ctx = ctx;
this.javaMethod = args.javaMethod;
- uriResolver = new UriResolver(ctx.getUriResolution(), ctx.getUriRelativity(), args.uriContext == null ? ctx.getUriContext() : args.uriContext);
- listener = newInstance(SerializerListener.class, ctx.getListener());
+ this.uriResolver = new UriResolver(ctx.getUriResolution(), ctx.getUriRelativity(), args.uriContext == null ? ctx.getUriContext() : args.uriContext);
+ this.listener = newInstance(SerializerListener.class, ctx.getListener());
this.indent = getInitialDepth();
if (isDetectRecursions() || isDebug()) {
@@ -360,7 +360,7 @@ public abstract class SerializerSession extends BeanSession {
* @param o The input string to trim.
* @return The trimmed string, or <jk>null</jk> if the input was <jk>null</jk>.
*/
- protected final String trim(Object o) {
+ public final String trim(Object o) {
if (o == null)
return null;
String s = o.toString();
@@ -402,7 +402,7 @@ public abstract class SerializerSession extends BeanSession {
* @return <jk>true</jk> if the specified value should not be serialized.
* @throws SerializeException If recursion occurred.
*/
- protected final boolean canIgnoreValue(ClassMeta<?> cm, String attrName, Object value) throws SerializeException {
+ public final boolean canIgnoreValue(ClassMeta<?> cm, String attrName, Object value) throws SerializeException {
if (isTrimNullProperties() && value == null)
return true;
@@ -443,7 +443,7 @@ public abstract class SerializerSession extends BeanSession {
* @param m The map being sorted.
* @return A new sorted {@link TreeMap}.
*/
- protected final <K,V> Map<K,V> sort(Map<K,V> m) {
+ public final <K,V> Map<K,V> sort(Map<K,V> m) {
if (isSortMaps() && m != null && (! m.isEmpty()) && m.keySet().iterator().next() instanceof Comparable<?>)
return new TreeMap<>(m);
return m;
@@ -455,7 +455,7 @@ public abstract class SerializerSession extends BeanSession {
* @param c The collection being sorted.
* @return A new sorted {@link TreeSet}.
*/
- protected final <E> Collection<E> sort(Collection<E> c) {
+ public final <E> Collection<E> sort(Collection<E> c) {
if (isSortCollections() && c != null && (! c.isEmpty()) && c.iterator().next() instanceof Comparable<?>)
return new TreeSet<>(c);
return c;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSessionArgs.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSessionArgs.java
index 87cef6b..26a0593 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSessionArgs.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSessionArgs.java
@@ -53,12 +53,15 @@ public final class SerializerSessionArgs extends BeanSessionArgs {
* @param mediaType
* The session media type (e.g. <js>"application/json"</js>).
* <br>Can be <jk>null</jk>.
+ * @param debug
+ * Enable debug mode for this session.
+ * <br>Can be <jk>null</jk> to use the debug setting on the bean context..
* @param uriContext
* The URI context.
* <br>Identifies the current request URI used for resolution of URIs to absolute or root-relative form.
*/
- public SerializerSessionArgs(ObjectMap properties, Method javaMethod, Locale locale, TimeZone timeZone, MediaType mediaType, UriContext uriContext) {
- super(properties, locale, timeZone, mediaType);
+ public SerializerSessionArgs(ObjectMap properties, Method javaMethod, Locale locale, TimeZone timeZone, MediaType mediaType, Boolean debug, UriContext uriContext) {
+ super(properties, locale, timeZone, mediaType, debug);
this.javaMethod = javaMethod;
this.uriContext = uriContext;
}
@@ -107,6 +110,12 @@ public final class SerializerSessionArgs extends BeanSessionArgs {
return this;
}
+ @Override /* BeanSessionArgs */
+ public SerializerSessionArgs debug(Boolean debug) {
+ super.debug(debug);
+ return this;
+ }
+
@Override /* SessionArgs */
public SerializerSessionArgs properties(ObjectMap properties) {
super.properties(properties);
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerSession.java
index 1674a70..602ee9f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerSession.java
@@ -47,7 +47,7 @@ public class UonSerializerSession extends WriterSerializerSession {
public UonSerializerSession(UonSerializer ctx, Boolean encode, SerializerSessionArgs args) {
super(ctx, args);
this.ctx = ctx;
- plainTextParams = getProperty(UON_paramFormat, ParamFormat.class, ctx.getParamFormat()) == ParamFormat.PLAINTEXT;
+ plainTextParams = ctx.getParamFormat() == ParamFormat.PLAINTEXT;
}
@Override /* Session */
diff --git a/juneau-rest/juneau-rest-server-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java b/juneau-rest/juneau-rest-server-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java
index b3f220f..edf6010 100644
--- a/juneau-rest/juneau-rest-server-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java
+++ b/juneau-rest/juneau-rest-server-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java
@@ -121,7 +121,7 @@ public class BaseProvider implements MessageBodyReader<Object>, MessageBodyWrite
Locale locale = getLocale(headers);
TimeZone timeZone = getTimeZone(headers);
- SerializerSession session = s.createSession(new SerializerSessionArgs(mp, null, locale, timeZone, sm.getMediaType(), null));
+ SerializerSession session = s.createSession(new SerializerSessionArgs(mp, null, locale, timeZone, sm.getMediaType(), null, null));
// Leave this open in case an error occurs.
Closeable c = s.isWriterSerializer() ? new OutputStreamWriter(os, UTF8) : os;
@@ -149,7 +149,7 @@ public class BaseProvider implements MessageBodyReader<Object>, MessageBodyWrite
mp.put("mediaType", mediaType.toString());
Locale locale = getLocale(headers);
TimeZone timeZone = getTimeZone(headers);
- ParserSession session = p.createSession(new ParserSessionArgs(mp, null, locale, timeZone, pm.getMediaType(), null));
+ ParserSession session = p.createSession(new ParserSessionArgs(mp, null, locale, timeZone, pm.getMediaType(), null, null));
Object in2 = session.isReaderParser() ? new InputStreamReader(in, UTF8) : in;
return session.parse(in2, p.getClassMeta(gType));
} catch (ParseException e) {
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
index 86b692e..105b303 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
@@ -922,7 +922,7 @@ public class BasicRestInfoProvider implements RestInfoProvider {
if (mt != MediaType.HTML) {
Serializer s2 = sm.getSerializers().getSerializer(mt);
if (s2 != null) {
- SerializerSessionArgs args = new SerializerSessionArgs(sprops, req.getJavaMethod(), req.getLocale(), null, mt, req.getUriContext());
+ SerializerSessionArgs args = new SerializerSessionArgs(sprops, req.getJavaMethod(), req.getLocale(), null, mt, req.isDebug() ? true : null, req.getUriContext());
try {
String eVal = s2.createSession(args).serializeToString(example);
examples.put(s2.getPrimaryMediaType().toString(), eVal);
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestBody.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestBody.java
index a3f2611..fa57141 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestBody.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestBody.java
@@ -462,7 +462,7 @@ public class RequestBody {
Parser p = pm.getParser();
MediaType mediaType = pm.getMediaType();
req.getProperties().append("mediaType", mediaType).append("characterEncoding", req.getCharacterEncoding());
- ParserSession session = p.createSession(new ParserSessionArgs(req.getProperties(), req.getJavaMethod(), locale, timeZone, mediaType, req.getContext().getResource()));
+ ParserSession session = p.createSession(new ParserSessionArgs(req.getProperties(), req.getJavaMethod(), locale, timeZone, mediaType, req.isDebug() ? true : null, req.getContext().getResource()));
try (Closeable in = session.isReaderParser() ? getUnbufferedReader() : getInputStream()) {
T o = session.parse(in, cm);
if (schema != null)
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
index 7be8ced..9a75f96 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
@@ -1232,6 +1232,17 @@ public final class RestRequest extends HttpServletRequestWrapper {
}
/**
+ * Returns <jk>true</jk> if debug mode is enabled.
+ *
+ * Debug mode is enabled by simply adding <js>"?debug=true"</js> to the query string or adding a <code>Debug: true</code> header on the request.
+ *
+ * @return <jk>true</jk> if debug mode is enabled.
+ */
+ public boolean isDebug() {
+ return debug;
+ }
+
+ /**
* Request-level variable resolver session.
*
* <p>
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/response/DefaultHandler.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/response/DefaultHandler.java
index 5344c10..ae76234 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/response/DefaultHandler.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/response/DefaultHandler.java
@@ -69,7 +69,7 @@ public class DefaultHandler implements ResponseHandler {
}
p.append("mediaType", mediaType).append("characterEncoding", res.getCharacterEncoding());
- SerializerSession session = s.createSession(new SerializerSessionArgs(p, req.getJavaMethod(), req.getLocale(), req.getHeaders().getTimeZone(), mediaType, req.getUriContext()));
+ SerializerSession session = s.createSession(new SerializerSessionArgs(p, req.getJavaMethod(), req.getLocale(), req.getHeaders().getTimeZone(), mediaType, req.isDebug() ? true : null, req.getUriContext()));
for (Map.Entry<String,String> h : session.getResponseHeaders().entrySet())
res.setHeader(h.getKey(), h.getValue());
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/widget/MenuItemWidget.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/widget/MenuItemWidget.java
index 06f9e72..d6b5f41 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/widget/MenuItemWidget.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/widget/MenuItemWidget.java
@@ -95,7 +95,7 @@ public abstract class MenuItemWidget extends Widget {
} else if (o instanceof CharSequence) {
sb.append((CharSequence)o);
} else {
- SerializerSessionArgs args = new SerializerSessionArgs(req.getProperties(), null, req.getLocale(), null, null, req.getUriContext());
+ SerializerSessionArgs args = new SerializerSessionArgs(req.getProperties(), null, req.getLocale(), null, null, req.isDebug() ? true : null, req.getUriContext());
WriterSerializerSession session = HtmlSerializer.DEFAULT.createSession(args);
session.indent = 2;
session.serialize(o, sb);