Repository: incubator-juneau Updated Branches: refs/heads/master f2fafd3ef -> 3e04f73b9
UriContext support. Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/3e04f73b Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/3e04f73b Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/3e04f73b Branch: refs/heads/master Commit: 3e04f73b96817710e08c4b62422ec0a251024afd Parents: f2fafd3 Author: JamesBognar <[email protected]> Authored: Fri May 26 09:37:26 2017 -0400 Committer: JamesBognar <[email protected]> Committed: Fri May 26 09:37:26 2017 -0400 ---------------------------------------------------------------------- .../main/java/org/apache/juneau/UriContext.java | 11 +++++++ .../juneau/serializer/SerializerContext.java | 31 ++++++++++++++------ .../juneau/serializer/SerializerSession.java | 8 +---- 3 files changed, 34 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3e04f73b/juneau-core/src/main/java/org/apache/juneau/UriContext.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/UriContext.java b/juneau-core/src/main/java/org/apache/juneau/UriContext.java index 35e7678..2756111 100644 --- a/juneau-core/src/main/java/org/apache/juneau/UriContext.java +++ b/juneau-core/src/main/java/org/apache/juneau/UriContext.java @@ -18,6 +18,8 @@ import static org.apache.juneau.UriRelativity.*; import java.io.*; +import org.apache.juneau.annotation.*; + /** * Represents a URL broken into authority/context-root/servlet-path/path-info parts. * <p> @@ -49,8 +51,16 @@ import java.io.*; * * The following class shows how */ +@Bean public class UriContext { + /** + * Default URI context. + * No URI resolution occurs. + * No information about authority, servlet-root, context-root, or path-info is known. + */ + public static final UriContext DEFAULT = new UriContext(UriResolution.NONE, UriRelativity.PATH_INFO, null, null, null, null); + private final String authority, contextRoot, servletPath, pathInfo, parentPath; private final UriResolution resolution; @@ -74,6 +84,7 @@ public class UriContext { * @param servletPath - The servlet path (e.g. <js>"/servlet-path"</js>, or <js>"servlet-path"</js>) * @param pathInfo - The path info (e.g. <js>"/path-info"</js>, or <js>"path-info"</js>) */ + @BeanConstructor(properties="resolution,relativity,authority,contextRoot,servletPath,pathInfo") public UriContext(UriResolution resolution, UriRelativity relativity, String authority, String contextRoot, String servletPath, String pathInfo) { this.resolution = resolution; this.relativity = relativity; http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3e04f73b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerContext.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerContext.java b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerContext.java index 31dc2e8..fd890f9 100644 --- a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerContext.java +++ b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerContext.java @@ -286,9 +286,25 @@ public class SerializerContext extends BeanContext { */ public static final String SERIALIZER_absolutePathUriBase = "Serializer.absolutePathUriBase"; - public static final String SERIALIZER_uriResolution = "Serializer.uriResolution"; - - public static final String SERIALIZER_uriRelativity = "Serializer.uriRelativity"; + /** + * <b>Configuration property:</b> URI context bean. + * <p> + * <ul> + * <li><b>Name:</b> <js>"Serializer.uriContext"</js> + * <li><b>Data type:</b> {@link UriContext} + * <li><b>Default:</b> {@link UriContext#DEFAULT} + * <li><b>Session-overridable:</b> <jk>true</jk> + * </ul> + * <p> + * Bean used for resolution of URIs to absolute or root-relative form. + * <p> + * For example, to define a URI context that causes relative URIs to be converted to root-relative form and + * assumes relative URIs are relative to the servlet path: + * <p class='bcode'> + * <js>"{resolution:'ROOT_RELATIVE',relativity:'RESOURCE',contextRoot:'/myContext',servletPath:'/myServlet'}"</js> + * </p> + */ + public static final String SERIALIZER_uriContext = "Serializer.uriContext"; /** * <b>Configuration property:</b> Sort arrays and collections alphabetically. @@ -353,8 +369,7 @@ public class SerializerContext extends BeanContext { abridged; final char quoteChar; final String relativeUriBase, absolutePathUriBase; - final UriResolution uriResolution; - final UriRelativity uriRelativity; + final UriContext uriContext; /** * Constructor. @@ -379,8 +394,7 @@ public class SerializerContext extends BeanContext { quoteChar = ps.getProperty(SERIALIZER_quoteChar, String.class, "\"").charAt(0); relativeUriBase = resolveRelativeUriBase(ps.getProperty(SERIALIZER_relativeUriBase, String.class, "")); absolutePathUriBase = resolveAbsolutePathUriBase(ps.getProperty(SERIALIZER_absolutePathUriBase, String.class, "")); - uriResolution = ps.getProperty(SERIALIZER_uriResolution, UriResolution.class, UriResolution.ROOT_RELATIVE); - uriRelativity = ps.getProperty(SERIALIZER_uriRelativity, UriRelativity.class, UriRelativity.RESOURCE); + uriContext = ps.getProperty(SERIALIZER_uriContext, UriContext.class, UriContext.DEFAULT); } private static String resolveRelativeUriBase(String s) { @@ -421,8 +435,7 @@ public class SerializerContext extends BeanContext { .append("quoteChar", quoteChar) .append("relativeUriBase", relativeUriBase) .append("absolutePathUriBase", absolutePathUriBase) - .append("uriResolution", uriResolution) - .append("uriRelativity", uriRelativity) + .append("uriContext", uriContext) ); } } http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3e04f73b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerSession.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerSession.java b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerSession.java index dd563c9..d89203b 100644 --- a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerSession.java +++ b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerSession.java @@ -102,8 +102,7 @@ public class SerializerSession extends BeanSession { super(ctx, op, locale, timeZone, mediaType); this.javaMethod = javaMethod; this.output = output; - UriResolution uriResolution = null; - UriRelativity uriRelativity = null; + this.uriContext = (uriContext != null ? uriContext : ctx.uriContext); if (op == null || op.isEmpty()) { maxDepth = ctx.maxDepth; initialDepth = ctx.initialDepth; @@ -121,8 +120,6 @@ public class SerializerSession extends BeanSession { sortCollections = ctx.sortCollections; sortMaps = ctx.sortMaps; abridged = ctx.abridged; - uriResolution = ctx.uriResolution; - uriRelativity = ctx.uriRelativity; } else { maxDepth = op.getInt(SERIALIZER_maxDepth, ctx.maxDepth); initialDepth = op.getInt(SERIALIZER_initialDepth, ctx.initialDepth); @@ -140,10 +137,7 @@ public class SerializerSession extends BeanSession { sortCollections = op.getBoolean(SERIALIZER_sortCollections, ctx.sortMaps); sortMaps = op.getBoolean(SERIALIZER_sortMaps, ctx.sortMaps); abridged = op.getBoolean(SERIALIZER_abridged, ctx.abridged); - uriResolution = op.get(UriResolution.class, SERIALIZER_uriResolution, ctx.uriResolution); - uriRelativity = op.get(UriRelativity.class, SERIALIZER_uriRelativity, ctx.uriRelativity); } - this.uriContext = uriContext != null ? uriContext : new UriContext(uriResolution, uriRelativity, null, null, null, null); this.indent = initialDepth; if (detectRecursions || isDebug()) {
