http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/37ddf434/content/site/apidocs/src-html/org/apache/juneau/rest/client/RestClient.html ---------------------------------------------------------------------- diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/client/RestClient.html b/content/site/apidocs/src-html/org/apache/juneau/rest/client/RestClient.html index b6e3b37..9cfb398 100644 --- a/content/site/apidocs/src-html/org/apache/juneau/rest/client/RestClient.html +++ b/content/site/apidocs/src-html/org/apache/juneau/rest/client/RestClient.html @@ -545,94 +545,99 @@ <span class="sourceLineNo">537</span> RestCall rc = (httpMethod.equals("POST") ? doPost(url) : doGet(url));<a name="line.537"></a> <span class="sourceLineNo">538</span> rc.serializer(serializer).parser(parser);<a name="line.538"></a> <span class="sourceLineNo">539</span><a name="line.539"></a> -<span class="sourceLineNo">540</span> for (RemoteMethodArg a : rmm.getQueryArgs())<a name="line.540"></a> -<span class="sourceLineNo">541</span> rc.query(a.name, args[a.index], a.skipIfNE);<a name="line.541"></a> +<span class="sourceLineNo">540</span> for (RemoteMethodArg a : rmm.getPathArgs())<a name="line.540"></a> +<span class="sourceLineNo">541</span> rc.path(a.name, args[a.index]);<a name="line.541"></a> <span class="sourceLineNo">542</span><a name="line.542"></a> -<span class="sourceLineNo">543</span> for (RemoteMethodArg a : rmm.getFormDataArgs())<a name="line.543"></a> -<span class="sourceLineNo">544</span> rc.formData(a.name, args[a.index], a.skipIfNE);<a name="line.544"></a> +<span class="sourceLineNo">543</span> for (RemoteMethodArg a : rmm.getQueryArgs())<a name="line.543"></a> +<span class="sourceLineNo">544</span> rc.query(a.name, args[a.index], a.skipIfNE);<a name="line.544"></a> <span class="sourceLineNo">545</span><a name="line.545"></a> -<span class="sourceLineNo">546</span> for (RemoteMethodArg a : rmm.getHeaderArgs())<a name="line.546"></a> -<span class="sourceLineNo">547</span> rc.header(a.name, args[a.index], a.skipIfNE);<a name="line.547"></a> +<span class="sourceLineNo">546</span> for (RemoteMethodArg a : rmm.getFormDataArgs())<a name="line.546"></a> +<span class="sourceLineNo">547</span> rc.formData(a.name, args[a.index], a.skipIfNE);<a name="line.547"></a> <span class="sourceLineNo">548</span><a name="line.548"></a> -<span class="sourceLineNo">549</span> if (rmm.getBodyArg() != null)<a name="line.549"></a> -<span class="sourceLineNo">550</span> rc.input(args[rmm.getBodyArg()]);<a name="line.550"></a> +<span class="sourceLineNo">549</span> for (RemoteMethodArg a : rmm.getHeaderArgs())<a name="line.549"></a> +<span class="sourceLineNo">550</span> rc.header(a.name, args[a.index], a.skipIfNE);<a name="line.550"></a> <span class="sourceLineNo">551</span><a name="line.551"></a> -<span class="sourceLineNo">552</span> if (rmm.getOtherArgs().length > 0) {<a name="line.552"></a> -<span class="sourceLineNo">553</span> Object[] otherArgs = new Object[rmm.getOtherArgs().length];<a name="line.553"></a> -<span class="sourceLineNo">554</span> int i = 0;<a name="line.554"></a> -<span class="sourceLineNo">555</span> for (Integer otherArg : rmm.getOtherArgs())<a name="line.555"></a> -<span class="sourceLineNo">556</span> otherArgs[i++] = args[otherArg];<a name="line.556"></a> -<span class="sourceLineNo">557</span> rc.input(otherArgs);<a name="line.557"></a> -<span class="sourceLineNo">558</span> }<a name="line.558"></a> -<span class="sourceLineNo">559</span><a name="line.559"></a> -<span class="sourceLineNo">560</span> return rc.getResponse(method.getGenericReturnType());<a name="line.560"></a> -<span class="sourceLineNo">561</span><a name="line.561"></a> -<span class="sourceLineNo">562</span> } catch (RestCallException e) {<a name="line.562"></a> -<span class="sourceLineNo">563</span> // Try to throw original exception if possible.<a name="line.563"></a> -<span class="sourceLineNo">564</span> e.throwServerException(interfaceClass.getClassLoader());<a name="line.564"></a> -<span class="sourceLineNo">565</span> throw new RuntimeException(e);<a name="line.565"></a> -<span class="sourceLineNo">566</span> } catch (Exception e) {<a name="line.566"></a> -<span class="sourceLineNo">567</span> throw new RuntimeException(e);<a name="line.567"></a> -<span class="sourceLineNo">568</span> }<a name="line.568"></a> -<span class="sourceLineNo">569</span> }<a name="line.569"></a> -<span class="sourceLineNo">570</span> });<a name="line.570"></a> -<span class="sourceLineNo">571</span> } catch (Exception e) {<a name="line.571"></a> -<span class="sourceLineNo">572</span> throw new RuntimeException(e);<a name="line.572"></a> -<span class="sourceLineNo">573</span> }<a name="line.573"></a> -<span class="sourceLineNo">574</span> }<a name="line.574"></a> -<span class="sourceLineNo">575</span><a name="line.575"></a> -<span class="sourceLineNo">576</span> private Pattern absUrlPattern = Pattern.compile("^\\w+\\:\\/\\/.*");<a name="line.576"></a> -<span class="sourceLineNo">577</span><a name="line.577"></a> -<span class="sourceLineNo">578</span> UrlEncodingSerializer getUrlEncodingSerializer() {<a name="line.578"></a> -<span class="sourceLineNo">579</span> return urlEncodingSerializer;<a name="line.579"></a> -<span class="sourceLineNo">580</span> }<a name="line.580"></a> -<span class="sourceLineNo">581</span><a name="line.581"></a> -<span class="sourceLineNo">582</span> URI toURI(Object url) throws URISyntaxException {<a name="line.582"></a> -<span class="sourceLineNo">583</span> if (url instanceof URI)<a name="line.583"></a> -<span class="sourceLineNo">584</span> return (URI)url;<a name="line.584"></a> -<span class="sourceLineNo">585</span> if (url instanceof URL)<a name="line.585"></a> -<span class="sourceLineNo">586</span> ((URL)url).toURI();<a name="line.586"></a> -<span class="sourceLineNo">587</span> if (url instanceof URIBuilder)<a name="line.587"></a> -<span class="sourceLineNo">588</span> return ((URIBuilder)url).build();<a name="line.588"></a> -<span class="sourceLineNo">589</span> String s = url == null ? "" : url.toString();<a name="line.589"></a> -<span class="sourceLineNo">590</span> if (rootUrl != null && ! absUrlPattern.matcher(s).matches()) {<a name="line.590"></a> -<span class="sourceLineNo">591</span> if (s.isEmpty())<a name="line.591"></a> -<span class="sourceLineNo">592</span> s = rootUrl;<a name="line.592"></a> -<span class="sourceLineNo">593</span> else {<a name="line.593"></a> -<span class="sourceLineNo">594</span> StringBuilder sb = new StringBuilder(rootUrl);<a name="line.594"></a> -<span class="sourceLineNo">595</span> if (! s.startsWith("/"))<a name="line.595"></a> -<span class="sourceLineNo">596</span> sb.append('/');<a name="line.596"></a> -<span class="sourceLineNo">597</span> sb.append(s);<a name="line.597"></a> -<span class="sourceLineNo">598</span> s = sb.toString();<a name="line.598"></a> -<span class="sourceLineNo">599</span> }<a name="line.599"></a> -<span class="sourceLineNo">600</span> }<a name="line.600"></a> -<span class="sourceLineNo">601</span> return new URI(s);<a name="line.601"></a> -<span class="sourceLineNo">602</span> }<a name="line.602"></a> -<span class="sourceLineNo">603</span><a name="line.603"></a> -<span class="sourceLineNo">604</span> ExecutorService getExecutorService(boolean create) {<a name="line.604"></a> -<span class="sourceLineNo">605</span> if (executorService != null || ! create)<a name="line.605"></a> -<span class="sourceLineNo">606</span> return executorService;<a name="line.606"></a> -<span class="sourceLineNo">607</span> synchronized(this) {<a name="line.607"></a> -<span class="sourceLineNo">608</span> if (executorService == null)<a name="line.608"></a> -<span class="sourceLineNo">609</span> executorService = new ThreadPoolExecutor(1, 1, 30, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(10));<a name="line.609"></a> -<span class="sourceLineNo">610</span> return executorService;<a name="line.610"></a> -<span class="sourceLineNo">611</span> }<a name="line.611"></a> -<span class="sourceLineNo">612</span> }<a name="line.612"></a> -<span class="sourceLineNo">613</span><a name="line.613"></a> -<span class="sourceLineNo">614</span> @Override<a name="line.614"></a> -<span class="sourceLineNo">615</span> protected void finalize() throws Throwable {<a name="line.615"></a> -<span class="sourceLineNo">616</span> if (! isClosed && ! keepHttpClientOpen) {<a name="line.616"></a> -<span class="sourceLineNo">617</span> System.err.println("WARNING: RestClient garbage collected before it was finalized.");<a name="line.617"></a> -<span class="sourceLineNo">618</span> if (creationStack != null) {<a name="line.618"></a> -<span class="sourceLineNo">619</span> System.err.println("Creation Stack:");<a name="line.619"></a> -<span class="sourceLineNo">620</span> for (StackTraceElement e : creationStack)<a name="line.620"></a> -<span class="sourceLineNo">621</span> System.err.println(e);<a name="line.621"></a> -<span class="sourceLineNo">622</span> } else {<a name="line.622"></a> -<span class="sourceLineNo">623</span> System.err.println("Creation stack traces can be displayed by setting the system property 'org.apache.juneau.rest.client.RestClient.trackLifecycle' to true.");<a name="line.623"></a> -<span class="sourceLineNo">624</span> }<a name="line.624"></a> -<span class="sourceLineNo">625</span> }<a name="line.625"></a> -<span class="sourceLineNo">626</span> }<a name="line.626"></a> -<span class="sourceLineNo">627</span>}<a name="line.627"></a> +<span class="sourceLineNo">552</span> if (rmm.getBodyArg() != null)<a name="line.552"></a> +<span class="sourceLineNo">553</span> rc.input(args[rmm.getBodyArg()]);<a name="line.553"></a> +<span class="sourceLineNo">554</span><a name="line.554"></a> +<span class="sourceLineNo">555</span> if (rmm.getOtherArgs().length > 0) {<a name="line.555"></a> +<span class="sourceLineNo">556</span> Object[] otherArgs = new Object[rmm.getOtherArgs().length];<a name="line.556"></a> +<span class="sourceLineNo">557</span> int i = 0;<a name="line.557"></a> +<span class="sourceLineNo">558</span> for (Integer otherArg : rmm.getOtherArgs())<a name="line.558"></a> +<span class="sourceLineNo">559</span> otherArgs[i++] = args[otherArg];<a name="line.559"></a> +<span class="sourceLineNo">560</span> rc.input(otherArgs);<a name="line.560"></a> +<span class="sourceLineNo">561</span> }<a name="line.561"></a> +<span class="sourceLineNo">562</span><a name="line.562"></a> +<span class="sourceLineNo">563</span> return rc.getResponse(method.getGenericReturnType());<a name="line.563"></a> +<span class="sourceLineNo">564</span><a name="line.564"></a> +<span class="sourceLineNo">565</span> } catch (RestCallException e) {<a name="line.565"></a> +<span class="sourceLineNo">566</span> // Try to throw original exception if possible.<a name="line.566"></a> +<span class="sourceLineNo">567</span> e.throwServerException(interfaceClass.getClassLoader());<a name="line.567"></a> +<span class="sourceLineNo">568</span> throw new RuntimeException(e);<a name="line.568"></a> +<span class="sourceLineNo">569</span> } catch (Exception e) {<a name="line.569"></a> +<span class="sourceLineNo">570</span> throw new RuntimeException(e);<a name="line.570"></a> +<span class="sourceLineNo">571</span> }<a name="line.571"></a> +<span class="sourceLineNo">572</span> }<a name="line.572"></a> +<span class="sourceLineNo">573</span> });<a name="line.573"></a> +<span class="sourceLineNo">574</span> } catch (Exception e) {<a name="line.574"></a> +<span class="sourceLineNo">575</span> throw new RuntimeException(e);<a name="line.575"></a> +<span class="sourceLineNo">576</span> }<a name="line.576"></a> +<span class="sourceLineNo">577</span> }<a name="line.577"></a> +<span class="sourceLineNo">578</span><a name="line.578"></a> +<span class="sourceLineNo">579</span> private Pattern absUrlPattern = Pattern.compile("^\\w+\\:\\/\\/.*");<a name="line.579"></a> +<span class="sourceLineNo">580</span><a name="line.580"></a> +<span class="sourceLineNo">581</span> UrlEncodingSerializer getUrlEncodingSerializer() {<a name="line.581"></a> +<span class="sourceLineNo">582</span> return urlEncodingSerializer;<a name="line.582"></a> +<span class="sourceLineNo">583</span> }<a name="line.583"></a> +<span class="sourceLineNo">584</span><a name="line.584"></a> +<span class="sourceLineNo">585</span> URI toURI(Object url) throws URISyntaxException {<a name="line.585"></a> +<span class="sourceLineNo">586</span> if (url instanceof URI)<a name="line.586"></a> +<span class="sourceLineNo">587</span> return (URI)url;<a name="line.587"></a> +<span class="sourceLineNo">588</span> if (url instanceof URL)<a name="line.588"></a> +<span class="sourceLineNo">589</span> ((URL)url).toURI();<a name="line.589"></a> +<span class="sourceLineNo">590</span> if (url instanceof URIBuilder)<a name="line.590"></a> +<span class="sourceLineNo">591</span> return ((URIBuilder)url).build();<a name="line.591"></a> +<span class="sourceLineNo">592</span> String s = url == null ? "" : url.toString();<a name="line.592"></a> +<span class="sourceLineNo">593</span> if (rootUrl != null && ! absUrlPattern.matcher(s).matches()) {<a name="line.593"></a> +<span class="sourceLineNo">594</span> if (s.isEmpty())<a name="line.594"></a> +<span class="sourceLineNo">595</span> s = rootUrl;<a name="line.595"></a> +<span class="sourceLineNo">596</span> else {<a name="line.596"></a> +<span class="sourceLineNo">597</span> StringBuilder sb = new StringBuilder(rootUrl);<a name="line.597"></a> +<span class="sourceLineNo">598</span> if (! s.startsWith("/"))<a name="line.598"></a> +<span class="sourceLineNo">599</span> sb.append('/');<a name="line.599"></a> +<span class="sourceLineNo">600</span> sb.append(s);<a name="line.600"></a> +<span class="sourceLineNo">601</span> s = sb.toString();<a name="line.601"></a> +<span class="sourceLineNo">602</span> }<a name="line.602"></a> +<span class="sourceLineNo">603</span> }<a name="line.603"></a> +<span class="sourceLineNo">604</span> if (s.indexOf('{') != -1)<a name="line.604"></a> +<span class="sourceLineNo">605</span> s = s.replace("{", "%7B").replace("}", "%7D");<a name="line.605"></a> +<span class="sourceLineNo">606</span> return new URI(s);<a name="line.606"></a> +<span class="sourceLineNo">607</span> }<a name="line.607"></a> +<span class="sourceLineNo">608</span><a name="line.608"></a> +<span class="sourceLineNo">609</span> ExecutorService getExecutorService(boolean create) {<a name="line.609"></a> +<span class="sourceLineNo">610</span> if (executorService != null || ! create)<a name="line.610"></a> +<span class="sourceLineNo">611</span> return executorService;<a name="line.611"></a> +<span class="sourceLineNo">612</span> synchronized(this) {<a name="line.612"></a> +<span class="sourceLineNo">613</span> if (executorService == null)<a name="line.613"></a> +<span class="sourceLineNo">614</span> executorService = new ThreadPoolExecutor(1, 1, 30, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(10));<a name="line.614"></a> +<span class="sourceLineNo">615</span> return executorService;<a name="line.615"></a> +<span class="sourceLineNo">616</span> }<a name="line.616"></a> +<span class="sourceLineNo">617</span> }<a name="line.617"></a> +<span class="sourceLineNo">618</span><a name="line.618"></a> +<span class="sourceLineNo">619</span> @Override<a name="line.619"></a> +<span class="sourceLineNo">620</span> protected void finalize() throws Throwable {<a name="line.620"></a> +<span class="sourceLineNo">621</span> if (! isClosed && ! keepHttpClientOpen) {<a name="line.621"></a> +<span class="sourceLineNo">622</span> System.err.println("WARNING: RestClient garbage collected before it was finalized.");<a name="line.622"></a> +<span class="sourceLineNo">623</span> if (creationStack != null) {<a name="line.623"></a> +<span class="sourceLineNo">624</span> System.err.println("Creation Stack:");<a name="line.624"></a> +<span class="sourceLineNo">625</span> for (StackTraceElement e : creationStack)<a name="line.625"></a> +<span class="sourceLineNo">626</span> System.err.println(e);<a name="line.626"></a> +<span class="sourceLineNo">627</span> } else {<a name="line.627"></a> +<span class="sourceLineNo">628</span> System.err.println("Creation stack traces can be displayed by setting the system property 'org.apache.juneau.rest.client.RestClient.trackLifecycle' to true.");<a name="line.628"></a> +<span class="sourceLineNo">629</span> }<a name="line.629"></a> +<span class="sourceLineNo">630</span> }<a name="line.630"></a> +<span class="sourceLineNo">631</span> }<a name="line.631"></a> +<span class="sourceLineNo">632</span>}<a name="line.632"></a>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/37ddf434/content/site/apidocs/src-html/org/apache/juneau/rest/client/RestClientBuilder.html ---------------------------------------------------------------------- diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/client/RestClientBuilder.html b/content/site/apidocs/src-html/org/apache/juneau/rest/client/RestClientBuilder.html index 63d799d..5c4a48d 100644 --- a/content/site/apidocs/src-html/org/apache/juneau/rest/client/RestClientBuilder.html +++ b/content/site/apidocs/src-html/org/apache/juneau/rest/client/RestClientBuilder.html @@ -944,7 +944,7 @@ <span class="sourceLineNo">936</span> * @return This object (for method chaining).<a name="line.936"></a> <span class="sourceLineNo">937</span> * @see SerializerContext#SERIALIZER_trimStrings<a name="line.937"></a> <span class="sourceLineNo">938</span> */<a name="line.938"></a> -<span class="sourceLineNo">939</span> public RestClientBuilder trimStringsS(boolean value) {<a name="line.939"></a> +<span class="sourceLineNo">939</span> public RestClientBuilder trimStrings(boolean value) {<a name="line.939"></a> <span class="sourceLineNo">940</span> return property(SERIALIZER_trimStrings, value);<a name="line.940"></a> <span class="sourceLineNo">941</span> }<a name="line.941"></a> <span class="sourceLineNo">942</span><a name="line.942"></a> http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/37ddf434/content/site/apidocs/src-html/org/apache/juneau/rest/jaxrs/BaseProvider.html ---------------------------------------------------------------------- diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/jaxrs/BaseProvider.html b/content/site/apidocs/src-html/org/apache/juneau/rest/jaxrs/BaseProvider.html index 3129499..0773406 100644 --- a/content/site/apidocs/src-html/org/apache/juneau/rest/jaxrs/BaseProvider.html +++ b/content/site/apidocs/src-html/org/apache/juneau/rest/jaxrs/BaseProvider.html @@ -122,13 +122,13 @@ <span class="sourceLineNo">114</span> if (s.isWriterSerializer()) {<a name="line.114"></a> <span class="sourceLineNo">115</span> WriterSerializer s2 = (WriterSerializer)s;<a name="line.115"></a> <span class="sourceLineNo">116</span> OutputStreamWriter w = new OutputStreamWriter(out, IOUtils.UTF8);<a name="line.116"></a> -<span class="sourceLineNo">117</span> SerializerSession session = s.createSession(w, mp, null, locale, timeZone, sm.getMediaType());<a name="line.117"></a> +<span class="sourceLineNo">117</span> SerializerSession session = s.createSession(w, mp, null, locale, timeZone, sm.getMediaType(), null);<a name="line.117"></a> <span class="sourceLineNo">118</span> s2.serialize(session, o);<a name="line.118"></a> <span class="sourceLineNo">119</span> w.flush();<a name="line.119"></a> <span class="sourceLineNo">120</span> w.close();<a name="line.120"></a> <span class="sourceLineNo">121</span> } else {<a name="line.121"></a> <span class="sourceLineNo">122</span> OutputStreamSerializer s2 = (OutputStreamSerializer)s;<a name="line.122"></a> -<span class="sourceLineNo">123</span> SerializerSession session = s.createSession(s2, mp, null, locale, timeZone, sm.getMediaType());<a name="line.123"></a> +<span class="sourceLineNo">123</span> SerializerSession session = s.createSession(s2, mp, null, locale, timeZone, sm.getMediaType(), null);<a name="line.123"></a> <span class="sourceLineNo">124</span> s2.serialize(session, o);<a name="line.124"></a> <span class="sourceLineNo">125</span> out.flush();<a name="line.125"></a> <span class="sourceLineNo">126</span> out.close();<a name="line.126"></a> http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/37ddf434/content/site/apidocs/src-html/org/apache/juneau/rest/response/DefaultHandler.html ---------------------------------------------------------------------- diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/response/DefaultHandler.html b/content/site/apidocs/src-html/org/apache/juneau/rest/response/DefaultHandler.html index 4fa8f4c..437f4eb 100644 --- a/content/site/apidocs/src-html/org/apache/juneau/rest/response/DefaultHandler.html +++ b/content/site/apidocs/src-html/org/apache/juneau/rest/response/DefaultHandler.html @@ -68,13 +68,13 @@ <span class="sourceLineNo">060</span> if (! s.isWriterSerializer()) {<a name="line.60"></a> <span class="sourceLineNo">061</span> OutputStreamSerializer s2 = (OutputStreamSerializer)s;<a name="line.61"></a> <span class="sourceLineNo">062</span> OutputStream os = res.getNegotiatedOutputStream();<a name="line.62"></a> -<span class="sourceLineNo">063</span> SerializerSession session = s.createSession(os, p, req.getJavaMethod(), req.getLocale(), req.getHeaders().getTimeZone(), mediaType);<a name="line.63"></a> +<span class="sourceLineNo">063</span> SerializerSession session = s.createSession(os, p, req.getJavaMethod(), req.getLocale(), req.getHeaders().getTimeZone(), mediaType, req.getUriContext());<a name="line.63"></a> <span class="sourceLineNo">064</span> s2.serialize(session, output);<a name="line.64"></a> <span class="sourceLineNo">065</span> os.close();<a name="line.65"></a> <span class="sourceLineNo">066</span> } else {<a name="line.66"></a> <span class="sourceLineNo">067</span> WriterSerializer s2 = (WriterSerializer)s;<a name="line.67"></a> <span class="sourceLineNo">068</span> Writer w = res.getNegotiatedWriter();<a name="line.68"></a> -<span class="sourceLineNo">069</span> SerializerSession session = s.createSession(w, p, req.getJavaMethod(), req.getLocale(), req.getHeaders().getTimeZone(), mediaType);<a name="line.69"></a> +<span class="sourceLineNo">069</span> SerializerSession session = s.createSession(w, p, req.getJavaMethod(), req.getLocale(), req.getHeaders().getTimeZone(), mediaType, req.getUriContext());<a name="line.69"></a> <span class="sourceLineNo">070</span> s2.serialize(session, output);<a name="line.70"></a> <span class="sourceLineNo">071</span> w.close();<a name="line.71"></a> <span class="sourceLineNo">072</span> }<a name="line.72"></a> http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/37ddf434/content/site/apidocs/src-html/org/apache/juneau/serializer/Serializer.html ---------------------------------------------------------------------- diff --git a/content/site/apidocs/src-html/org/apache/juneau/serializer/Serializer.html b/content/site/apidocs/src-html/org/apache/juneau/serializer/Serializer.html index 85ffc5c..a79f5e4 100644 --- a/content/site/apidocs/src-html/org/apache/juneau/serializer/Serializer.html +++ b/content/site/apidocs/src-html/org/apache/juneau/serializer/Serializer.html @@ -92,7 +92,7 @@ <span class="sourceLineNo">084</span> * Serializes a POJO to the specified output stream or writer.<a name="line.84"></a> <span class="sourceLineNo">085</span> * <p><a name="line.85"></a> <span class="sourceLineNo">086</span> * This method should NOT close the context object.<a name="line.86"></a> -<span class="sourceLineNo">087</span> * @param session The serializer session object return by {@link #createSession(Object, ObjectMap, Method, Locale, TimeZone, MediaType)}.<br><a name="line.87"></a> +<span class="sourceLineNo">087</span> * @param session The serializer session object return by {@link #createSession(Object, ObjectMap, Method, Locale, TimeZone, MediaType, UriContext)}.<br><a name="line.87"></a> <span class="sourceLineNo">088</span> * If <jk>null</jk>, session is created using {@link #createSession(Object)}.<a name="line.88"></a> <span class="sourceLineNo">089</span> * @param o The object to serialize.<a name="line.89"></a> <span class="sourceLineNo">090</span> *<a name="line.90"></a> @@ -120,7 +120,7 @@ <span class="sourceLineNo">112</span> /**<a name="line.112"></a> <span class="sourceLineNo">113</span> * Serialize the specified object using the specified session.<a name="line.113"></a> <span class="sourceLineNo">114</span> *<a name="line.114"></a> -<span class="sourceLineNo">115</span> * @param session The serializer session object return by {@link #createSession(Object, ObjectMap, Method, Locale, TimeZone, MediaType)}.<br><a name="line.115"></a> +<span class="sourceLineNo">115</span> * @param session The serializer session object return by {@link #createSession(Object, ObjectMap, Method, Locale, TimeZone, MediaType, UriContext)}.<br><a name="line.115"></a> <span class="sourceLineNo">116</span> * If <jk>null</jk>, session is created using {@link #createSession(Object)}.<a name="line.116"></a> <span class="sourceLineNo">117</span> * @param o The object to serialize.<a name="line.117"></a> <span class="sourceLineNo">118</span> * @throws SerializeException If a problem occurred trying to convert the output.<a name="line.118"></a> @@ -191,112 +191,114 @@ <span class="sourceLineNo">183</span> * @param timeZone The session timezone.<a name="line.183"></a> <span class="sourceLineNo">184</span> * If <jk>null</jk>, then the timezone defined on the context is used.<a name="line.184"></a> <span class="sourceLineNo">185</span> * @param mediaType The session media type (e.g. <js>"application/json"</js>).<a name="line.185"></a> -<span class="sourceLineNo">186</span> * @return The new session.<a name="line.186"></a> -<span class="sourceLineNo">187</span> */<a name="line.187"></a> -<span class="sourceLineNo">188</span> public SerializerSession createSession(Object output, ObjectMap op, Method javaMethod, Locale locale, TimeZone timeZone, MediaType mediaType) {<a name="line.188"></a> -<span class="sourceLineNo">189</span> return new SerializerSession(ctx, op, output, javaMethod, locale, timeZone, mediaType);<a name="line.189"></a> -<span class="sourceLineNo">190</span> }<a name="line.190"></a> -<span class="sourceLineNo">191</span><a name="line.191"></a> -<span class="sourceLineNo">192</span> /**<a name="line.192"></a> -<span class="sourceLineNo">193</span> * Create a basic session object without overriding properties or specifying <code>javaMethod</code>.<a name="line.193"></a> -<span class="sourceLineNo">194</span> * <p><a name="line.194"></a> -<span class="sourceLineNo">195</span> * Equivalent to calling <code>createSession(<jk>null</jk>, <jk>null</jk>)</code>.<a name="line.195"></a> -<span class="sourceLineNo">196</span> *<a name="line.196"></a> -<span class="sourceLineNo">197</span> * @param output The output object.<a name="line.197"></a> -<span class="sourceLineNo">198</span> * <br>Character-based serializers can handle the following output class types:<a name="line.198"></a> -<span class="sourceLineNo">199</span> * <ul><a name="line.199"></a> -<span class="sourceLineNo">200</span> * <li>{@link Writer}<a name="line.200"></a> -<span class="sourceLineNo">201</span> * <li>{@link OutputStream} - Output will be written as UTF-8 encoded stream.<a name="line.201"></a> -<span class="sourceLineNo">202</span> * <li>{@link File} - Output will be written as system-default encoded stream.<a name="line.202"></a> -<span class="sourceLineNo">203</span> * </ul><a name="line.203"></a> -<span class="sourceLineNo">204</span> * <br>Stream-based serializers can handle the following output class types:<a name="line.204"></a> -<span class="sourceLineNo">205</span> * <ul><a name="line.205"></a> -<span class="sourceLineNo">206</span> * <li>{@link OutputStream}<a name="line.206"></a> -<span class="sourceLineNo">207</span> * <li>{@link File}<a name="line.207"></a> -<span class="sourceLineNo">208</span> * </ul><a name="line.208"></a> -<span class="sourceLineNo">209</span> * @return The new session.<a name="line.209"></a> -<span class="sourceLineNo">210</span> */<a name="line.210"></a> -<span class="sourceLineNo">211</span> protected SerializerSession createSession(Object output) {<a name="line.211"></a> -<span class="sourceLineNo">212</span> return createSession(output, null, null, null, null, getPrimaryMediaType());<a name="line.212"></a> -<span class="sourceLineNo">213</span> }<a name="line.213"></a> -<span class="sourceLineNo">214</span><a name="line.214"></a> -<span class="sourceLineNo">215</span> /**<a name="line.215"></a> -<span class="sourceLineNo">216</span> * Converts the contents of the specified object array to a list.<a name="line.216"></a> -<span class="sourceLineNo">217</span> * <p><a name="line.217"></a> -<span class="sourceLineNo">218</span> * Works on both object and primitive arrays.<a name="line.218"></a> +<span class="sourceLineNo">186</span> * @param uriContext The URI context.<a name="line.186"></a> +<span class="sourceLineNo">187</span> * Identifies the current request URI used for resolution of URIs to absolute or root-relative form.<a name="line.187"></a> +<span class="sourceLineNo">188</span> * @return The new session.<a name="line.188"></a> +<span class="sourceLineNo">189</span> */<a name="line.189"></a> +<span class="sourceLineNo">190</span> public SerializerSession createSession(Object output, ObjectMap op, Method javaMethod, Locale locale, TimeZone timeZone, MediaType mediaType, UriContext uriContext) {<a name="line.190"></a> +<span class="sourceLineNo">191</span> return new SerializerSession(ctx, op, output, javaMethod, locale, timeZone, mediaType, uriContext);<a name="line.191"></a> +<span class="sourceLineNo">192</span> }<a name="line.192"></a> +<span class="sourceLineNo">193</span><a name="line.193"></a> +<span class="sourceLineNo">194</span> /**<a name="line.194"></a> +<span class="sourceLineNo">195</span> * Create a basic session object without overriding properties or specifying <code>javaMethod</code>.<a name="line.195"></a> +<span class="sourceLineNo">196</span> * <p><a name="line.196"></a> +<span class="sourceLineNo">197</span> * Equivalent to calling <code>createSession(<jk>null</jk>, <jk>null</jk>)</code>.<a name="line.197"></a> +<span class="sourceLineNo">198</span> *<a name="line.198"></a> +<span class="sourceLineNo">199</span> * @param output The output object.<a name="line.199"></a> +<span class="sourceLineNo">200</span> * <br>Character-based serializers can handle the following output class types:<a name="line.200"></a> +<span class="sourceLineNo">201</span> * <ul><a name="line.201"></a> +<span class="sourceLineNo">202</span> * <li>{@link Writer}<a name="line.202"></a> +<span class="sourceLineNo">203</span> * <li>{@link OutputStream} - Output will be written as UTF-8 encoded stream.<a name="line.203"></a> +<span class="sourceLineNo">204</span> * <li>{@link File} - Output will be written as system-default encoded stream.<a name="line.204"></a> +<span class="sourceLineNo">205</span> * </ul><a name="line.205"></a> +<span class="sourceLineNo">206</span> * <br>Stream-based serializers can handle the following output class types:<a name="line.206"></a> +<span class="sourceLineNo">207</span> * <ul><a name="line.207"></a> +<span class="sourceLineNo">208</span> * <li>{@link OutputStream}<a name="line.208"></a> +<span class="sourceLineNo">209</span> * <li>{@link File}<a name="line.209"></a> +<span class="sourceLineNo">210</span> * </ul><a name="line.210"></a> +<span class="sourceLineNo">211</span> * @return The new session.<a name="line.211"></a> +<span class="sourceLineNo">212</span> */<a name="line.212"></a> +<span class="sourceLineNo">213</span> protected SerializerSession createSession(Object output) {<a name="line.213"></a> +<span class="sourceLineNo">214</span> return createSession(output, null, null, null, null, getPrimaryMediaType(), null);<a name="line.214"></a> +<span class="sourceLineNo">215</span> }<a name="line.215"></a> +<span class="sourceLineNo">216</span><a name="line.216"></a> +<span class="sourceLineNo">217</span> /**<a name="line.217"></a> +<span class="sourceLineNo">218</span> * Converts the contents of the specified object array to a list.<a name="line.218"></a> <span class="sourceLineNo">219</span> * <p><a name="line.219"></a> -<span class="sourceLineNo">220</span> * In the case of multi-dimensional arrays, the outgoing list will<a name="line.220"></a> -<span class="sourceLineNo">221</span> * contain elements of type n-1 dimension. i.e. if {@code type} is <code><jk>int</jk>[][]</code><a name="line.221"></a> -<span class="sourceLineNo">222</span> * then {@code list} will have entries of type <code><jk>int</jk>[]</code>.<a name="line.222"></a> -<span class="sourceLineNo">223</span> *<a name="line.223"></a> -<span class="sourceLineNo">224</span> * @param type The type of array.<a name="line.224"></a> -<span class="sourceLineNo">225</span> * @param array The array being converted.<a name="line.225"></a> -<span class="sourceLineNo">226</span> * @return The array as a list.<a name="line.226"></a> -<span class="sourceLineNo">227</span> */<a name="line.227"></a> -<span class="sourceLineNo">228</span> protected static final List<Object> toList(Class<?> type, Object array) {<a name="line.228"></a> -<span class="sourceLineNo">229</span> Class<?> componentType = type.getComponentType();<a name="line.229"></a> -<span class="sourceLineNo">230</span> if (componentType.isPrimitive()) {<a name="line.230"></a> -<span class="sourceLineNo">231</span> int l = Array.getLength(array);<a name="line.231"></a> -<span class="sourceLineNo">232</span> List<Object> list = new ArrayList<Object>(l);<a name="line.232"></a> -<span class="sourceLineNo">233</span> for (int i = 0; i < l; i++)<a name="line.233"></a> -<span class="sourceLineNo">234</span> list.add(Array.get(array, i));<a name="line.234"></a> -<span class="sourceLineNo">235</span> return list;<a name="line.235"></a> -<span class="sourceLineNo">236</span> }<a name="line.236"></a> -<span class="sourceLineNo">237</span> return Arrays.asList((Object[])array);<a name="line.237"></a> -<span class="sourceLineNo">238</span> }<a name="line.238"></a> -<span class="sourceLineNo">239</span><a name="line.239"></a> -<span class="sourceLineNo">240</span> /**<a name="line.240"></a> -<span class="sourceLineNo">241</span> * Returns the media types handled based on the value of the {@link Produces} annotation on the serializer class.<a name="line.241"></a> -<span class="sourceLineNo">242</span> * <p><a name="line.242"></a> -<span class="sourceLineNo">243</span> * This method can be overridden by subclasses to determine the media types programatically.<a name="line.243"></a> -<span class="sourceLineNo">244</span> *<a name="line.244"></a> -<span class="sourceLineNo">245</span> * @return The list of media types. Never <jk>null</jk>.<a name="line.245"></a> -<span class="sourceLineNo">246</span> */<a name="line.246"></a> -<span class="sourceLineNo">247</span> public MediaType[] getMediaTypes() {<a name="line.247"></a> -<span class="sourceLineNo">248</span> return mediaTypes;<a name="line.248"></a> -<span class="sourceLineNo">249</span> }<a name="line.249"></a> -<span class="sourceLineNo">250</span><a name="line.250"></a> -<span class="sourceLineNo">251</span> /**<a name="line.251"></a> -<span class="sourceLineNo">252</span> * Returns the first media type specified on this serializer via the {@link Produces} annotation.<a name="line.252"></a> -<span class="sourceLineNo">253</span> *<a name="line.253"></a> -<span class="sourceLineNo">254</span> * @return The media type.<a name="line.254"></a> -<span class="sourceLineNo">255</span> */<a name="line.255"></a> -<span class="sourceLineNo">256</span> public MediaType getPrimaryMediaType() {<a name="line.256"></a> -<span class="sourceLineNo">257</span> return mediaTypes == null || mediaTypes.length == 0 ? null : mediaTypes[0];<a name="line.257"></a> -<span class="sourceLineNo">258</span> }<a name="line.258"></a> -<span class="sourceLineNo">259</span><a name="line.259"></a> -<span class="sourceLineNo">260</span> /**<a name="line.260"></a> -<span class="sourceLineNo">261</span> * Optional method that specifies HTTP request headers for this serializer.<a name="line.261"></a> -<span class="sourceLineNo">262</span> * <p><a name="line.262"></a> -<span class="sourceLineNo">263</span> * For example, {@link SoapXmlSerializer} needs to set a <code>SOAPAction</code> header.<a name="line.263"></a> +<span class="sourceLineNo">220</span> * Works on both object and primitive arrays.<a name="line.220"></a> +<span class="sourceLineNo">221</span> * <p><a name="line.221"></a> +<span class="sourceLineNo">222</span> * In the case of multi-dimensional arrays, the outgoing list will<a name="line.222"></a> +<span class="sourceLineNo">223</span> * contain elements of type n-1 dimension. i.e. if {@code type} is <code><jk>int</jk>[][]</code><a name="line.223"></a> +<span class="sourceLineNo">224</span> * then {@code list} will have entries of type <code><jk>int</jk>[]</code>.<a name="line.224"></a> +<span class="sourceLineNo">225</span> *<a name="line.225"></a> +<span class="sourceLineNo">226</span> * @param type The type of array.<a name="line.226"></a> +<span class="sourceLineNo">227</span> * @param array The array being converted.<a name="line.227"></a> +<span class="sourceLineNo">228</span> * @return The array as a list.<a name="line.228"></a> +<span class="sourceLineNo">229</span> */<a name="line.229"></a> +<span class="sourceLineNo">230</span> protected static final List<Object> toList(Class<?> type, Object array) {<a name="line.230"></a> +<span class="sourceLineNo">231</span> Class<?> componentType = type.getComponentType();<a name="line.231"></a> +<span class="sourceLineNo">232</span> if (componentType.isPrimitive()) {<a name="line.232"></a> +<span class="sourceLineNo">233</span> int l = Array.getLength(array);<a name="line.233"></a> +<span class="sourceLineNo">234</span> List<Object> list = new ArrayList<Object>(l);<a name="line.234"></a> +<span class="sourceLineNo">235</span> for (int i = 0; i < l; i++)<a name="line.235"></a> +<span class="sourceLineNo">236</span> list.add(Array.get(array, i));<a name="line.236"></a> +<span class="sourceLineNo">237</span> return list;<a name="line.237"></a> +<span class="sourceLineNo">238</span> }<a name="line.238"></a> +<span class="sourceLineNo">239</span> return Arrays.asList((Object[])array);<a name="line.239"></a> +<span class="sourceLineNo">240</span> }<a name="line.240"></a> +<span class="sourceLineNo">241</span><a name="line.241"></a> +<span class="sourceLineNo">242</span> /**<a name="line.242"></a> +<span class="sourceLineNo">243</span> * Returns the media types handled based on the value of the {@link Produces} annotation on the serializer class.<a name="line.243"></a> +<span class="sourceLineNo">244</span> * <p><a name="line.244"></a> +<span class="sourceLineNo">245</span> * This method can be overridden by subclasses to determine the media types programatically.<a name="line.245"></a> +<span class="sourceLineNo">246</span> *<a name="line.246"></a> +<span class="sourceLineNo">247</span> * @return The list of media types. Never <jk>null</jk>.<a name="line.247"></a> +<span class="sourceLineNo">248</span> */<a name="line.248"></a> +<span class="sourceLineNo">249</span> public MediaType[] getMediaTypes() {<a name="line.249"></a> +<span class="sourceLineNo">250</span> return mediaTypes;<a name="line.250"></a> +<span class="sourceLineNo">251</span> }<a name="line.251"></a> +<span class="sourceLineNo">252</span><a name="line.252"></a> +<span class="sourceLineNo">253</span> /**<a name="line.253"></a> +<span class="sourceLineNo">254</span> * Returns the first media type specified on this serializer via the {@link Produces} annotation.<a name="line.254"></a> +<span class="sourceLineNo">255</span> *<a name="line.255"></a> +<span class="sourceLineNo">256</span> * @return The media type.<a name="line.256"></a> +<span class="sourceLineNo">257</span> */<a name="line.257"></a> +<span class="sourceLineNo">258</span> public MediaType getPrimaryMediaType() {<a name="line.258"></a> +<span class="sourceLineNo">259</span> return mediaTypes == null || mediaTypes.length == 0 ? null : mediaTypes[0];<a name="line.259"></a> +<span class="sourceLineNo">260</span> }<a name="line.260"></a> +<span class="sourceLineNo">261</span><a name="line.261"></a> +<span class="sourceLineNo">262</span> /**<a name="line.262"></a> +<span class="sourceLineNo">263</span> * Optional method that specifies HTTP request headers for this serializer.<a name="line.263"></a> <span class="sourceLineNo">264</span> * <p><a name="line.264"></a> -<span class="sourceLineNo">265</span> * This method is typically meaningless if the serializer is being used standalone (i.e. outside of a REST server or client).<a name="line.265"></a> -<span class="sourceLineNo">266</span> *<a name="line.266"></a> -<span class="sourceLineNo">267</span> * @param properties Optional run-time properties (the same that are passed to {@link WriterSerializer#doSerialize(SerializerSession, Object)}.<a name="line.267"></a> -<span class="sourceLineNo">268</span> * Can be <jk>null</jk>.<a name="line.268"></a> -<span class="sourceLineNo">269</span> * @return The HTTP headers to set on HTTP requests.<a name="line.269"></a> +<span class="sourceLineNo">265</span> * For example, {@link SoapXmlSerializer} needs to set a <code>SOAPAction</code> header.<a name="line.265"></a> +<span class="sourceLineNo">266</span> * <p><a name="line.266"></a> +<span class="sourceLineNo">267</span> * This method is typically meaningless if the serializer is being used standalone (i.e. outside of a REST server or client).<a name="line.267"></a> +<span class="sourceLineNo">268</span> *<a name="line.268"></a> +<span class="sourceLineNo">269</span> * @param properties Optional run-time properties (the same that are passed to {@link WriterSerializer#doSerialize(SerializerSession, Object)}.<a name="line.269"></a> <span class="sourceLineNo">270</span> * Can be <jk>null</jk>.<a name="line.270"></a> -<span class="sourceLineNo">271</span> */<a name="line.271"></a> -<span class="sourceLineNo">272</span> public ObjectMap getResponseHeaders(ObjectMap properties) {<a name="line.272"></a> -<span class="sourceLineNo">273</span> return ObjectMap.EMPTY_MAP;<a name="line.273"></a> -<span class="sourceLineNo">274</span> }<a name="line.274"></a> -<span class="sourceLineNo">275</span><a name="line.275"></a> -<span class="sourceLineNo">276</span> /**<a name="line.276"></a> -<span class="sourceLineNo">277</span> * Optional method that returns the response <code>Content-Type</code> for this serializer if it is different from the matched media type.<a name="line.277"></a> -<span class="sourceLineNo">278</span> * <p><a name="line.278"></a> -<span class="sourceLineNo">279</span> * This method is specified to override the content type for this serializer.<a name="line.279"></a> -<span class="sourceLineNo">280</span> * For example, the {@link org.apache.juneau.json.JsonSerializer.Simple} class returns that it handles media type <js>"text/json+simple"</js>, but returns<a name="line.280"></a> -<span class="sourceLineNo">281</span> * <js>"text/json"</js> as the actual content type.<a name="line.281"></a> -<span class="sourceLineNo">282</span> * This allows clients to request specific 'flavors' of content using specialized <code>Accept</code> header values.<a name="line.282"></a> -<span class="sourceLineNo">283</span> * <p><a name="line.283"></a> -<span class="sourceLineNo">284</span> * This method is typically meaningless if the serializer is being used standalone (i.e. outside of a REST server or client).<a name="line.284"></a> -<span class="sourceLineNo">285</span> *<a name="line.285"></a> -<span class="sourceLineNo">286</span> * @return The response content type. If <jk>null</jk>, then the matched media type is used.<a name="line.286"></a> -<span class="sourceLineNo">287</span> */<a name="line.287"></a> -<span class="sourceLineNo">288</span> public MediaType getResponseContentType() {<a name="line.288"></a> -<span class="sourceLineNo">289</span> return contentType;<a name="line.289"></a> -<span class="sourceLineNo">290</span> }<a name="line.290"></a> -<span class="sourceLineNo">291</span>}<a name="line.291"></a> +<span class="sourceLineNo">271</span> * @return The HTTP headers to set on HTTP requests.<a name="line.271"></a> +<span class="sourceLineNo">272</span> * Can be <jk>null</jk>.<a name="line.272"></a> +<span class="sourceLineNo">273</span> */<a name="line.273"></a> +<span class="sourceLineNo">274</span> public ObjectMap getResponseHeaders(ObjectMap properties) {<a name="line.274"></a> +<span class="sourceLineNo">275</span> return ObjectMap.EMPTY_MAP;<a name="line.275"></a> +<span class="sourceLineNo">276</span> }<a name="line.276"></a> +<span class="sourceLineNo">277</span><a name="line.277"></a> +<span class="sourceLineNo">278</span> /**<a name="line.278"></a> +<span class="sourceLineNo">279</span> * Optional method that returns the response <code>Content-Type</code> for this serializer if it is different from the matched media type.<a name="line.279"></a> +<span class="sourceLineNo">280</span> * <p><a name="line.280"></a> +<span class="sourceLineNo">281</span> * This method is specified to override the content type for this serializer.<a name="line.281"></a> +<span class="sourceLineNo">282</span> * For example, the {@link org.apache.juneau.json.JsonSerializer.Simple} class returns that it handles media type <js>"text/json+simple"</js>, but returns<a name="line.282"></a> +<span class="sourceLineNo">283</span> * <js>"text/json"</js> as the actual content type.<a name="line.283"></a> +<span class="sourceLineNo">284</span> * This allows clients to request specific 'flavors' of content using specialized <code>Accept</code> header values.<a name="line.284"></a> +<span class="sourceLineNo">285</span> * <p><a name="line.285"></a> +<span class="sourceLineNo">286</span> * This method is typically meaningless if the serializer is being used standalone (i.e. outside of a REST server or client).<a name="line.286"></a> +<span class="sourceLineNo">287</span> *<a name="line.287"></a> +<span class="sourceLineNo">288</span> * @return The response content type. If <jk>null</jk>, then the matched media type is used.<a name="line.288"></a> +<span class="sourceLineNo">289</span> */<a name="line.289"></a> +<span class="sourceLineNo">290</span> public MediaType getResponseContentType() {<a name="line.290"></a> +<span class="sourceLineNo">291</span> return contentType;<a name="line.291"></a> +<span class="sourceLineNo">292</span> }<a name="line.292"></a> +<span class="sourceLineNo">293</span>}<a name="line.293"></a>
