URIs

As mention earlier {@doc juneau-marshall.URIs here}, Juneau serializers have sophisticated support for transforming relative URIs to absolute form.

The following example shows a REST method that returns a list of URIs of various forms:

@RestResource( uriAuthority="http://foo.com:123", uriContext="/myContext" ) public class MyResource { @RestMethod public URI[] getURIs() { return new URI[] { URI. create("http://www.apache.org/f1a"), URI. create("/f1b"), URI. create("/f1c/x/y"), URI. create("f1d"), URI. create("f1e/x/y"), URI. create(""), URI. create("context:/f2a/x"), URI. create("context:/f2b"), URI. create("context:/"), URI. create("context:/.."), URI. create("servlet:/f3a/x"), URI. create("servlet:/f3b"), URI. create("servlet:/"), URI. create("servlet:/.."), URI. create("request:/f4a/x"), URI. create("request:/f4b"), URI. create("request:/"), URI. create("request:/..") }; } }

When requested as JSON, it produces the following result:

{ f1a:'http://www.apache.org/f1a', f1b:'http://foo.com:123/f1b', f1c:'http://foo.com:123/f1c/x/y', f1d:'http://foo.com:123/myContext/myServlet/f1d', f1e:'http://foo.com:123/myContext/myServlet/f1e/x/y', f1f:'http://foo.com:123/myContext/myServlet', f2a:'http://foo.com:123/myContext/f2a/x', f2b:'http://foo.com:123/myContext/f2b', f2c:'http://foo.com:123/myContext', f2d:'http://foo.com:123', f3a:'http://foo.com:123/myContext/myServlet/f3a/x', f3b:'http://foo.com:123/myContext/myServlet/f3b', f3c:'http://foo.com:123/myContext/myServlet', f3d:'http://foo.com:123/myContext', f4a:'http://foo.com:123/myContext/myServlet/myPath/f4a/x', f4b:'http://foo.com:123/myContext/myServlet/myPath/f4b', f4c:'http://foo.com:123/myContext/myServlet/myPath', f4d:'http://foo.com:123/myContext/myServlet' }

URI resolution is controlled by the following settings:

- {@link oajr.RestContext}
  - {@link oajr.RestContext#REST_uriAuthority REST_uriAuthority}
  - {@link oajr.RestContext#REST_uriContext REST_uriContext}
  - {@link oajr.RestContext#REST_uriRelativity REST_uriRelativity}
  - {@link oajr.RestContext#REST_uriResolution REST_uriResolution}

URIs are resolved by both regular and part serializers.