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 48e1811 PropertyStore refactoring.
48e1811 is described below
commit 48e1811474e096d001459c22ff3d9e62d9ea857d
Author: JamesBognar <[email protected]>
AuthorDate: Sun Feb 7 21:07:18 2021 -0500
PropertyStore refactoring.
---
.../apache/juneau/dto/swagger/ui/SwaggerUI.java | 3 +-
.../apache/juneau/jena/RdfSerializerSession.java | 7 +-
.../src/main/java/org/apache/juneau/Session.java | 170 +------------------
.../java/org/apache/juneau/SessionProperties.java | 181 +++++++++++++++++++++
.../juneau/html/HtmlDocSerializerSession.java | 25 +--
.../org/apache/juneau/parser/ParserSession.java | 4 +-
.../apache/juneau/parser/ReaderParserSession.java | 6 +-
.../juneau/serializer/SerializerSession.java | 3 +-
.../juneau/serializer/WriterSerializerSession.java | 8 +-
.../juneau/soap/SoapXmlSerializerSession.java | 4 +-
.../org/apache/juneau/uon/UonParserSession.java | 3 +-
.../apache/juneau/xml/XmlSerializerSession.java | 5 +-
.../org/apache/juneau/rest/client/RestRequest.java | 5 -
.../juneau/rest/client/RestResponseBody.java | 2 +-
.../test/java/org/apache/juneau/rest/Nls_Test.java | 2 +-
.../juneau/rest/annotation/RestHook_Test.java | 12 +-
.../juneau/rest/annotation/Rest_RVars_Test.java | 5 +-
17 files changed, 244 insertions(+), 201 deletions(-)
diff --git
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java
index c29ce57..e4dba85 100644
---
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java
+++
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java
@@ -93,7 +93,8 @@ public class SwaggerUI extends PojoSwap<Swagger,Div> {
Session(BeanSession bs, Swagger swagger) {
this.swagger = swagger.copy();
- this.resolveRefsMaxDepth =
bs.getProperty(SWAGGERUI_resolveRefsMaxDepth, Integer.class, 1);
+ SessionProperties sp = bs.getSessionProperties();
+ this.resolveRefsMaxDepth =
sp.getInteger(SWAGGERUI_resolveRefsMaxDepth).orElse(1);
}
}
diff --git
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
index 886de83..503f987 100644
---
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
+++
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
@@ -60,7 +60,8 @@ public final class RdfSerializerSession extends
WriterSerializerSession {
super(ctx, args);
this.ctx = ctx;
- namespaces = getInstanceArrayProperty(RDF_namespaces,
Namespace.class, ctx.namespaces);
+ SessionProperties sp = getSessionProperties();
+ namespaces = sp.getInstanceArray(RDF_namespaces,
Namespace.class).orElse(ctx.namespaces);
model = ModelFactory.createDefaultModel();
addModelPrefix(ctx.getJuneauNs());
addModelPrefix(ctx.getJuneauBpNs());
@@ -85,9 +86,9 @@ public final class RdfSerializerSession extends
WriterSerializerSession {
if (e.getKey().startsWith(propPrefix, 5))
writer.setProperty(e.getKey().substring(5 +
propPrefix.length()), e.getValue());
- for (String k : getPropertyKeys())
+ for (String k : sp.keySet())
if (k.startsWith("RdfCommon.jena.") &&
k.startsWith(propPrefix, 15))
- writer.setProperty(k.substring(15 +
propPrefix.length()), getProperty(k));
+ writer.setProperty(k.substring(15 +
propPrefix.length()), sp.get(k).orElse(null));
}
/*
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 dc1c58b..8b5b3ea 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
@@ -13,19 +13,15 @@
package org.apache.juneau;
import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.ClassUtils.*;
import static org.apache.juneau.Context.*;
-import java.lang.reflect.*;
import java.text.*;
import java.time.*;
import java.util.*;
import org.apache.juneau.collections.*;
import org.apache.juneau.http.*;
-import org.apache.juneau.internal.*;
import org.apache.juneau.json.*;
-import org.apache.juneau.reflect.*;
/**
* A one-time-use non-thread-safe object that's meant to be used once and then
thrown away.
@@ -36,7 +32,7 @@ import org.apache.juneau.reflect.*;
*/
public abstract class Session {
- private final OMap properties;
+ private final SessionProperties properties;
private Map<String,Object> cache;
private List<String> warnings; // Any warnings
encountered.
@@ -56,152 +52,23 @@ public abstract class Session {
*/
protected Session(Context ctx, SessionArgs args) {
this.ctx = ctx;
- this.properties = args.properties == null ? OMap.EMPTY_MAP :
args.properties;
- debug = getProperty(CONTEXT_debug, Boolean.class,
ctx.isDebug());
- locale = getProperty(CONTEXT_locale, Locale.class,
ctx.getDefaultLocale());
- timeZone = getProperty(CONTEXT_timeZone, TimeZone.class,
ctx.getDefaultTimeZone());
- mediaType = getProperty(CONTEXT_mediaType, MediaType.class,
ctx.getDefaultMediaType());
+ SessionProperties sp = this.properties = new
SessionProperties(args.properties == null ? OMap.EMPTY_MAP : args.properties);
+ debug = sp.get(CONTEXT_debug,
Boolean.class).orElse(ctx.isDebug());
+ locale = sp.get(CONTEXT_locale,
Locale.class).orElse(ctx.getDefaultLocale());
+ timeZone = sp.get(CONTEXT_timeZone,
TimeZone.class).orElse(ctx.getDefaultTimeZone());
+ mediaType = sp.get(CONTEXT_mediaType,
MediaType.class).orElse(ctx.getDefaultMediaType());
}
/**
- * Returns <jk>true</jk> if this session has the specified property
defined.
+ * Returns the session properties on this session.
*
- * @param key The property key.
- * @return <jk>true</jk> if this session has the specified property
defined.
+ * @return The session properties on this session. Never <jk>null</jk>.
*/
- public final boolean hasProperty(String key) {
- return properties != null && properties.containsKey(key);
- }
-
- /**
- * Returns the session property with the specified key.
- *
- * <p>
- * The returned type is the raw value of the property.
- *
- * @param key The property key.
- * @return The session property, or <jk>null</jk> if the property does
not exist.
- */
- public final Object getProperty(String key) {
- if (properties == null)
- return null;
- return properties.get(key);
- }
-
- /**
- * Returns the session property with the specified key and type.
- *
- * @param key The property key.
- * @param type The type to convert the property to.
- * @param def The default value if the session property does not exist
or is <jk>null</jk>.
- * @return The session property.
- */
- @SuppressWarnings("unchecked")
- public final <T> T getProperty(String key, Class<T> type, T def) {
- if (properties == null)
- return def;
- Object o = properties.get(key);
- if (o == null)
- return def;
- type = (Class<T>)ClassInfo.of(type).getWrapperIfPrimitive();
- T t = properties.get(key, type);
- return t == null ? def : t;
- }
-
- /**
- * Same as {@link #getProperty(String, Class, Object)} but allows for
more than one default value.
- *
- * @param key The property key.
- * @param type The type to convert the property to.
- * @param def
- * The default values if the session property does not exist or is
<jk>null</jk>.
- * The first non-null value is returned.
- * @return The session property.
- */
- @SafeVarargs
- public final <T> T getProperty(String key, Class<T> type, T...def) {
- return getProperty(key, type, ObjectUtils.firstNonNull(def));
- }
-
- /**
- * Returns the session class property with the specified name.
- *
- * @param key The property name.
- * @param type The class type of the property.
- * @param def The default value.
- * @return The property value, or the default value if it doesn't exist.
- */
- @SuppressWarnings("unchecked")
- public final <T> Class<? extends T> getClassProperty(String key,
Class<T> type, Class<? extends T> def) {
- return getProperty(key, Class.class, def);
- }
-
- /**
- * Returns an instantiation of the specified class property.
- *
- * @param key The property name.
- * @param type The class type of the property.
- * @param def
- * The default instance or class to instantiate if the property
doesn't exist.
- * @return A new property instance.
- */
- public <T> T getInstanceProperty(String key, Class<T> type, Object def)
{
- return newInstance(type, getProperty(key), def);
- }
-
- /**
- * Returns the specified property as an array of instantiated objects.
- *
- * @param key The property name.
- * @param type The class type of the property.
- * @param def The default object to return if the property doesn't
exist.
- * @return A new property instance.
- */
- @SuppressWarnings("unchecked")
- public <T> T[] getInstanceArrayProperty(String key, Class<T> type, T[]
def) {
- Object o = getProperty(key);
- T[] t = null;
- if (o == null)
- t = def;
- else if (o.getClass().isArray()) {
- if (o.getClass().getComponentType() == type)
- t = (T[])o;
- else {
- t = (T[])Array.newInstance(type,
Array.getLength(o));
- for (int i = 0; i < Array.getLength(o); i++)
- t[i] = newInstance(type, Array.get(o,
i), null);
- }
- } else if (o instanceof Collection) {
- Collection<?> c = (Collection<?>)o;
- t = (T[])Array.newInstance(type, c.size());
- int i = 0;
- for (Object o2 : c)
- t[i++] = newInstance(type, o2, null);
- }
- if (t != null)
- return t;
- throw new ConfigException("Could not instantiate property
''{0}'' as type {1}", key, type);
- }
-
- /**
- * Returns the session properties.
- *
- * @return The session properties passed in through the constructor.
- */
- protected OMap getProperties() {
+ public final SessionProperties getSessionProperties() {
return properties;
}
/**
- * Returns the session property keys.
- *
- * @return The session property keys passed in through the constructor.
- */
- public Set<String> getPropertyKeys() {
- return properties.keySet();
- }
-
- /**
* Returns the context that created this session.
*
* @return The context that created this session.
@@ -210,25 +77,6 @@ public abstract class Session {
return ctx;
}
- @SuppressWarnings("unchecked")
- private <T> T newInstance(Class<T> type, Object o, Object def) {
- T t = null;
- if (o == null) {
- if (def == null)
- return null;
- t = castOrCreate(type, def);
- }
- else if (type.isInstance(o))
- t = (T)o;
- else if (o.getClass() == Class.class)
- t = castOrCreate(type, o);
- else if (o.getClass() == String.class)
- t = ClassUtils.fromString(type, o.toString());
- if (t != null)
- return t;
- throw new ConfigException("Could not instantiate type ''{0}''
as type {1}", o, type);
- }
-
/**
* Adds an arbitrary object to this session's cache.
*
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionProperties.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionProperties.java
new file mode 100644
index 0000000..2a8860c
--- /dev/null
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionProperties.java
@@ -0,0 +1,181 @@
+//
***************************************************************************************************************************
+// * 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;
+
+import static org.apache.juneau.internal.ClassUtils.*;
+
+import java.lang.reflect.*;
+import java.util.*;
+
+import org.apache.juneau.collections.*;
+import org.apache.juneau.internal.*;
+
+/**
+ * Contains the configurable properties for a single context session.
+ */
+public class SessionProperties {
+
+ private final OMap map;
+
+ /**
+ * Constructor.
+ *
+ * @param map The map containing the properties for this session.
+ */
+ public SessionProperties(OMap map) {
+ this.map = map;
+ }
+
+ /**
+ * Returns <jk>true</jk> if this session has the specified property
defined.
+ *
+ * @param key The property key.
+ * @return <jk>true</jk> if this session has the specified property
defined.
+ */
+ public final boolean contains(String key) {
+ return map != null && map.containsKey(key);
+ }
+
+ /**
+ * Returns the property with the specified name.
+ *
+ * @param key The property name.
+ * @return The property value. Never <jk>null</jk>.
+ */
+ public final Optional<Object> get(String key) {
+ return Optional.ofNullable(map == null ? null : map.get(key));
+ }
+
+ /**
+ * Returns the session property with the specified key and type.
+ *
+ * @param key The property key.
+ * @param type The type to convert the property to.
+ * @return The session property.
+ */
+ public final <T> Optional<T> get(String key, Class<T> type) {
+ return Optional.ofNullable(find(key, type));
+ }
+
+ /**
+ * Shortcut for calling <code>get(key, String.<jk>class</jk>)</code>.
+ *
+ * @param key The property name.
+ * @return The property value, never <jk>null</jk>.
+ */
+ public final Optional<String> getString(String key) {
+ return Optional.ofNullable(find(key, String.class));
+ }
+
+ /**
+ * Shortcut for calling <code>get(key, Boolean.<jk>class</jk>)</code>.
+ *
+ * @param key The property name.
+ * @return The property value, never <jk>null</jk>.
+ */
+ public final Optional<Boolean> getBoolean(String key) {
+ return Optional.ofNullable(find(key, Boolean.class));
+ }
+
+ /**
+ * Shortcut for calling <code>get(key, Integer.<jk>class</jk>)</code>.
+ *
+ * @param key The property name.
+ * @return The property value, never <jk>null</jk>.
+ */
+ public final Optional<Integer> getInteger(String key) {
+ return Optional.ofNullable(find(key, Integer.class));
+ }
+
+ /**
+ * Returns the session property as the specified instance type with the
specified key.
+ *
+ * @param key The property key.
+ * @param type The type to convert the property to.
+ * @return The session property.
+ */
+ public <T> Optional<T> getInstance(String key, Class<T> type) {
+ Object o = map == null ? null : map.get(key);
+ return Optional.ofNullable(newInstance(type, o));
+ }
+
+ /**
+ * Returns the specified property as an array of instantiated objects.
+ *
+ * @param key The property name.
+ * @param type The class type of the property.
+ * @return A new property instance.
+ */
+ @SuppressWarnings("unchecked")
+ public <T> Optional<T[]> getInstanceArray(String key, Class<T> type) {
+ Object o = map == null ? null : map.get(key);
+ T[] t = null;
+ if (o == null)
+ return Optional.empty();
+ else if (o.getClass().isArray()) {
+ if (o.getClass().getComponentType() == type)
+ t = (T[])o;
+ else {
+ t = (T[])Array.newInstance(type,
Array.getLength(o));
+ for (int i = 0; i < Array.getLength(o); i++)
+ t[i] = newInstance(type, Array.get(o,
i));
+ }
+ } else if (o instanceof Collection) {
+ Collection<?> c = (Collection<?>)o;
+ t = (T[])Array.newInstance(type, c.size());
+ int i = 0;
+ for (Object o2 : c)
+ t[i++] = newInstance(type, o2);
+ }
+ return Optional.ofNullable(t);
+ }
+
+ /**
+ * Returns all the keys in these properties.
+ *
+ * @return All the keys in these properties.
+ */
+ public Set<String> keySet() {
+ return map == null ? Collections.emptySet() : map.keySet();
+ }
+
+ /**
+ * Returns the contents of this session as an unmodifiable map.
+ *
+ * @return The contents of this session as an unmodifiable map.
+ */
+ public Map<String,Object> asMap() {
+ return Collections.unmodifiableMap(map);
+ }
+
+ private <T> T find(String key, Class<T> c) {
+ Object o = map == null ? null : map.get(key);
+ return newInstance(c, o);
+ }
+
+ @SuppressWarnings("unchecked")
+ private <T> T newInstance(Class<T> type, Object o) {
+ T t = null;
+ if (o == null)
+ return null;
+ else if (type.isInstance(o))
+ t = (T)o;
+ else if (o.getClass() == Class.class)
+ t = castOrCreate(type, o);
+ else if (o.getClass() == String.class)
+ t = ClassUtils.fromString(type, o.toString());
+ if (t != null)
+ return t;
+ throw new ConfigException("Could not instantiate type ''{0}''
as type {1}", o, type);
+ }
+}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
index 7403416..719202f 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
@@ -17,6 +17,7 @@ import static org.apache.juneau.html.HtmlDocSerializer.*;
import java.io.IOException;
import java.util.*;
+import org.apache.juneau.*;
import org.apache.juneau.collections.*;
import org.apache.juneau.serializer.*;
import org.apache.juneau.svl.*;
@@ -53,20 +54,22 @@ public class HtmlDocSerializerSession extends
HtmlStrippedDocSerializerSession {
super(ctx, args);
this.ctx = ctx;
- header = getProperty(HTMLDOC_header, String[].class,
ctx.getHeader());
- nav = getProperty(HTMLDOC_nav, String[].class, ctx.getNav());
- aside = getProperty(HTMLDOC_aside, String[].class,
ctx.getAside());
- asideFloat = getProperty(HTMLDOC_asideFloat, AsideFloat.class,
ctx.getAsideFloat());
- footer = getProperty(HTMLDOC_footer, String[].class,
ctx.getFooter());
- navlinks = getProperty(HTMLDOC_navlinks, String[].class,
ctx.getNavlinks());
+ SessionProperties sp = getSessionProperties();
+
+ header = sp.get(HTMLDOC_header,
String[].class).orElse(ctx.getHeader());
+ nav = sp.get(HTMLDOC_nav, String[].class).orElse(ctx.getNav());
+ aside = sp.get(HTMLDOC_aside,
String[].class).orElse(ctx.getAside());
+ asideFloat = sp.get(HTMLDOC_asideFloat,
AsideFloat.class).orElse(ctx.getAsideFloat());
+ footer = sp.get(HTMLDOC_footer,
String[].class).orElse(ctx.getFooter());
+ navlinks = sp.get(HTMLDOC_navlinks,
String[].class).orElse(ctx.getNavlinks());
// These can contain dups after variable resolution, so de-dup
them with hashsets.
- style = ASet.of(getProperty(HTMLDOC_style, String[].class,
ctx.getStyle()));
- stylesheet = ASet.of(getProperty(HTMLDOC_stylesheet,
String[].class, ctx.getStylesheet()));
- script = ASet.of(getProperty(HTMLDOC_script, String[].class,
ctx.getScript()));
+ style = ASet.of(sp.get(HTMLDOC_style,
String[].class).orElse(ctx.getStyle()));
+ stylesheet = ASet.of(sp.get(HTMLDOC_stylesheet,
String[].class).orElse(ctx.getStylesheet()));
+ script = ASet.of(sp.get(HTMLDOC_script,
String[].class).orElse(ctx.getScript()));
- head = getProperty(HTMLDOC_head, String[].class, ctx.getHead());
- nowrap = getProperty(HTMLDOC_nowrap, boolean.class,
ctx.isNowrap());
+ head = sp.get(HTMLDOC_head,
String[].class).orElse(ctx.getHead());
+ nowrap = sp.get(HTMLDOC_nowrap,
boolean.class).orElse(ctx.isNowrap());
addVarBean(HtmlWidgetMap.class, ctx.getWidgets());
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
index 744ef40..0c47735 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
@@ -22,6 +22,7 @@ import java.util.*;
import org.apache.juneau.*;
import org.apache.juneau.annotation.*;
import org.apache.juneau.collections.*;
+import org.apache.juneau.internal.*;
import org.apache.juneau.transform.*;
import org.apache.juneau.utils.*;
@@ -60,9 +61,10 @@ public abstract class ParserSession extends BeanSession {
super(ctx, args == null ? ParserSessionArgs.DEFAULT : args);
args = args == null ? ParserSessionArgs.DEFAULT : args;
this.ctx = ctx;
+ SessionProperties sp = getSessionProperties();
javaMethod = args.javaMethod;
outer = args.outer;
- listener = getInstanceProperty(PARSER_listener,
ParserListener.class, ctx.getListener());
+ listener = sp.getInstance(PARSER_listener,
ParserListener.class).orElseGet(()->ClassUtils.castOrCreate(ParserListener.class,
ctx.getListener()));
}
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserSession.java
index d8b1a6d..adc86bb 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserSession.java
@@ -18,6 +18,7 @@ import static org.apache.juneau.parser.ReaderParser.*;
import java.io.*;
import java.nio.charset.*;
+import org.apache.juneau.*;
import org.apache.juneau.collections.*;
/**
@@ -43,8 +44,9 @@ public abstract class ReaderParserSession extends
ParserSession {
protected ReaderParserSession(ReaderParser ctx, ParserSessionArgs args)
{
super(ctx, args);
this.ctx = ctx;
- this.fileCharset = getProperty(RPARSER_fileCharset,
Charset.class, ctx.getFileCharset());
- this.streamCharset = getProperty(RPARSER_streamCharset,
Charset.class, ctx.getStreamCharset());
+ SessionProperties sp = getSessionProperties();
+ this.fileCharset = sp.get(RPARSER_fileCharset,
Charset.class).orElse(ctx.getFileCharset());
+ this.streamCharset = sp.get(RPARSER_streamCharset,
Charset.class).orElse(ctx.getStreamCharset());
}
/**
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 3068572..2a6d88f 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
@@ -77,8 +77,9 @@ public abstract class SerializerSession extends
BeanTraverseSession {
super(ctx, args == null ? SerializerSessionArgs.DEFAULT : args);
this.ctx = ctx;
args = args == null ? SerializerSessionArgs.DEFAULT : args;
+ SessionProperties sp = getSessionProperties();
this.javaMethod = args.javaMethod;
- this.uriResolver = UriResolver.of(ctx.getUriResolution(),
ctx.getUriRelativity(), getProperty(SERIALIZER_uriContext, UriContext.class,
ctx.getUriContext()));
+ this.uriResolver = UriResolver.of(ctx.getUriResolution(),
ctx.getUriRelativity(), sp.get(SERIALIZER_uriContext,
UriContext.class).orElse(ctx.getUriContext()));
this.listener = castOrCreate(SerializerListener.class,
ctx.getListener());
this.vrs = args.resolver;
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerSession.java
index 5e8a170..6578f2c 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerSession.java
@@ -17,6 +17,7 @@ import static org.apache.juneau.serializer.WriterSerializer.*;
import java.io.*;
import java.nio.charset.*;
+import org.apache.juneau.*;
import org.apache.juneau.collections.*;
/**
@@ -56,9 +57,10 @@ public abstract class WriterSerializerSession extends
SerializerSession {
protected WriterSerializerSession(WriterSerializer ctx,
SerializerSessionArgs args) {
super(ctx, args);
this.ctx = ctx;
- this.streamCharset = getProperty(WSERIALIZER_streamCharset,
Charset.class, ctx.getStreamCharset());
- this.fileCharset = getProperty(WSERIALIZER_fileCharset,
Charset.class, ctx.getFileCharset());
- this.useWhitespace = getProperty(WSERIALIZER_useWhitespace,
Boolean.class, ctx.isUseWhitespace());
+ SessionProperties sp = getSessionProperties();
+ this.streamCharset = sp.get(WSERIALIZER_streamCharset,
Charset.class).orElse(ctx.getStreamCharset());
+ this.fileCharset = sp.get(WSERIALIZER_fileCharset,
Charset.class).orElse(ctx.getFileCharset());
+ this.useWhitespace =
sp.getBoolean(WSERIALIZER_useWhitespace).orElse(ctx.isUseWhitespace());
}
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerSession.java
index 3783f25..aab17cc 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerSession.java
@@ -17,6 +17,7 @@ import static org.apache.juneau.soap.SoapXmlSerializer.*;
import java.io.IOException;
import java.util.*;
+import org.apache.juneau.*;
import org.apache.juneau.collections.*;
import org.apache.juneau.serializer.*;
import org.apache.juneau.xml.*;
@@ -47,7 +48,8 @@ public class SoapXmlSerializerSession extends
XmlSerializerSession {
public SoapXmlSerializerSession(SoapXmlSerializer ctx,
SerializerSessionArgs args) {
super(ctx, args);
- soapAction = getProperty(SOAPXML_SOAPAction, String.class,
ctx.soapAction);
+ SessionProperties sp = getSessionProperties();
+ soapAction = sp.get(SOAPXML_SOAPAction,
String.class).orElse(ctx.soapAction);
}
//-----------------------------------------------------------------------------------------------------------------
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
index 6167730..5112ddb 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
@@ -56,7 +56,8 @@ public class UonParserSession extends ReaderParserSession
implements HttpPartPar
protected UonParserSession(UonParser ctx, ParserSessionArgs args) {
super(ctx, args);
this.ctx = ctx;
- decoding = getProperty(UON_decoding, boolean.class,
ctx.isDecoding());
+ SessionProperties sp = getSessionProperties();
+ decoding = sp.get(UON_decoding,
boolean.class).orElse(ctx.isDecoding());
}
/**
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 1b489df..5bde3dc 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
@@ -59,8 +59,9 @@ public class XmlSerializerSession extends
WriterSerializerSession {
protected XmlSerializerSession(XmlSerializer ctx, SerializerSessionArgs
args) {
super(ctx, args);
this.ctx = ctx;
- namespaces = getInstanceArrayProperty(XML_namespaces,
Namespace.class, ctx.getNamespaces());
- defaultNamespace =
findDefaultNamespace(getInstanceProperty(XML_defaultNamespace, Namespace.class,
ctx.getDefaultNamespace()));
+ SessionProperties sp = getSessionProperties();
+ namespaces = sp.getInstanceArray(XML_namespaces,
Namespace.class).orElse(ctx.getNamespaces());
+ defaultNamespace =
findDefaultNamespace(sp.getInstance(XML_defaultNamespace,
Namespace.class).orElse(ctx.getDefaultNamespace()));
}
private Namespace findDefaultNamespace(Namespace n) {
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
index c8bf15c..9ca6ec2 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
@@ -3415,11 +3415,6 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
return def;
}
- @Override
- public OMap getProperties() {
- return super.getProperties();
- }
-
@SuppressWarnings("unchecked")
private static Map<Object,Object> toMap(Object o) {
return (Map<Object,Object>)o;
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponseBody.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponseBody.java
index b7b6ac2..6c83177 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponseBody.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponseBody.java
@@ -788,7 +788,7 @@ public class RestResponseBody implements HttpEntity {
ParserSessionArgs pArgs =
ParserSessionArgs
.create()
- .properties(new
OMap().inner(request.getProperties()))
+ .properties(new
OMap().inner(request.getSessionProperties().asMap()))
.locale(response.getLocale())
.mediaType(mt)
.schema(schema);
diff --git a/juneau-utest/src/test/java/org/apache/juneau/rest/Nls_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/rest/Nls_Test.java
index e72b458..438ee3d 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/rest/Nls_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/rest/Nls_Test.java
@@ -57,7 +57,7 @@ public class Nls_Test {
return new WriterSerializerSession(args) {
@Override /* SerializerSession */
protected void doSerialize(SerializerPipe out,
Object o) throws IOException, SerializeException {
-
out.getWriter().write(getProperty("TestProperty", String.class));
+
out.getWriter().write(getSessionProperties().getString("TestProperty").orElse(null));
}
};
}
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestHook_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestHook_Test.java
index 27fa79e..39b8dd4 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestHook_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestHook_Test.java
@@ -92,7 +92,8 @@ public class RestHook_Test {
@Override /* ParserSession */
@SuppressWarnings("unchecked")
protected <T> T doParse(ParserPipe pipe,
ClassMeta<T> type) throws IOException, ParseException, ExecutableException {
- return (T)("p1="+getProperty("p1",
String.class)+",p2="+getProperty("p2", String.class)+",p3="+getProperty("p3",
String.class)+",p4="+getProperty("p4", String.class)+",p5="+getProperty("p5",
String.class));
+ SessionProperties sp =
getSessionProperties();
+ return
(T)("p1="+sp.get("p1").orElse(null)+",p2="+sp.get("p2").orElse(null)+",p3="+sp.get("p3").orElse(null)+",p4="+sp.get("p4").orElse(null)+",p5="+sp.get("p5").orElse(null));
}
};
}
@@ -167,13 +168,14 @@ public class RestHook_Test {
return new WriterSerializerSession(args) {
@Override /* SerializerSession */
protected void doSerialize(SerializerPipe out,
Object o) throws IOException, SerializeException {
-
out.getWriter().write("p1="+getProperty("p1",
String.class)+",p2="+getProperty("p2", String.class)+",p3="+getProperty("p3",
String.class)+",p4="+getProperty("p4", String.class)+",p5="+getProperty("p5",
String.class));
+ SessionProperties sp =
getSessionProperties();
+
out.getWriter().write("p1="+sp.get("p1").orElse(null)+",p2="+sp.get("p2").orElse(null)+",p3="+sp.get("p3").orElse(null)+",p4="+sp.get("p4").orElse(null)+",p5="+sp.get("p5").orElse(null));
}
@Override /* SerializerSession */
public Map<String,String> getResponseHeaders() {
- OMap p = getProperties();
- if
(p.containsKey("Override-Content-Type"))
- return
AMap.of("Content-Type",p.getString("Override-Content-Type"));
+ SessionProperties sp =
getSessionProperties();
+ if
(sp.contains("Override-Content-Type"))
+ return
AMap.of("Content-Type",sp.getString("Override-Content-Type").orElse(null));
return Collections.emptyMap();
}
};
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Rest_RVars_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Rest_RVars_Test.java
index 1abf5c2..75bfab0 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Rest_RVars_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Rest_RVars_Test.java
@@ -70,9 +70,10 @@ public class Rest_RVars_Test {
return new WriterSerializerSession(args) {
@Override /* SerializerSession */
protected void
doSerialize(SerializerPipe out, Object o) throws IOException,
SerializeException {
+ SessionProperties sp =
getSessionProperties();
out.getWriter().write(format("A1=%s,A2=%s,B1=%s,B2=%s,C=%s,R1a=%s,R1b=%s,R2=%s,R3=%s,R4=%s,R5=%s,R6=%s",
- getProperty("A1"),
getProperty("A2"), getProperty("B1"), getProperty("B2"), getProperty("C"),
- getProperty("R1a"),
getProperty("R1b"), getProperty("R2"), getProperty("R3"), getProperty("R4"),
getProperty("R5"), getProperty("R6")));
+
sp.get("A1").orElse(null), sp.get("A2").orElse(null),
sp.get("B1").orElse(null), sp.get("B2").orElse(null), sp.get("C").orElse(null),
+
sp.get("R1a").orElse(null), sp.get("R1b").orElse(null),
sp.get("R2").orElse(null), sp.get("R3").orElse(null),
sp.get("R4").orElse(null), sp.get("R5").orElse(null),
sp.get("R6").orElse(null)));
}
};
}