[04/22] cxf git commit: Better splitting of the demo PDF content
Better splitting of the demo PDF content Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/0d5577ab Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/0d5577ab Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/0d5577ab Branch: refs/heads/master-jaxrs-2.1 Commit: 0d5577ab87f324205565c4534b59e69049505356 Parents: f564ac8 Author: Sergey Beryozkin Authored: Tue Sep 13 13:42:04 2016 +0100 Committer: Sergey Beryozkin Committed: Tue Sep 13 13:42:04 2016 +0100 -- .../demo/jaxrs/server/StreamingService.java | 65 ++-- 1 file changed, 34 insertions(+), 31 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/0d5577ab/distribution/src/main/release/samples/jax_rs/spark/src/main/java/demo/jaxrs/server/StreamingService.java -- diff --git a/distribution/src/main/release/samples/jax_rs/spark/src/main/java/demo/jaxrs/server/StreamingService.java b/distribution/src/main/release/samples/jax_rs/spark/src/main/java/demo/jaxrs/server/StreamingService.java index 4f82b5e..0d2fdea 100644 --- a/distribution/src/main/release/samples/jax_rs/spark/src/main/java/demo/jaxrs/server/StreamingService.java +++ b/distribution/src/main/release/samples/jax_rs/spark/src/main/java/demo/jaxrs/server/StreamingService.java @@ -22,6 +22,8 @@ import java.io.InputStream; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; import java.util.Map; import java.util.Random; import java.util.concurrent.ArrayBlockingQueue; @@ -46,9 +48,6 @@ import org.apache.cxf.jaxrs.ext.search.tika.TikaContentExtractor.TikaContent; import org.apache.spark.SparkConf; import org.apache.spark.SparkException; import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.function.FlatMapFunction; -import org.apache.spark.api.java.function.Function2; -import org.apache.spark.api.java.function.PairFunction; import org.apache.spark.api.java.function.VoidFunction; import org.apache.spark.streaming.Durations; import org.apache.spark.streaming.api.java.JavaDStream; @@ -56,6 +55,9 @@ import org.apache.spark.streaming.api.java.JavaPairDStream; import org.apache.spark.streaming.api.java.JavaReceiverInputDStream; import org.apache.spark.streaming.api.java.JavaStreamingContext; import org.apache.spark.streaming.receiver.Receiver; +import org.apache.tika.parser.AutoDetectParser; +import org.apache.tika.parser.ParseContext; +import org.apache.tika.parser.Parser; import org.apache.tika.parser.odf.OpenDocumentParser; import org.apache.tika.parser.pdf.PDFParser; @@ -95,6 +97,8 @@ public class StreamingService { } } +ParseContext context = new ParseContext(); +context.set(Parser.class, new AutoDetectParser()); TikaContent tikaContent = tika.extract(att.getObject(InputStream.class), mediaType); processStream(async, new TikaReceiver(tikaContent)); @@ -134,38 +138,33 @@ public class StreamingService { } } -private static String getRandomId() { -byte[] bytes = new byte[10]; -new Random().nextBytes(bytes); -return Base64Utility.encode(bytes); -} - -@SuppressWarnings("serial") private static JavaPairDStream createOutputDStream( JavaReceiverInputDStream receiverStream) { -final JavaDStream words = receiverStream.flatMap( -new FlatMapFunction() { -@Override -public Iterator call(String x) { -return Arrays.asList(x.split(" ")).iterator(); -} -}); -final JavaPairDStream pairs = words.mapToPair( -new PairFunction() { +final JavaDStream words = +receiverStream.flatMap(x -> splitInputString(x)); -@Override -public Tuple2 call(String s) { +final JavaPairDStream pairs = words.mapToPair(s -> { return new Tuple2(s, 1); -} -}); -return pairs.reduceByKey( -new Function2() { - -@Override -public Integer call(Integer i1, Integer i2) { +}); +return pairs.reduceByKey((i1, i2) -> { return i1 + i2; +}); +} +private static Iterator splitInputString(String x) { +List list = new LinkedList(); +for (String s : Arrays.asList(x.split(" "))) { +s = s.replaceAll("[\\s\n\r]", " ").trim(); +for (String s2 : Arrays.asList(s.split(" "))) { +s2 = s2.trim(); +if (s2.endsWith
[19/22] cxf git commit: CXF-5855: Introduce support for Server Sent Events. Initial implementation based on Atmosphere
http://git-wip-us.apache.org/repos/asf/cxf/blob/41733786/distribution/src/main/release/samples/jax_rs/sse_spring/README.txt -- diff --git a/distribution/src/main/release/samples/jax_rs/sse_spring/README.txt b/distribution/src/main/release/samples/jax_rs/sse_spring/README.txt new file mode 100644 index 000..7a1901f --- /dev/null +++ b/distribution/src/main/release/samples/jax_rs/sse_spring/README.txt @@ -0,0 +1,35 @@ +JAX-RS SSE Demo += + +This is a SSE version of JAX-RS Basic Demo using Spring. + +A SSE endpoint service is provided on URL http://localhost:8686/rest/api/stats/sse/{id} +where {id} is any integer value, f.e.: + + http://localhost:8686/rest/api/stats/sse/1 + +This sample includes a simple web UI using Highcharts JavaScript library to show off +randomly generated statistics about particular server, pushed to the client using +SSE JAX-RS endpoint. The UI is available at + + http://localhost:8686/static/ + +Under the hood, embedded Jetty 9 container is being used. + +Building and running the demo using maven +--- + +From the base directory of this sample (i.e., where this README file is +located), the maven pom.xml file can be used to build and run the demo. + +Using either UNIX or Windows: + + mvn install + mvn -Pserver + +To remove the target dir, run mvn clean". + +Connecting to the SSE stream +--- + +Open a web browser at: http://localhost:8686/static/ http://git-wip-us.apache.org/repos/asf/cxf/blob/41733786/distribution/src/main/release/samples/jax_rs/sse_spring/pom.xml -- diff --git a/distribution/src/main/release/samples/jax_rs/sse_spring/pom.xml b/distribution/src/main/release/samples/jax_rs/sse_spring/pom.xml new file mode 100644 index 000..fcab85d --- /dev/null +++ b/distribution/src/main/release/samples/jax_rs/sse_spring/pom.xml @@ -0,0 +1,142 @@ +http://maven.apache.org/POM/4.0.0"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; +xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd";> +4.0.0 +JAX-RS SSE Demo (Jetty 9) +JAX-RS SSE Demo (Jetty 9) +jax_rs_sse_spring + + +org.apache.cxf.samples +cxf-samples +3.2.0-SNAPSHOT +../.. + + + +UTF-8 +9.3.5.v20151012 + + + + +org.apache.cxf +cxf-rt-frontend-jaxrs +3.2.0-SNAPSHOT + + + +org.apache.cxf +cxf-rt-rs-sse +3.2.0-SNAPSHOT + + + +com.fasterxml.jackson.jaxrs +jackson-jaxrs-json-provider + + + +com.fasterxml.jackson.core +jackson-core + + + +org.jboss.weld.servlet +weld-servlet +2.2.16.Final + + + +org.jboss.weld +weld-core +2.2.16.Final + + + +org.eclipse.jetty +jetty-server + + + +org.eclipse.jetty +jetty-plus + + + +org.eclipse.jetty +apache-jsp +${cxf.jetty9.version} + + + +org.eclipse.jetty +jetty-webapp + + + +org.eclipse.jetty +jetty-webapp + + + +org.eclipse.jetty.websocket +websocket-server +${cxf.jetty9.version} + + + +org.springframework +spring-context + + + +org.springframework +spring-web + + + +org.atmosphere +atmosphere-runtime +2.4.3 + + + + + +server + +test + + +org.codehaus.mojo +exec-maven-plugin + + +test + +java + + + demo.jaxrs.sse.StatsServer + + + + + + + + + + + + +org.apache.maven.plugins +maven-compiler-plugin + +1.8 +1.8 + + + + + http://git-wip-us.apache.org/repos/asf/cxf/blob/41733786/distribution/src/main/release/samples/jax_rs/sse_spring/src/main/java/dem
[09/22] cxf git commit: Minor update to the Tika demo code
Minor update to the Tika demo code Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/1b2a3d0d Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/1b2a3d0d Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/1b2a3d0d Branch: refs/heads/master-jaxrs-2.1 Commit: 1b2a3d0d2e1a4c8f13368fd7c3e0e1cbfabd2b32 Parents: cc2341a Author: Sergey Beryozkin Authored: Thu Sep 15 11:24:06 2016 +0100 Committer: Sergey Beryozkin Committed: Thu Sep 15 11:24:06 2016 +0100 -- .../main/java/demo/jaxrs/server/StreamingService.java | 12 ++-- 1 file changed, 2 insertions(+), 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/1b2a3d0d/distribution/src/main/release/samples/jax_rs/spark/src/main/java/demo/jaxrs/server/StreamingService.java -- diff --git a/distribution/src/main/release/samples/jax_rs/spark/src/main/java/demo/jaxrs/server/StreamingService.java b/distribution/src/main/release/samples/jax_rs/spark/src/main/java/demo/jaxrs/server/StreamingService.java index 0d2fdea..000d8bc 100644 --- a/distribution/src/main/release/samples/jax_rs/spark/src/main/java/demo/jaxrs/server/StreamingService.java +++ b/distribution/src/main/release/samples/jax_rs/spark/src/main/java/demo/jaxrs/server/StreamingService.java @@ -55,11 +55,6 @@ import org.apache.spark.streaming.api.java.JavaPairDStream; import org.apache.spark.streaming.api.java.JavaReceiverInputDStream; import org.apache.spark.streaming.api.java.JavaStreamingContext; import org.apache.spark.streaming.receiver.Receiver; -import org.apache.tika.parser.AutoDetectParser; -import org.apache.tika.parser.ParseContext; -import org.apache.tika.parser.Parser; -import org.apache.tika.parser.odf.OpenDocumentParser; -import org.apache.tika.parser.pdf.PDFParser; import scala.Tuple2; @@ -71,6 +66,7 @@ public class StreamingService { MEDIA_TYPE_TABLE = new HashMap(); MEDIA_TYPE_TABLE.put("pdf", MediaType.valueOf("application/pdf")); MEDIA_TYPE_TABLE.put("odt", MediaType.valueOf("application/vnd.oasis.opendocument.text")); +MEDIA_TYPE_TABLE.put("odp", MediaType.valueOf("application/vnd.oasis.opendocument.presentation")); } private Executor executor = new ThreadPoolExecutor(5, 5, 0, TimeUnit.SECONDS, new ArrayBlockingQueue(10)); @@ -83,9 +79,6 @@ public class StreamingService { @Produces("text/plain") public void processMultipartStream(@Suspended AsyncResponse async, @Multipart("file") Attachment att) { -TikaContentExtractor tika = new TikaContentExtractor( -Arrays.asList(new PDFParser(), new OpenDocumentParser())); - MediaType mediaType = att.getContentType(); if (mediaType == null) { String fileName = att.getContentDisposition().getFilename(); @@ -97,8 +90,7 @@ public class StreamingService { } } -ParseContext context = new ParseContext(); -context.set(Parser.class, new AutoDetectParser()); +TikaContentExtractor tika = new TikaContentExtractor(); TikaContent tikaContent = tika.extract(att.getObject(InputStream.class), mediaType); processStream(async, new TikaReceiver(tikaContent));
[11/22] cxf git commit: Optional reporting of the validation exception message, patch from Vjacheslav V. Borisov applied, This closes #170
Optional reporting of the validation exception message, patch from Vjacheslav V. Borisov applied, This closes #170 Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/c1845050 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/c1845050 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/c1845050 Branch: refs/heads/master-jaxrs-2.1 Commit: c184505050812a32f0c496c6b237eff407fb1f18 Parents: c0b8470 Author: Sergey Beryozkin Authored: Thu Sep 15 21:38:28 2016 +0100 Committer: Sergey Beryozkin Committed: Thu Sep 15 21:38:28 2016 +0100 -- .../validation/ValidationExceptionMapper.java | 36 1 file changed, 30 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/c1845050/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/ValidationExceptionMapper.java -- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/ValidationExceptionMapper.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/ValidationExceptionMapper.java index b15ad0b..b0d0938 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/ValidationExceptionMapper.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/ValidationExceptionMapper.java @@ -25,6 +25,7 @@ import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; import javax.validation.ValidationException; import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.ResponseBuilder; import javax.ws.rs.ext.ExceptionMapper; import javax.ws.rs.ext.Provider; @@ -35,25 +36,48 @@ import org.apache.cxf.validation.ResponseConstraintViolationException; @Provider public class ValidationExceptionMapper implements ExceptionMapper< ValidationException > { private static final Logger LOG = LogUtils.getL7dLogger(ValidationExceptionMapper.class); +private boolean addMessageToResponse; @Override public Response toResponse(ValidationException exception) { Response.Status errorStatus = Response.Status.INTERNAL_SERVER_ERROR; if (exception instanceof ConstraintViolationException) { +StringBuilder responseBody = addMessageToResponse ? new StringBuilder() : null; + final ConstraintViolationException constraint = (ConstraintViolationException) exception; for (final ConstraintViolation< ? > violation: constraint.getConstraintViolations()) { -LOG.log(Level.WARNING, -violation.getRootBeanClass().getSimpleName() -+ "." + violation.getPropertyPath() -+ ": " + violation.getMessage()); +String message = getMessage(violation); +if (responseBody != null) { +responseBody.append(message).append("\n"); +} +LOG.log(Level.WARNING, message); } if (!(constraint instanceof ResponseConstraintViolationException)) { errorStatus = Response.Status.BAD_REQUEST; } -} -return JAXRSUtils.toResponse(errorStatus); +ResponseBuilder rb = JAXRSUtils.toResponseBuilder(errorStatus); +if (responseBody != null) { +rb.entity(responseBody); +} +return rb.build(); +} else { +return JAXRSUtils.toResponse(errorStatus); +} +} +private String getMessage(ConstraintViolation violation) { +return violation.getRootBeanClass().getSimpleName() ++ "." + violation.getPropertyPath() ++ ": " + violation.getMessage(); } +/** + * Controls whether to add a constraint validation message to Response or not + * @param addMessageToResponse add a constraint validation message to Response + */ +public void setAddMessageToResponse(boolean addMessageToResponse) { +this.addMessageToResponse = addMessageToResponse; +} + }
[06/22] cxf git commit: Fixing a typo in the OAuth2 config service
Fixing a typo in the OAuth2 config service Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/5eb67e15 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/5eb67e15 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/5eb67e15 Branch: refs/heads/master-jaxrs-2.1 Commit: 5eb67e15938ece67e7a0f518d05b1ff653690f0f Parents: f7f017f Author: Sergey Beryozkin Authored: Wed Sep 14 13:52:31 2016 +0100 Committer: Sergey Beryozkin Committed: Wed Sep 14 13:52:31 2016 +0100 -- .../rs/security/oauth2/services/AuthorizationMetadataService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/5eb67e15/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/services/AuthorizationMetadataService.java -- diff --git a/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/services/AuthorizationMetadataService.java b/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/services/AuthorizationMetadataService.java index cfd566b..97c7a53 100644 --- a/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/services/AuthorizationMetadataService.java +++ b/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/services/AuthorizationMetadataService.java @@ -46,6 +46,7 @@ public class AuthorizationMetadataService { prepareConfigurationData(cfg, baseUri); JsonMapObjectReaderWriter writer = new JsonMapObjectReaderWriter(); +writer.setFormat(true); return writer.toJson(cfg); } @@ -71,7 +72,7 @@ public class AuthorizationMetadataService { } protected static String calculateEndpointAddress(String endpointAddress, String baseUri, String defRelAddress) { -endpointAddress = endpointAddress == null ? endpointAddress : defRelAddress; +endpointAddress = endpointAddress != null ? endpointAddress : defRelAddress; if (endpointAddress.startsWith("https")) { return endpointAddress; } else {
[17/22] cxf git commit: CXF-5855: Introduce support for Server Sent Events. Initial implementation based on Atmosphere
http://git-wip-us.apache.org/repos/asf/cxf/blob/41733786/distribution/src/main/release/samples/jax_rs/sse_spring/src/main/resources/web-ui/javascripts/jquery-1.9.0.min.js -- diff --git a/distribution/src/main/release/samples/jax_rs/sse_spring/src/main/resources/web-ui/javascripts/jquery-1.9.0.min.js b/distribution/src/main/release/samples/jax_rs/sse_spring/src/main/resources/web-ui/javascripts/jquery-1.9.0.min.js new file mode 100644 index 000..50d1b22 --- /dev/null +++ b/distribution/src/main/release/samples/jax_rs/sse_spring/src/main/resources/web-ui/javascripts/jquery-1.9.0.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.9.0 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license */(function(e,t){"use strict";function n(e){var t=e.length,n=st.type(e);return st.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e){var t=Tt[e]={};return st.each(e.match(lt)||[],function(e,n){t[n]=!0}),t}function i(e,n,r,i){if(st.acceptData(e)){var o,a,s=st.expando,u="string"==typeof n,l=e.nodeType,c=l?st.cache:e,f=l?e[s]:e[s]&&s;if(f&&c[f]&&(i||c[f].data)||!u||r!==t)return f||(l?e[s]=f=K.pop()||st.guid++:f=s),c[f]||(c[f]={},l||(c[f].toJSON=st.noop)),("object"==typeof n||"function"==typeof n)&&(i?c[f]=st.extend(c[f],n):c[f].data=st.extend(c[f].data,n)),o=c[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[st.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[st.camelCase(n)])):a=o,a}}function o(e,t,n){if(st.acceptData(e)){var r,i,o,a=e.nodeType,u=a?st.cache:e,l=a?e[st.expando]:st.expando;if(u[l]){if(t&&(r=n?u[l]:u[l].data)){st.isArray(t)?t=t.conc at(st.map(t,st.camelCase)):t in r?t=[t]:(t=st.camelCase(t),t=t in r?[t]:t.split(" "));for(i=0,o=t.length;o>i;i++)delete r[t[i]];if(!(n?s:st.isEmptyObject)(r))return}(n||(delete u[l].data,s(u[l])))&&(a?st.cleanData([e],!0):st.support.deleteExpando||u!=u.window?delete u[l]:u[l]=null)}}}function a(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(Nt,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:wt.test(r)?st.parseJSON(r):r}catch(o){}st.data(e,n,r)}else r=t}return r}function s(e){var t;for(t in e)if(("data"!==t||!st.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function u(){return!0}function l(){return!1}function c(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function f(e,t,n){if(t=t||0,st.isFunction(t))return st.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return st.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=st.grep(e,function(e){return 1===e.nodeType});if(Wt.test(t))return st.filter(t,r,!n);t=st.filter(t,r)}return st.grep(e,function(e){return st.inArray(e,t)>=0===n})}function p(e){var t=zt.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function d(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function h(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function g(e){var t=nn.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function m(e,t){for(var n,r=0;null!=(n=e[r]);r++)st._data(n,"globalEval",!t||st._data(t[r],"globalEval"))}function y(e,t){if(1===t.nodeType&&st.hasData(e)){var n,r,i,o=st._data(e),a=st._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)st.event.add(t,n,s[n][r])}a.data&&(a.data=st.extend({},a.data))}}function v(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!st.support.noCloneEvent&&t[st.ex pando]){r=st._data(t);for(i in r.events)st.removeEvent(t,i,r.handle);t.removeAttribute(st.expando)}"script"===n&&t.text!==e.text?(h(t).text=e.text,g(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),st.support.html5Clone&&e.innerHTML&&!st.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Zt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function b(e,n){var r,i,o=0,a=e.getElementsByTagName!==t?e.getElementsByTagName(n||"*"):e.querySelectorAll!==t?e.querySelectorAll(n||"*"):t;if(!a)for(a=[],r=e.childNodes||e;null!=(i=r[o]);o++)!n||st.nodeName(i,n)?a.push(i):st.merge(a,b(i,n));return n===t||n&&st.nodeName(e,n)?st.merge([e],a):a}function x(e){Zt.test(e.type)&&(e.defaultChecked=e.checked)}function T(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Nn.length;i--;)if(t=Nn[i]+n,t in e)return t;return r}function w(e,t){return e=t||e,"none"===st.css(e,"display")||!st.contains(e.ownerDocument,e)}function N(e,t){for(var n,r=[],i=0,o=e.length;o>i;i++)n=e[i],n.style&&(r[i]=st._data(n,"olddisplay"),t?(r[i]||"none"!==n.style.display||(n.style.display="
[21/22] cxf git commit: CXF-5855: Introduce support for Server Sent Events. Initial implementation based on Atmosphere
http://git-wip-us.apache.org/repos/asf/cxf/blob/41733786/distribution/src/main/release/samples/jax_rs/sse_cdi/src/main/resources/web-ui/javascripts/highcharts.js -- diff --git a/distribution/src/main/release/samples/jax_rs/sse_cdi/src/main/resources/web-ui/javascripts/highcharts.js b/distribution/src/main/release/samples/jax_rs/sse_cdi/src/main/resources/web-ui/javascripts/highcharts.js new file mode 100644 index 000..327d865 --- /dev/null +++ b/distribution/src/main/release/samples/jax_rs/sse_cdi/src/main/resources/web-ui/javascripts/highcharts.js @@ -0,0 +1,270 @@ +/* + Highcharts JS v3.0.1 (2013-04-09) + + (c) 2009-2013 Torstein Hønsi + + License: www.highcharts.com/license +*/ +(function(){function v(a,b){var c;a||(a={});for(c in b)a[c]=b[c];return a}function y(){var a,b=arguments.length,c={},d=function(a,b){var c,h;for(h in b)b.hasOwnProperty(h)&&(c=b[h],typeof a!=="object"&&(a={}),a[h]=c&&typeof c==="object"&&Object.prototype.toString.call(c)!=="[object Array]"&&typeof c.nodeType!=="number"?d(a[h]||{},c):b[h]);return a};for(a=0;a3?c.length%3:0;return e+(g?c.substr(0,g)+d:"")+c.substr(g).replace(/(\d{3})(?=\d)/g,"$1"+d)+(f?b+Q(a-c).toFixed(f).slice(2):"")}function ua(a,b){return Array((b||2)+1-String(a).length).join(0)+a}function Ea(a,b){for(var c="{",d=!1,e,f,g,h,i,j=[];(c=a.indexOf(c))!==-1;){e=a.slice(0,c);if(d){f=e.split(":");g=f.shift().split(".");i=g.length;e=b;for(h=0;h< +i;h++)e=e[g[h]];if(f.length)f=f.join(":"),g=/\.([0-9])/,h=N.lang,i=void 0,/f$/.test(f)?(i=(i=f.match(g))?i[1]:-1,e=Na(e,i,h.decimalPoint,f.indexOf(",")>-1?h.thousandsSep:"")):e=Ua(f,e)}j.push(e);a=a.slice(c+1);c=(d=!d)?"}":"{"}j.push(a);return j.join("")}function ib(a,b,c,d){var e,c=o(c,1);e=a/c;b||(b=[1,2,2.5,5,10],d&&d.allowDecimals===!1&&(c===1?b=[1,2,5,10]:c<=0.1&&(b=[1/c])));for(d=0;d=E[jb]&& +(i.setMilliseconds(0),i.setSeconds(j>=E[Va]?0:k*T(i.getSeconds()/k)));if(j>=E[Va])i[Bb](j>=E[Oa]?0:k*T(i[kb]()/k));if(j>=E[Oa])i[Cb](j>=E[oa]?0:k*T(i[lb]()/k));if(j>=E[oa])i[mb](j>=E[Pa]?1:k*T(i[Qa]()/k));j>=E[Pa]&&(i[Db](j>=E[va]?0:k*T(i[Xa]()/k)),h=i[Ya]());j>=E[va]&&(h-=h%k,i[Eb](h));if(j===E[Wa])i[mb](i[Qa]()-i[nb]()+o(d,1));b=1;h=i[Ya]();for(var d=i.getTime(),m=i[Xa](),l=i[Qa](),i=g?0:(864E5+i.getTimezoneOffset()*6E4)%864E5;dc&&(c=a[b]);return c}function Ga(a, +b){for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destroy(),delete a[c]}function Ra(a){$a||($a=U(wa));a&&$a.appendChild(a);$a.innerHTML=""}function qa(a,b){var c="Highcharts error #"+a+": www.highcharts.com/errors/"+a;if(b)throw c;else O.console&&console.log(c)}function ia(a){return parseFloat(a.toPrecision(14))}function Ha(a,b){xa=o(a,b.animation)}function Hb(){var a=N.global.useUTC,b=a?"getUTC":"get",c=a?"setUTC":"set";Za=a?Date.UTC:function(a,b,c,g,h,i){return(new Date(a,b,o(c,1),o(g,0),o(h, +0),o(i,0))).getTime()};kb=b+"Minutes";lb=b+"Hours";nb=b+"Day";Qa=b+"Date";Xa=b+"Month";Ya=b+"FullYear";Bb=c+"Minutes";Cb=c+"Hours";mb=c+"Date";Db=c+"Month";Eb=c+"FullYear"}function ra(){}function Ia(a,b,c,d){this.axis=a;this.pos=b;this.type=c||"";this.isNew=!0;!c&&!d&&this.addLabel()}function ob(a,b){this.axis=a;if(b)this.options=b,this.id=b.id}function Ib(a,b,c,d,e,f){var g=a.chart.inverted;this.axis=a;this.isNegative=c;this.options=b;this.x=d;this.stack=e;this.percent=f==="percent";this.alignOptions= +{align:b.align||(g?c?"left":"right":"center"),verticalAlign:b.verticalAlign||(g?"middle":c?"bottom":"top"),y:o(b.y,g?4:c?14:-6),x:o(b.x,g?c?-6:6:0)};this.textAlign=b.textAlign||(g?c?"right":"left":"center")}function ab(){this.init.apply(this,arguments)}function pb(){this.init.apply(this,arguments)}function qb(a,b){this.init(a,b)}function rb(a,b){this.init(a,b)}function sb(){this.init.apply(this,arguments)}var x,z=document,O=window,I=Math,t=I.round,T=I.floor,ja=I.ceil,q=I.max,K=I.min,Q=I.abs,Y=I.cos, +ca=I.sin,Ja=I.PI,bb=Ja*2/360,ya=navigator.userAgent,Jb=O.opera,Da=/msie/i.test(ya)&&!Jb,cb=z.documentMode===8,db=/AppleWebKit/.test(ya),eb=/Firefox/.test(ya),Kb=/(Mobile|Android|Windows Phone)/.test(ya),sa="http://www.w3.org/2000/svg",Z=!!z.createElementNS&&!!z.createElementNS(sa,"svg").createSVGRect,Rb=eb&&parseInt(ya.split("Firefox/")[1],10)<4,$=!Z&&!Da&&!!z.createElement("canvas").getContext,Sa,fb=z.documentElement.ontouchstart!==x,Lb={},tb=0,$a,N,Ua,xa,ub,E,ta=function(){},za=[],wa="div",S="none", +Mb="rgba(192,192,192,"+(Z?1.0E-4:0.002)+")",zb="millisecond",jb="second",Va="minute",Oa="hour",oa="day",Wa="week",Pa="month",va="year",Nb="stroke-width",Za,kb,lb,nb,Qa,Xa,Ya,Bb,Cb,mb,Db,Eb,aa={};O.Highcharts=O.Highcharts?qa(16,!0):{};Ua=function(a,b,c){if(!r(b)||isNaN(b))return"Invalid date";var a=o(a,"%Y-%m-%d %H:%M:%S"),d=new Date(b),e,f=d[lb](),g=d[nb](),h=d[Qa](),i=d[Xa](),j=d[Ya](),k=N.lang,m=k.weekdays,d=v({a:m[g].substr(0,3),A:m[g],d:ua(h),e:h,b:k.shortMonths[i],B:k.months[i],m:ua(i+1),y:j.toString().substr(2, +2),Y:j,H:ua(f),I:ua(f%12||12),l:f%12||12,M:ua(d[kb]()),
[12/22] cxf git commit: CXF-5855: Introduce support for Server Sent Events. Initial implementation based on Atmosphere
http://git-wip-us.apache.org/repos/asf/cxf/blob/41733786/systests/rs-sse/src/test/java/org/apache/cxf/systest/jaxrs/sse/Book.java -- diff --git a/systests/rs-sse/src/test/java/org/apache/cxf/systest/jaxrs/sse/Book.java b/systests/rs-sse/src/test/java/org/apache/cxf/systest/jaxrs/sse/Book.java new file mode 100644 index 000..67322f8 --- /dev/null +++ b/systests/rs-sse/src/test/java/org/apache/cxf/systest/jaxrs/sse/Book.java @@ -0,0 +1,65 @@ +/** + * 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.cxf.systest.jaxrs.sse; + +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; + +public class Book { +private String name; +private Integer id; + +public Book() { +} + +public Book(Integer id) { +this.id = id; +} + +public Book(String name, Integer id) { +this.name = name; +this.id = id; +} + +public void setName(String n) { +name = n; +} + +public String getName() { +return name; +} + +public void setId(Integer i) { +id = i; +} + +public Integer getId() { +return id; +} + +@Override +public int hashCode() { +return HashCodeBuilder.reflectionHashCode(this); +} + +@Override +public boolean equals(Object obj) { +return EqualsBuilder.reflectionEquals(this, obj); +} +} http://git-wip-us.apache.org/repos/asf/cxf/blob/41733786/systests/rs-sse/src/test/java/org/apache/cxf/systest/jaxrs/sse/BookStore.java -- diff --git a/systests/rs-sse/src/test/java/org/apache/cxf/systest/jaxrs/sse/BookStore.java b/systests/rs-sse/src/test/java/org/apache/cxf/systest/jaxrs/sse/BookStore.java new file mode 100644 index 000..6af5a1f --- /dev/null +++ b/systests/rs-sse/src/test/java/org/apache/cxf/systest/jaxrs/sse/BookStore.java @@ -0,0 +1,128 @@ +/** + * 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.cxf.systest.jaxrs.sse; + +import java.io.IOException; +import java.util.Arrays; +import java.util.Collection; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; + +import javax.ws.rs.DefaultValue; +import javax.ws.rs.GET; +import javax.ws.rs.HeaderParam; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.HttpHeaders; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.sse.OutboundSseEvent; +import javax.ws.rs.sse.SseBroadcaster; +import javax.ws.rs.sse.SseContext; +import javax.ws.rs.sse.SseEventOutput; + +@Path("/api/bookstore") +public class BookStore { +private final CountDownLatch latch = new CountDownLatch(2); +private final AtomicReference broadcaster = +new AtomicReference(); + +private static OutboundSseEvent createStatsEvent(final OutboundSseEvent.Builder builder, final int eventId) { +return builder +.id(Integer.toString(eventId)) +.data(Book.class, new Book("New Book #" + eventId, eventId)) +.mediaType(MediaType.APPLICATION_JSON_TYPE) +.build(); +} + +@GET +@Produces(MediaType.APPLICATION_JSON) +public Co
[18/22] cxf git commit: CXF-5855: Introduce support for Server Sent Events. Initial implementation based on Atmosphere
http://git-wip-us.apache.org/repos/asf/cxf/blob/41733786/distribution/src/main/release/samples/jax_rs/sse_spring/src/main/resources/web-ui/javascripts/highcharts.js -- diff --git a/distribution/src/main/release/samples/jax_rs/sse_spring/src/main/resources/web-ui/javascripts/highcharts.js b/distribution/src/main/release/samples/jax_rs/sse_spring/src/main/resources/web-ui/javascripts/highcharts.js new file mode 100644 index 000..327d865 --- /dev/null +++ b/distribution/src/main/release/samples/jax_rs/sse_spring/src/main/resources/web-ui/javascripts/highcharts.js @@ -0,0 +1,270 @@ +/* + Highcharts JS v3.0.1 (2013-04-09) + + (c) 2009-2013 Torstein Hønsi + + License: www.highcharts.com/license +*/ +(function(){function v(a,b){var c;a||(a={});for(c in b)a[c]=b[c];return a}function y(){var a,b=arguments.length,c={},d=function(a,b){var c,h;for(h in b)b.hasOwnProperty(h)&&(c=b[h],typeof a!=="object"&&(a={}),a[h]=c&&typeof c==="object"&&Object.prototype.toString.call(c)!=="[object Array]"&&typeof c.nodeType!=="number"?d(a[h]||{},c):b[h]);return a};for(a=0;a3?c.length%3:0;return e+(g?c.substr(0,g)+d:"")+c.substr(g).replace(/(\d{3})(?=\d)/g,"$1"+d)+(f?b+Q(a-c).toFixed(f).slice(2):"")}function ua(a,b){return Array((b||2)+1-String(a).length).join(0)+a}function Ea(a,b){for(var c="{",d=!1,e,f,g,h,i,j=[];(c=a.indexOf(c))!==-1;){e=a.slice(0,c);if(d){f=e.split(":");g=f.shift().split(".");i=g.length;e=b;for(h=0;h< +i;h++)e=e[g[h]];if(f.length)f=f.join(":"),g=/\.([0-9])/,h=N.lang,i=void 0,/f$/.test(f)?(i=(i=f.match(g))?i[1]:-1,e=Na(e,i,h.decimalPoint,f.indexOf(",")>-1?h.thousandsSep:"")):e=Ua(f,e)}j.push(e);a=a.slice(c+1);c=(d=!d)?"}":"{"}j.push(a);return j.join("")}function ib(a,b,c,d){var e,c=o(c,1);e=a/c;b||(b=[1,2,2.5,5,10],d&&d.allowDecimals===!1&&(c===1?b=[1,2,5,10]:c<=0.1&&(b=[1/c])));for(d=0;d=E[jb]&& +(i.setMilliseconds(0),i.setSeconds(j>=E[Va]?0:k*T(i.getSeconds()/k)));if(j>=E[Va])i[Bb](j>=E[Oa]?0:k*T(i[kb]()/k));if(j>=E[Oa])i[Cb](j>=E[oa]?0:k*T(i[lb]()/k));if(j>=E[oa])i[mb](j>=E[Pa]?1:k*T(i[Qa]()/k));j>=E[Pa]&&(i[Db](j>=E[va]?0:k*T(i[Xa]()/k)),h=i[Ya]());j>=E[va]&&(h-=h%k,i[Eb](h));if(j===E[Wa])i[mb](i[Qa]()-i[nb]()+o(d,1));b=1;h=i[Ya]();for(var d=i.getTime(),m=i[Xa](),l=i[Qa](),i=g?0:(864E5+i.getTimezoneOffset()*6E4)%864E5;dc&&(c=a[b]);return c}function Ga(a, +b){for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destroy(),delete a[c]}function Ra(a){$a||($a=U(wa));a&&$a.appendChild(a);$a.innerHTML=""}function qa(a,b){var c="Highcharts error #"+a+": www.highcharts.com/errors/"+a;if(b)throw c;else O.console&&console.log(c)}function ia(a){return parseFloat(a.toPrecision(14))}function Ha(a,b){xa=o(a,b.animation)}function Hb(){var a=N.global.useUTC,b=a?"getUTC":"get",c=a?"setUTC":"set";Za=a?Date.UTC:function(a,b,c,g,h,i){return(new Date(a,b,o(c,1),o(g,0),o(h, +0),o(i,0))).getTime()};kb=b+"Minutes";lb=b+"Hours";nb=b+"Day";Qa=b+"Date";Xa=b+"Month";Ya=b+"FullYear";Bb=c+"Minutes";Cb=c+"Hours";mb=c+"Date";Db=c+"Month";Eb=c+"FullYear"}function ra(){}function Ia(a,b,c,d){this.axis=a;this.pos=b;this.type=c||"";this.isNew=!0;!c&&!d&&this.addLabel()}function ob(a,b){this.axis=a;if(b)this.options=b,this.id=b.id}function Ib(a,b,c,d,e,f){var g=a.chart.inverted;this.axis=a;this.isNegative=c;this.options=b;this.x=d;this.stack=e;this.percent=f==="percent";this.alignOptions= +{align:b.align||(g?c?"left":"right":"center"),verticalAlign:b.verticalAlign||(g?"middle":c?"bottom":"top"),y:o(b.y,g?4:c?14:-6),x:o(b.x,g?c?-6:6:0)};this.textAlign=b.textAlign||(g?c?"right":"left":"center")}function ab(){this.init.apply(this,arguments)}function pb(){this.init.apply(this,arguments)}function qb(a,b){this.init(a,b)}function rb(a,b){this.init(a,b)}function sb(){this.init.apply(this,arguments)}var x,z=document,O=window,I=Math,t=I.round,T=I.floor,ja=I.ceil,q=I.max,K=I.min,Q=I.abs,Y=I.cos, +ca=I.sin,Ja=I.PI,bb=Ja*2/360,ya=navigator.userAgent,Jb=O.opera,Da=/msie/i.test(ya)&&!Jb,cb=z.documentMode===8,db=/AppleWebKit/.test(ya),eb=/Firefox/.test(ya),Kb=/(Mobile|Android|Windows Phone)/.test(ya),sa="http://www.w3.org/2000/svg",Z=!!z.createElementNS&&!!z.createElementNS(sa,"svg").createSVGRect,Rb=eb&&parseInt(ya.split("Firefox/")[1],10)<4,$=!Z&&!Da&&!!z.createElement("canvas").getContext,Sa,fb=z.documentElement.ontouchstart!==x,Lb={},tb=0,$a,N,Ua,xa,ub,E,ta=function(){},za=[],wa="div",S="none", +Mb="rgba(192,192,192,"+(Z?1.0E-4:0.002)+")",zb="millisecond",jb="second",Va="minute",Oa="hour",oa="day",Wa="week",Pa="month",va="year",Nb="stroke-width",Za,kb,lb,nb,Qa,Xa,Ya,Bb,Cb,mb,Db,Eb,aa={};O.Highcharts=O.Highcharts?qa(16,!0):{};Ua=function(a,b,c){if(!r(b)||isNaN(b))return"Invalid date";var a=o(a,"%Y-%m-%d %H:%M:%S"),d=new Date(b),e,f=d[lb](),g=d[nb](),h=d[Qa](),i=d[Xa](),j=d[Ya](),k=N.lang,m=k.weekdays,d=v({a:m[g].substr(0,3),A:m[g],d:ua(h),e:h,b:k.shortMonths[i],B:k.months[i],m:ua(i+1),y:j.toString().substr(2, +2),Y:j,H:ua(f),I:ua(f%12||12),l:f%12||12,M:
[14/22] cxf git commit: CXF-5855: Introduce support for Server Sent Events. Initial implementation based on Atmosphere
http://git-wip-us.apache.org/repos/asf/cxf/blob/41733786/distribution/src/main/release/samples/jax_rs/sse_tomcat/src/main/resources/web-ui/javascripts/jquery-1.9.0.min.js -- diff --git a/distribution/src/main/release/samples/jax_rs/sse_tomcat/src/main/resources/web-ui/javascripts/jquery-1.9.0.min.js b/distribution/src/main/release/samples/jax_rs/sse_tomcat/src/main/resources/web-ui/javascripts/jquery-1.9.0.min.js new file mode 100644 index 000..50d1b22 --- /dev/null +++ b/distribution/src/main/release/samples/jax_rs/sse_tomcat/src/main/resources/web-ui/javascripts/jquery-1.9.0.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.9.0 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license */(function(e,t){"use strict";function n(e){var t=e.length,n=st.type(e);return st.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e){var t=Tt[e]={};return st.each(e.match(lt)||[],function(e,n){t[n]=!0}),t}function i(e,n,r,i){if(st.acceptData(e)){var o,a,s=st.expando,u="string"==typeof n,l=e.nodeType,c=l?st.cache:e,f=l?e[s]:e[s]&&s;if(f&&c[f]&&(i||c[f].data)||!u||r!==t)return f||(l?e[s]=f=K.pop()||st.guid++:f=s),c[f]||(c[f]={},l||(c[f].toJSON=st.noop)),("object"==typeof n||"function"==typeof n)&&(i?c[f]=st.extend(c[f],n):c[f].data=st.extend(c[f].data,n)),o=c[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[st.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[st.camelCase(n)])):a=o,a}}function o(e,t,n){if(st.acceptData(e)){var r,i,o,a=e.nodeType,u=a?st.cache:e,l=a?e[st.expando]:st.expando;if(u[l]){if(t&&(r=n?u[l]:u[l].data)){st.isArray(t)?t=t.conc at(st.map(t,st.camelCase)):t in r?t=[t]:(t=st.camelCase(t),t=t in r?[t]:t.split(" "));for(i=0,o=t.length;o>i;i++)delete r[t[i]];if(!(n?s:st.isEmptyObject)(r))return}(n||(delete u[l].data,s(u[l])))&&(a?st.cleanData([e],!0):st.support.deleteExpando||u!=u.window?delete u[l]:u[l]=null)}}}function a(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(Nt,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:wt.test(r)?st.parseJSON(r):r}catch(o){}st.data(e,n,r)}else r=t}return r}function s(e){var t;for(t in e)if(("data"!==t||!st.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function u(){return!0}function l(){return!1}function c(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function f(e,t,n){if(t=t||0,st.isFunction(t))return st.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return st.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=st.grep(e,function(e){return 1===e.nodeType});if(Wt.test(t))return st.filter(t,r,!n);t=st.filter(t,r)}return st.grep(e,function(e){return st.inArray(e,t)>=0===n})}function p(e){var t=zt.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function d(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function h(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function g(e){var t=nn.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function m(e,t){for(var n,r=0;null!=(n=e[r]);r++)st._data(n,"globalEval",!t||st._data(t[r],"globalEval"))}function y(e,t){if(1===t.nodeType&&st.hasData(e)){var n,r,i,o=st._data(e),a=st._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)st.event.add(t,n,s[n][r])}a.data&&(a.data=st.extend({},a.data))}}function v(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!st.support.noCloneEvent&&t[st.ex pando]){r=st._data(t);for(i in r.events)st.removeEvent(t,i,r.handle);t.removeAttribute(st.expando)}"script"===n&&t.text!==e.text?(h(t).text=e.text,g(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),st.support.html5Clone&&e.innerHTML&&!st.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Zt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function b(e,n){var r,i,o=0,a=e.getElementsByTagName!==t?e.getElementsByTagName(n||"*"):e.querySelectorAll!==t?e.querySelectorAll(n||"*"):t;if(!a)for(a=[],r=e.childNodes||e;null!=(i=r[o]);o++)!n||st.nodeName(i,n)?a.push(i):st.merge(a,b(i,n));return n===t||n&&st.nodeName(e,n)?st.merge([e],a):a}function x(e){Zt.test(e.type)&&(e.defaultChecked=e.checked)}function T(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Nn.length;i--;)if(t=Nn[i]+n,t in e)return t;return r}function w(e,t){return e=t||e,"none"===st.css(e,"display")||!st.contains(e.ownerDocument,e)}function N(e,t){for(var n,r=[],i=0,o=e.length;o>i;i++)n=e[i],n.style&&(r[i]=st._data(n,"olddisplay"),t?(r[i]||"none"!==n.style.display||(n.style.display="
[02/22] cxf git commit: [CXF-6800] Add a feature for undertow transport and make it usable with the pax-tipi osgifi-ed undertow bundles
[CXF-6800] Add a feature for undertow transport and make it usable with the pax-tipi osgifi-ed undertow bundles Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/269e9675 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/269e9675 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/269e9675 Branch: refs/heads/master-jaxrs-2.1 Commit: 269e96752b11aeb3e911da76bd3074d768860968 Parents: f5fabb8 Author: Guillaume Nodet Authored: Mon Sep 12 16:35:02 2016 +0200 Committer: Guillaume Nodet Committed: Mon Sep 12 16:35:02 2016 +0200 -- osgi/karaf/features/src/main/resources/features.xml | 5 + parent/pom.xml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/269e9675/osgi/karaf/features/src/main/resources/features.xml -- diff --git a/osgi/karaf/features/src/main/resources/features.xml b/osgi/karaf/features/src/main/resources/features.xml index 196d823..af7952c 100644 --- a/osgi/karaf/features/src/main/resources/features.xml +++ b/osgi/karaf/features/src/main/resources/features.xml @@ -176,6 +176,11 @@ mvn:io.netty/netty-codec-http/${cxf.netty.version} mvn:org.apache.cxf/cxf-rt-transports-http-netty-server/${project.version} + +cxf-http +pax-http-undertow +mvn:org.apache.cxf/cxf-rt-transports-http-undertow/${project.version} + cxf-wsdl mvn:org.apache.cxf/cxf-rt-bindings-xml/${project.version} http://git-wip-us.apache.org/repos/asf/cxf/blob/269e9675/parent/pom.xml -- diff --git a/parent/pom.xml b/parent/pom.xml index bf81458..b41a358 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -123,7 +123,7 @@ ${cxf.jetty9.version} [8.1,10) 1.3.7.Final -[1.3.7, 1.4) +[1.3, 1.4) 1.2.6 4.12 1.3
[03/22] cxf git commit: STS configuration cleanup
STS configuration cleanup Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/f564ac8d Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/f564ac8d Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/f564ac8d Branch: refs/heads/master-jaxrs-2.1 Commit: f564ac8d84a7dcc32c2f01be666deb790b97e886 Parents: 269e967 Author: Colm O hEigeartaigh Authored: Mon Sep 12 15:35:35 2016 +0100 Committer: Colm O hEigeartaigh Committed: Mon Sep 12 15:55:59 2016 +0100 -- .../org/apache/cxf/systest/sts/deployment/sts/realms.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/f564ac8d/services/sts/systests/basic/src/test/resources/org/apache/cxf/systest/sts/deployment/sts/realms.xml -- diff --git a/services/sts/systests/basic/src/test/resources/org/apache/cxf/systest/sts/deployment/sts/realms.xml b/services/sts/systests/basic/src/test/resources/org/apache/cxf/systest/sts/deployment/sts/realms.xml index 9fb8462..e6570c6 100644 --- a/services/sts/systests/basic/src/test/resources/org/apache/cxf/systest/sts/deployment/sts/realms.xml +++ b/services/sts/systests/basic/src/test/resources/org/apache/cxf/systest/sts/deployment/sts/realms.xml @@ -40,8 +40,8 @@ - - + +
[05/22] cxf git commit: Updating BouncyCastle
Updating BouncyCastle Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/f7f017f2 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/f7f017f2 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/f7f017f2 Branch: refs/heads/master-jaxrs-2.1 Commit: f7f017f2187d59369a7b94bb053f1e297972dce7 Parents: 0d5577a Author: Colm O hEigeartaigh Authored: Tue Sep 13 13:58:10 2016 +0100 Committer: Colm O hEigeartaigh Committed: Tue Sep 13 13:58:22 2016 +0100 -- parent/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/f7f017f2/parent/pom.xml -- diff --git a/parent/pom.xml b/parent/pom.xml index b41a358..afd3a59 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -72,7 +72,7 @@ 2.4.3 [2.4,3.0) 1.2.14 -1.54 +1.55 2.2_2 [2.1.3,3.0.0) 1.1.0
[01/22] cxf git commit: Optional 'kid' reporting for the keys loaded from JKS too [Forced Update!]
Repository: cxf Updated Branches: refs/heads/master-jaxrs-2.1 9a5a54aca -> 41733786b (forced update) Optional 'kid' reporting for the keys loaded from JKS too Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/f5fabb85 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/f5fabb85 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/f5fabb85 Branch: refs/heads/master-jaxrs-2.1 Commit: f5fabb85a6c245e6920b1e88bdfdae332be8369b Parents: 9e41348 Author: Sergey Beryozkin Authored: Mon Sep 12 12:58:38 2016 +0100 Committer: Sergey Beryozkin Committed: Mon Sep 12 12:58:38 2016 +0100 -- .../cxf/rs/security/jose/jws/JwsUtils.java | 19 +-- .../cxf/rs/security/jose/jws/JwsUtilsTest.java | 16 2 files changed, 29 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/f5fabb85/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java -- diff --git a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java index c7f5a54..4def701 100644 --- a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java +++ b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java @@ -317,9 +317,13 @@ public final class JwsUtils { public static JwsSignatureProvider loadSignatureProvider(Properties props, JwsHeaders headers) { return loadSignatureProvider(PhaseInterceptorChain.getCurrentMessage(), - props, headers, false); + props, headers); +} +public static JwsSignatureProvider loadSignatureProvider(Message m, + Properties props, + JwsHeaders headers) { +return loadSignatureProvider(m, props, headers, false); } - public static JwsSignatureProvider loadSignatureProvider(String propertiesLoc, Bus bus) { Properties props = loadSignatureProperties(propertiesLoc, bus); return loadSignatureProvider(props, null); @@ -335,7 +339,9 @@ public final class JwsUtils { m, JoseConstants.RSSEC_SIGNATURE_INCLUDE_CERT, false); boolean includeCertSha1 = headers != null && MessageUtils.getContextualBoolean( m, JoseConstants.RSSEC_SIGNATURE_INCLUDE_CERT_SHA1, false); - +boolean includeKeyId = headers != null && MessageUtils.getContextualBoolean( +m, JoseConstants.RSSEC_SIGNATURE_INCLUDE_KEY_ID, false); + if (JoseConstants.HEADER_JSON_WEB_KEY.equals(props.get(JoseConstants.RSSEC_KEY_STORE_TYPE))) { JsonWebKey jwk = JwkUtils.loadJsonWebKey(m, props, KeyOperation.SIGN); if (jwk != null) { @@ -347,8 +353,6 @@ public final class JwsUtils { boolean includePublicKey = headers != null && MessageUtils.getContextualBoolean( m, JoseConstants.RSSEC_SIGNATURE_INCLUDE_PUBLIC_KEY, false); -boolean includeKeyId = headers != null && MessageUtils.getContextualBoolean( -m, JoseConstants.RSSEC_SIGNATURE_INCLUDE_KEY_ID, false); if (includeCert) { JwkUtils.includeCertChain(jwk, headers, signatureAlgo.getJwaName()); @@ -362,7 +366,7 @@ public final class JwsUtils { if (includePublicKey) { JwkUtils.includePublicKey(jwk, headers, signatureAlgo.getJwaName()); } -if (includeKeyId && jwk.getKeyId() != null && headers != null) { +if (includeKeyId && jwk.getKeyId() != null) { headers.setKeyId(jwk.getKeyId()); } } @@ -382,6 +386,9 @@ public final class JwsUtils { headers.setX509Thumbprint(digest); } } +if (includeKeyId && props.containsKey(JoseConstants.RSSEC_KEY_STORE_ALIAS)) { + headers.setKeyId(props.getProperty(JoseConstants.RSSEC_KEY_STORE_ALIAS)); +} } } if (theSigProvider == null && !ignoreNullProvider) { http://git-wip-us.apache.org/repos/asf/cxf/blob/f5fabb85/rt/rs/security/jose-parent/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsUtils
[08/22] cxf git commit: Updating TikaContentExtractor to support the embedded attachments
Updating TikaContentExtractor to support the embedded attachments Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/cc2341a4 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/cc2341a4 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/cc2341a4 Branch: refs/heads/master-jaxrs-2.1 Commit: cc2341a453a8edd467d83fdeb2c09ea62aee0ffa Parents: 9810a84 Author: Sergey Beryozkin Authored: Thu Sep 15 11:21:46 2016 +0100 Committer: Sergey Beryozkin Committed: Thu Sep 15 11:21:46 2016 +0100 -- .../ext/search/tika/TikaContentExtractor.java | 40 +++- 1 file changed, 31 insertions(+), 9 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/cc2341a4/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/tika/TikaContentExtractor.java -- diff --git a/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/tika/TikaContentExtractor.java b/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/tika/TikaContentExtractor.java index fd3511a..e4d1918 100644 --- a/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/tika/TikaContentExtractor.java +++ b/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/tika/TikaContentExtractor.java @@ -36,6 +36,7 @@ import org.apache.tika.detect.Detector; import org.apache.tika.exception.TikaException; import org.apache.tika.metadata.Metadata; import org.apache.tika.mime.MediaType; +import org.apache.tika.parser.AutoDetectParser; import org.apache.tika.parser.ParseContext; import org.apache.tika.parser.Parser; import org.apache.tika.sax.ToTextContentHandler; @@ -47,6 +48,13 @@ public class TikaContentExtractor { private final Detector detector; /** + * Create new Tika-based content extractor using AutoDetectParser. + */ +public TikaContentExtractor() { +this(new AutoDetectParser(), false); +} + +/** * Create new Tika-based content extractor using the provided parser instance. * @param parser parser instance */ @@ -159,9 +167,6 @@ public class TikaContentExtractor { if (in == null) { return null; } -if (context == null) { -context = new ParseContext(); -} final Metadata metadata = new Metadata(); try { @@ -171,20 +176,37 @@ public class TikaContentExtractor { mediaType = MediaType.parse(mtHint.toString()); } else if (detector != null && in.markSupported()) { mediaType = detector.detect(in, metadata); -} +} +if (mediaType != null) { +metadata.set(Metadata.CONTENT_TYPE, mediaType.toString()); +} Parser parser = null; -for (Parser p : parsers) { -if (mediaType != null && !p.getSupportedTypes(context).contains(mediaType)) { -continue; +if (parsers.size() == 1) { +parser = parsers.get(0); +} else { +for (Parser p : parsers) { +if (mediaType != null && !p.getSupportedTypes(context).contains(mediaType)) { +continue; +} +parser = p; +break; } -parser = p; -break; } if (parser == null) { return null; } +if (context == null) { +context = new ParseContext(); +} +if (context.get(Parser.class) == null) { +// to process the embedded attachments +context.set(Parser.class, +parser instanceof AutoDetectParser ? parser : new AutoDetectParser()); +} + + try { parser.parse(in, handler, metadata, context); } catch (Exception ex) {
[10/22] cxf git commit: Temp reverting the jsob basic writer format related change
Temp reverting the jsob basic writer format related change Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/c0b84703 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/c0b84703 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/c0b84703 Branch: refs/heads/master-jaxrs-2.1 Commit: c0b84703269034348b63bc673c325e8170f005df Parents: 1b2a3d0 Author: Sergey Beryozkin Authored: Thu Sep 15 14:06:20 2016 +0100 Committer: Sergey Beryozkin Committed: Thu Sep 15 14:06:20 2016 +0100 -- .../org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java | 2 -- 1 file changed, 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/c0b84703/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java -- diff --git a/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java b/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java index 030548f..d1fb1f5 100644 --- a/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java +++ b/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java @@ -71,14 +71,12 @@ public class JsonMapObjectReaderWriter { protected void toJsonInternal(Output out, Map map) { out.append("{"); -formatIfNeeded(out); for (Iterator> it = map.entrySet().iterator(); it.hasNext();) { Map.Entry entry = it.next(); out.append("\"").append(entry.getKey()).append("\""); out.append(":"); toJsonInternal(out, entry.getValue(), it.hasNext()); } -formatIfNeeded(out); out.append("}"); }
[16/22] cxf git commit: CXF-5855: Introduce support for Server Sent Events. Initial implementation based on Atmosphere
http://git-wip-us.apache.org/repos/asf/cxf/blob/41733786/distribution/src/main/release/samples/jax_rs/sse_tomcat/README.txt -- diff --git a/distribution/src/main/release/samples/jax_rs/sse_tomcat/README.txt b/distribution/src/main/release/samples/jax_rs/sse_tomcat/README.txt new file mode 100644 index 000..2e4a2e3 --- /dev/null +++ b/distribution/src/main/release/samples/jax_rs/sse_tomcat/README.txt @@ -0,0 +1,35 @@ +JAX-RS SSE Demo += + +This is a SSE version of JAX-RS Basic Demo. + +A SSE endpoint service is provided on URL http://localhost:8686/rest/api/stats/sse/{id} +where {id} is any integer value, f.e.: + + http://localhost:8686/rest/api/stats/sse/1 + +This sample includes a simple web UI using Highcharts JavaScript library to show off +randomly generated statistics about particular server, pushed to the client using +SSE JAX-RS endpoint. The UI is available at + + http://localhost:8686/static/index.html + +Under the hood, embedded Tomcat 8 container is being used. + +Building and running the demo using maven +--- + +From the base directory of this sample (i.e., where this README file is +located), the maven pom.xml file can be used to build and run the demo. + +Using either UNIX or Windows: + + mvn install + mvn -Pserver + +To remove the target dir, run mvn clean". + +Connecting to the SSE stream +--- + +Open a web browser at: http://localhost:8686/static/index.html http://git-wip-us.apache.org/repos/asf/cxf/blob/41733786/distribution/src/main/release/samples/jax_rs/sse_tomcat/pom.xml -- diff --git a/distribution/src/main/release/samples/jax_rs/sse_tomcat/pom.xml b/distribution/src/main/release/samples/jax_rs/sse_tomcat/pom.xml new file mode 100644 index 000..06d905b --- /dev/null +++ b/distribution/src/main/release/samples/jax_rs/sse_tomcat/pom.xml @@ -0,0 +1,140 @@ +http://maven.apache.org/POM/4.0.0"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; +xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd";> +4.0.0 +JAX-RS SSE Demo (Tomcat 8) +JAX-RS SSE Demo (Tomcat 8) +jax_rs_sse_tomcat + + +org.apache.cxf.samples +cxf-samples +3.2.0-SNAPSHOT +../.. + + + +UTF-8 +8.0.32 + + + + +org.springframework +spring-context + + + +org.springframework +spring-web + + + +org.apache.cxf +cxf-rt-frontend-jaxrs +3.2.0-SNAPSHOT + + + +org.apache.cxf +cxf-rt-rs-sse +3.2.0-SNAPSHOT + + + +com.fasterxml.jackson.jaxrs +jackson-jaxrs-json-provider + + + +com.fasterxml.jackson.core +jackson-core + + + +org.apache.tomcat.embed +tomcat-embed-core +${cxf.tomcat.version} + + + +org.apache.tomcat.embed +tomcat-embed-logging-juli +${cxf.tomcat.version} + + + +org.apache.tomcat.embed +tomcat-embed-jasper +${cxf.tomcat.version} + + + +org.apache.tomcat +tomcat-jasper +${cxf.tomcat.version} + + + +org.apache.tomcat +tomcat-jasper-el +${cxf.tomcat.version} + + + +org.apache.tomcat +tomcat-jsp-api +${cxf.tomcat.version} + + + +org.apache.tomcat.embed +tomcat-embed-websocket +${cxf.tomcat.version} + + + +org.atmosphere +atmosphere-runtime +2.4.3 + + + + + +server + +test + + +org.codehaus.mojo +exec-maven-plugin + + +test + +java + + + demo.jaxrs.sse.StatsServer + + + + + + + + + + + + +org.apache.maven.plugins +maven-compiler-plugin + +1.8 +1.8 + + + + + http://git-wip-us.apache.org/repos/a
[07/22] cxf git commit: Using UriBuilder to deal with duplicate forward slashes
Using UriBuilder to deal with duplicate forward slashes Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/9810a844 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/9810a844 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/9810a844 Branch: refs/heads/master-jaxrs-2.1 Commit: 9810a844802659199015755027eb51db37afad2b Parents: 5eb67e1 Author: Sergey Beryozkin Authored: Wed Sep 14 14:26:52 2016 +0100 Committer: Sergey Beryozkin Committed: Wed Sep 14 14:26:52 2016 +0100 -- .../apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java| 2 ++ .../rs/security/oauth2/services/AuthorizationMetadataService.java | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/9810a844/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java -- diff --git a/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java b/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java index d1fb1f5..030548f 100644 --- a/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java +++ b/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java @@ -71,12 +71,14 @@ public class JsonMapObjectReaderWriter { protected void toJsonInternal(Output out, Map map) { out.append("{"); +formatIfNeeded(out); for (Iterator> it = map.entrySet().iterator(); it.hasNext();) { Map.Entry entry = it.next(); out.append("\"").append(entry.getKey()).append("\""); out.append(":"); toJsonInternal(out, entry.getValue(), it.hasNext()); } +formatIfNeeded(out); out.append("}"); } http://git-wip-us.apache.org/repos/asf/cxf/blob/9810a844/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/services/AuthorizationMetadataService.java -- diff --git a/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/services/AuthorizationMetadataService.java b/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/services/AuthorizationMetadataService.java index 97c7a53..7e7d05b 100644 --- a/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/services/AuthorizationMetadataService.java +++ b/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/services/AuthorizationMetadataService.java @@ -25,6 +25,7 @@ import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; +import javax.ws.rs.core.UriBuilder; import javax.ws.rs.core.UriInfo; import org.apache.cxf.jaxrs.json.basic.JsonMapObjectReaderWriter; @@ -76,7 +77,7 @@ public class AuthorizationMetadataService { if (endpointAddress.startsWith("https")) { return endpointAddress; } else { -return baseUri + endpointAddress; +return UriBuilder.fromUri(baseUri).path(endpointAddress).build().toString(); } }
[22/22] cxf git commit: CXF-5855: Introduce support for Server Sent Events. Initial implementation based on Atmosphere
CXF-5855: Introduce support for Server Sent Events. Initial implementation based on Atmosphere Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/41733786 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/41733786 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/41733786 Branch: refs/heads/master-jaxrs-2.1 Commit: 41733786b63d90756ecd6332ee530e61c2539ab7 Parents: c184505 Author: reta Authored: Sun Apr 17 21:44:28 2016 -0400 Committer: reta Committed: Thu Sep 15 21:35:24 2016 -0400 -- .../release/samples/jax_rs/sse_cdi/README.txt | 35 +++ .../main/release/samples/jax_rs/sse_cdi/pom.xml | 143 ++ .../src/main/java/demo/jaxrs/sse/Stats.java | 56 .../java/demo/jaxrs/sse/StatsApplication.java | 44 +++ .../demo/jaxrs/sse/StatsRestServiceImpl.java| 80 ++ .../main/java/demo/jaxrs/sse/StatsServer.java | 63 + .../src/main/resources/META-INF/beans.xml | 10 + .../META-INF/cxf/org.apache.cxf.Logger | 1 + .../sse_cdi/src/main/resources/log.properties | 3 + .../sse_cdi/src/main/resources/logback.xml | 16 ++ .../src/main/resources/web-ui/index.html| 49 .../resources/web-ui/javascripts/highcharts.js | 270 +++ .../web-ui/javascripts/jquery-1.9.0.min.js | 4 + .../samples/jax_rs/sse_spring/README.txt| 35 +++ .../release/samples/jax_rs/sse_spring/pom.xml | 142 ++ .../src/main/java/demo/jaxrs/sse/Stats.java | 56 .../java/demo/jaxrs/sse/StatsApplication.java | 26 ++ .../main/java/demo/jaxrs/sse/StatsConfig.java | 56 .../demo/jaxrs/sse/StatsRestServiceImpl.java| 83 ++ .../main/java/demo/jaxrs/sse/StatsServer.java | 63 + .../src/main/resources/META-INF/beans.xml | 10 + .../META-INF/cxf/org.apache.cxf.Logger | 1 + .../src/main/resources/log.properties | 2 + .../sse_spring/src/main/resources/logback.xml | 16 ++ .../src/main/resources/web-ui/index.html| 49 .../resources/web-ui/javascripts/highcharts.js | 270 +++ .../web-ui/javascripts/jquery-1.9.0.min.js | 4 + .../samples/jax_rs/sse_tomcat/README.txt| 35 +++ .../release/samples/jax_rs/sse_tomcat/pom.xml | 140 ++ .../src/main/java/demo/jaxrs/sse/Stats.java | 56 .../demo/jaxrs/sse/StatsRestServiceImpl.java| 80 ++ .../main/java/demo/jaxrs/sse/StatsServer.java | 74 + .../META-INF/cxf/org.apache.cxf.Logger | 1 + .../resources/WEB-INF/applicationContext.xml| 42 +++ .../src/main/resources/log.properties | 2 + .../sse_tomcat/src/main/resources/logback.xml | 16 ++ .../src/main/resources/web-ui/index.html| 49 .../resources/web-ui/javascripts/highcharts.js | 270 +++ .../web-ui/javascripts/jquery-1.9.0.min.js | 4 + distribution/src/main/release/samples/pom.xml | 3 + .../cxf/cdi/JAXRSCdiResourceExtension.java | 23 ++ ...AXRSServerFactoryCustomizationExtension.java | 34 +++ parent/pom.xml | 17 +- .../cxf/jaxrs/JAXRSServerFactoryBean.java | 9 + .../org/apache/cxf/jaxrs/impl/RequestImpl.java | 23 ++ .../cxf/jaxrs/impl/ResponseBuilderImpl.java | 14 + .../cxf/jaxrs/impl/tl/ThreadLocalRequest.java | 23 ++ .../client/spec/InvocationBuilderImpl.java | 33 +++ rt/rs/pom.xml | 1 + rt/rs/sse/pom.xml | 76 ++ .../jaxrs/sse/OutboundSseEventBodyWriter.java | 139 ++ .../cxf/jaxrs/sse/OutboundSseEventImpl.java | 171 .../cxf/jaxrs/sse/SseBroadcasterImpl.java | 65 + .../cxf/jaxrs/sse/SseEventOutputProvider.java | 53 .../org/apache/cxf/jaxrs/sse/SseFeature.java| 41 +++ .../SseAtmosphereContextProvider.java | 57 .../SseAtmosphereEventOutputImpl.java | 117 .../atmosphere/SseAtmosphereInterceptor.java| 181 + .../SseAtmosphereInterceptorWriter.java | 31 +++ .../SseAtmosphereResourceContext.java | 60 + .../cdi/SseTransportCustomizationExtension.java | 30 +++ .../transport/sse/SseHttpTransportFactory.java | 57 .../AtmosphereSseServletDestination.java| 100 +++ rt/rs/sse/src/main/resources/META-INF/beans.xml | 5 + .../resources/META-INF/cxf/bus-extensions.txt | 1 + .../transport/http/HTTPTransportFactory.java| 8 +- .../transport/servlet/CXFNonSpringServlet.java | 12 +- systests/pom.xml| 1 + systests/rs-sse/pom.xml | 166 .../cxf/systest/jaxrs/sse/AbstractSseTest.java | 147 ++ .../org/apache/cxf/systest/jaxrs/sse/Book.java | 65 + .../apache/cxf/systest/jaxrs/sse/BookStore.java | 128 +
[15/22] cxf git commit: CXF-5855: Introduce support for Server Sent Events. Initial implementation based on Atmosphere
http://git-wip-us.apache.org/repos/asf/cxf/blob/41733786/distribution/src/main/release/samples/jax_rs/sse_tomcat/src/main/resources/web-ui/javascripts/highcharts.js -- diff --git a/distribution/src/main/release/samples/jax_rs/sse_tomcat/src/main/resources/web-ui/javascripts/highcharts.js b/distribution/src/main/release/samples/jax_rs/sse_tomcat/src/main/resources/web-ui/javascripts/highcharts.js new file mode 100644 index 000..327d865 --- /dev/null +++ b/distribution/src/main/release/samples/jax_rs/sse_tomcat/src/main/resources/web-ui/javascripts/highcharts.js @@ -0,0 +1,270 @@ +/* + Highcharts JS v3.0.1 (2013-04-09) + + (c) 2009-2013 Torstein Hønsi + + License: www.highcharts.com/license +*/ +(function(){function v(a,b){var c;a||(a={});for(c in b)a[c]=b[c];return a}function y(){var a,b=arguments.length,c={},d=function(a,b){var c,h;for(h in b)b.hasOwnProperty(h)&&(c=b[h],typeof a!=="object"&&(a={}),a[h]=c&&typeof c==="object"&&Object.prototype.toString.call(c)!=="[object Array]"&&typeof c.nodeType!=="number"?d(a[h]||{},c):b[h]);return a};for(a=0;a3?c.length%3:0;return e+(g?c.substr(0,g)+d:"")+c.substr(g).replace(/(\d{3})(?=\d)/g,"$1"+d)+(f?b+Q(a-c).toFixed(f).slice(2):"")}function ua(a,b){return Array((b||2)+1-String(a).length).join(0)+a}function Ea(a,b){for(var c="{",d=!1,e,f,g,h,i,j=[];(c=a.indexOf(c))!==-1;){e=a.slice(0,c);if(d){f=e.split(":");g=f.shift().split(".");i=g.length;e=b;for(h=0;h< +i;h++)e=e[g[h]];if(f.length)f=f.join(":"),g=/\.([0-9])/,h=N.lang,i=void 0,/f$/.test(f)?(i=(i=f.match(g))?i[1]:-1,e=Na(e,i,h.decimalPoint,f.indexOf(",")>-1?h.thousandsSep:"")):e=Ua(f,e)}j.push(e);a=a.slice(c+1);c=(d=!d)?"}":"{"}j.push(a);return j.join("")}function ib(a,b,c,d){var e,c=o(c,1);e=a/c;b||(b=[1,2,2.5,5,10],d&&d.allowDecimals===!1&&(c===1?b=[1,2,5,10]:c<=0.1&&(b=[1/c])));for(d=0;d=E[jb]&& +(i.setMilliseconds(0),i.setSeconds(j>=E[Va]?0:k*T(i.getSeconds()/k)));if(j>=E[Va])i[Bb](j>=E[Oa]?0:k*T(i[kb]()/k));if(j>=E[Oa])i[Cb](j>=E[oa]?0:k*T(i[lb]()/k));if(j>=E[oa])i[mb](j>=E[Pa]?1:k*T(i[Qa]()/k));j>=E[Pa]&&(i[Db](j>=E[va]?0:k*T(i[Xa]()/k)),h=i[Ya]());j>=E[va]&&(h-=h%k,i[Eb](h));if(j===E[Wa])i[mb](i[Qa]()-i[nb]()+o(d,1));b=1;h=i[Ya]();for(var d=i.getTime(),m=i[Xa](),l=i[Qa](),i=g?0:(864E5+i.getTimezoneOffset()*6E4)%864E5;dc&&(c=a[b]);return c}function Ga(a, +b){for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destroy(),delete a[c]}function Ra(a){$a||($a=U(wa));a&&$a.appendChild(a);$a.innerHTML=""}function qa(a,b){var c="Highcharts error #"+a+": www.highcharts.com/errors/"+a;if(b)throw c;else O.console&&console.log(c)}function ia(a){return parseFloat(a.toPrecision(14))}function Ha(a,b){xa=o(a,b.animation)}function Hb(){var a=N.global.useUTC,b=a?"getUTC":"get",c=a?"setUTC":"set";Za=a?Date.UTC:function(a,b,c,g,h,i){return(new Date(a,b,o(c,1),o(g,0),o(h, +0),o(i,0))).getTime()};kb=b+"Minutes";lb=b+"Hours";nb=b+"Day";Qa=b+"Date";Xa=b+"Month";Ya=b+"FullYear";Bb=c+"Minutes";Cb=c+"Hours";mb=c+"Date";Db=c+"Month";Eb=c+"FullYear"}function ra(){}function Ia(a,b,c,d){this.axis=a;this.pos=b;this.type=c||"";this.isNew=!0;!c&&!d&&this.addLabel()}function ob(a,b){this.axis=a;if(b)this.options=b,this.id=b.id}function Ib(a,b,c,d,e,f){var g=a.chart.inverted;this.axis=a;this.isNegative=c;this.options=b;this.x=d;this.stack=e;this.percent=f==="percent";this.alignOptions= +{align:b.align||(g?c?"left":"right":"center"),verticalAlign:b.verticalAlign||(g?"middle":c?"bottom":"top"),y:o(b.y,g?4:c?14:-6),x:o(b.x,g?c?-6:6:0)};this.textAlign=b.textAlign||(g?c?"right":"left":"center")}function ab(){this.init.apply(this,arguments)}function pb(){this.init.apply(this,arguments)}function qb(a,b){this.init(a,b)}function rb(a,b){this.init(a,b)}function sb(){this.init.apply(this,arguments)}var x,z=document,O=window,I=Math,t=I.round,T=I.floor,ja=I.ceil,q=I.max,K=I.min,Q=I.abs,Y=I.cos, +ca=I.sin,Ja=I.PI,bb=Ja*2/360,ya=navigator.userAgent,Jb=O.opera,Da=/msie/i.test(ya)&&!Jb,cb=z.documentMode===8,db=/AppleWebKit/.test(ya),eb=/Firefox/.test(ya),Kb=/(Mobile|Android|Windows Phone)/.test(ya),sa="http://www.w3.org/2000/svg",Z=!!z.createElementNS&&!!z.createElementNS(sa,"svg").createSVGRect,Rb=eb&&parseInt(ya.split("Firefox/")[1],10)<4,$=!Z&&!Da&&!!z.createElement("canvas").getContext,Sa,fb=z.documentElement.ontouchstart!==x,Lb={},tb=0,$a,N,Ua,xa,ub,E,ta=function(){},za=[],wa="div",S="none", +Mb="rgba(192,192,192,"+(Z?1.0E-4:0.002)+")",zb="millisecond",jb="second",Va="minute",Oa="hour",oa="day",Wa="week",Pa="month",va="year",Nb="stroke-width",Za,kb,lb,nb,Qa,Xa,Ya,Bb,Cb,mb,Db,Eb,aa={};O.Highcharts=O.Highcharts?qa(16,!0):{};Ua=function(a,b,c){if(!r(b)||isNaN(b))return"Invalid date";var a=o(a,"%Y-%m-%d %H:%M:%S"),d=new Date(b),e,f=d[lb](),g=d[nb](),h=d[Qa](),i=d[Xa](),j=d[Ya](),k=N.lang,m=k.weekdays,d=v({a:m[g].substr(0,3),A:m[g],d:ua(h),e:h,b:k.shortMonths[i],B:k.months[i],m:ua(i+1),y:j.toString().substr(2, +2),Y:j,H:ua(f),I:ua(f%12||12),l:f%12||12,M:
[20/22] cxf git commit: CXF-5855: Introduce support for Server Sent Events. Initial implementation based on Atmosphere
http://git-wip-us.apache.org/repos/asf/cxf/blob/41733786/distribution/src/main/release/samples/jax_rs/sse_cdi/src/main/resources/web-ui/javascripts/jquery-1.9.0.min.js -- diff --git a/distribution/src/main/release/samples/jax_rs/sse_cdi/src/main/resources/web-ui/javascripts/jquery-1.9.0.min.js b/distribution/src/main/release/samples/jax_rs/sse_cdi/src/main/resources/web-ui/javascripts/jquery-1.9.0.min.js new file mode 100644 index 000..50d1b22 --- /dev/null +++ b/distribution/src/main/release/samples/jax_rs/sse_cdi/src/main/resources/web-ui/javascripts/jquery-1.9.0.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.9.0 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license */(function(e,t){"use strict";function n(e){var t=e.length,n=st.type(e);return st.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e){var t=Tt[e]={};return st.each(e.match(lt)||[],function(e,n){t[n]=!0}),t}function i(e,n,r,i){if(st.acceptData(e)){var o,a,s=st.expando,u="string"==typeof n,l=e.nodeType,c=l?st.cache:e,f=l?e[s]:e[s]&&s;if(f&&c[f]&&(i||c[f].data)||!u||r!==t)return f||(l?e[s]=f=K.pop()||st.guid++:f=s),c[f]||(c[f]={},l||(c[f].toJSON=st.noop)),("object"==typeof n||"function"==typeof n)&&(i?c[f]=st.extend(c[f],n):c[f].data=st.extend(c[f].data,n)),o=c[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[st.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[st.camelCase(n)])):a=o,a}}function o(e,t,n){if(st.acceptData(e)){var r,i,o,a=e.nodeType,u=a?st.cache:e,l=a?e[st.expando]:st.expando;if(u[l]){if(t&&(r=n?u[l]:u[l].data)){st.isArray(t)?t=t.conc at(st.map(t,st.camelCase)):t in r?t=[t]:(t=st.camelCase(t),t=t in r?[t]:t.split(" "));for(i=0,o=t.length;o>i;i++)delete r[t[i]];if(!(n?s:st.isEmptyObject)(r))return}(n||(delete u[l].data,s(u[l])))&&(a?st.cleanData([e],!0):st.support.deleteExpando||u!=u.window?delete u[l]:u[l]=null)}}}function a(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(Nt,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:wt.test(r)?st.parseJSON(r):r}catch(o){}st.data(e,n,r)}else r=t}return r}function s(e){var t;for(t in e)if(("data"!==t||!st.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function u(){return!0}function l(){return!1}function c(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function f(e,t,n){if(t=t||0,st.isFunction(t))return st.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return st.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=st.grep(e,function(e){return 1===e.nodeType});if(Wt.test(t))return st.filter(t,r,!n);t=st.filter(t,r)}return st.grep(e,function(e){return st.inArray(e,t)>=0===n})}function p(e){var t=zt.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function d(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function h(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function g(e){var t=nn.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function m(e,t){for(var n,r=0;null!=(n=e[r]);r++)st._data(n,"globalEval",!t||st._data(t[r],"globalEval"))}function y(e,t){if(1===t.nodeType&&st.hasData(e)){var n,r,i,o=st._data(e),a=st._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)st.event.add(t,n,s[n][r])}a.data&&(a.data=st.extend({},a.data))}}function v(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!st.support.noCloneEvent&&t[st.ex pando]){r=st._data(t);for(i in r.events)st.removeEvent(t,i,r.handle);t.removeAttribute(st.expando)}"script"===n&&t.text!==e.text?(h(t).text=e.text,g(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),st.support.html5Clone&&e.innerHTML&&!st.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Zt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function b(e,n){var r,i,o=0,a=e.getElementsByTagName!==t?e.getElementsByTagName(n||"*"):e.querySelectorAll!==t?e.querySelectorAll(n||"*"):t;if(!a)for(a=[],r=e.childNodes||e;null!=(i=r[o]);o++)!n||st.nodeName(i,n)?a.push(i):st.merge(a,b(i,n));return n===t||n&&st.nodeName(e,n)?st.merge([e],a):a}function x(e){Zt.test(e.type)&&(e.defaultChecked=e.checked)}function T(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Nn.length;i--;)if(t=Nn[i]+n,t in e)return t;return r}function w(e,t){return e=t||e,"none"===st.css(e,"display")||!st.contains(e.ownerDocument,e)}function N(e,t){for(var n,r=[],i=0,o=e.length;o>i;i++)n=e[i],n.style&&(r[i]=st._data(n,"olddisplay"),t?(r[i]||"none"!==n.style.display||(n.style.display=""),""===n.st
[13/22] cxf git commit: CXF-5855: Introduce support for Server Sent Events. Initial implementation based on Atmosphere
http://git-wip-us.apache.org/repos/asf/cxf/blob/41733786/distribution/src/main/release/samples/pom.xml -- diff --git a/distribution/src/main/release/samples/pom.xml b/distribution/src/main/release/samples/pom.xml index ca874f3..156413c 100644 --- a/distribution/src/main/release/samples/pom.xml +++ b/distribution/src/main/release/samples/pom.xml @@ -115,6 +115,9 @@ jax_rs/tracing_htrace clustering/failover_jaxws_osgi clustering/failover_server +jax_rs/sse_cdi +jax_rs/sse_tomcat +jax_rs/sse_spring + + +maven.java.net +java.net snapshots +https://maven.java.net/content/repositories/snapshots/ + +false + + +true + + + http://git-wip-us.apache.org/repos/asf/cxf/blob/41733786/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java -- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java index d4e53ac..0f481a3 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java @@ -193,6 +193,7 @@ public class JAXRSServerFactoryBean extends AbstractJAXRSFactoryBean { checkPrivateEndpoint(ep); factory.applyDynamicFeatures(getServiceFactory().getClassResourceInfo()); +applyBusFeatures(getBus()); applyFeatures(); getServiceFactory().sendEvent(FactoryBeanListener.Event.SERVER_CREATED, @@ -246,6 +247,14 @@ public class JAXRSServerFactoryBean extends AbstractJAXRSFactoryBean { } +protected void applyBusFeatures(final Bus bus) { +if (bus.getFeatures() != null) { +for (Feature feature : bus.getFeatures()) { +feature.initialize(server, bus); +} +} +} + protected void applyFeatures() { if (getFeatures() != null) { for (Feature feature : getFeatures()) { http://git-wip-us.apache.org/repos/asf/cxf/blob/41733786/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestImpl.java -- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestImpl.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestImpl.java index 0914854..e57f3e0 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestImpl.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestImpl.java @@ -32,6 +32,9 @@ import javax.ws.rs.HttpMethod; import javax.ws.rs.core.EntityTag; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.NioCompletionHandler; +import javax.ws.rs.core.NioErrorHandler; +import javax.ws.rs.core.NioReaderHandler; import javax.ws.rs.core.Request; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.ResponseBuilder; @@ -382,4 +385,24 @@ public class RequestImpl implements Request { return 0; } } + +@Override +public void entity(NioReaderHandler arg0) { +// TODO: Implementation required (JAX-RS 2.1) +} + +@Override +public void entity(NioReaderHandler arg0, NioCompletionHandler arg1) { +// TODO: Implementation required (JAX-RS 2.1) +} + +@Override +public void entity(NioReaderHandler arg0, NioErrorHandler arg1) { +// TODO: Implementation required (JAX-RS 2.1) +} + +@Override +public void entity(NioReaderHandler arg0, NioCompletionHandler arg1, NioErrorHandler arg2) { +// TODO: Implementation required (JAX-RS 2.1) +} } http://git-wip-us.apache.org/repos/asf/cxf/blob/41733786/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java -- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java index cee5d36..29c5c42 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java @@ -34,6 +34,8 @@ import javax.ws.rs.core.Link; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.NewCookie; +import javax.ws.rs.core.NioErrorHandler; +import javax.ws.rs.core.NioWriterHandler; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Res
cxf git commit: Optional reporting of the validation exception message, patch from Vjacheslav V. Borisov applied, This closes #170
Repository: cxf Updated Branches: refs/heads/3.1.x-fixes b4359a383 -> 66a554f0c Optional reporting of the validation exception message, patch from Vjacheslav V. Borisov applied, This closes #170 Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/66a554f0 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/66a554f0 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/66a554f0 Branch: refs/heads/3.1.x-fixes Commit: 66a554f0c36bd5034edb4f20a1e85bb0c1e09cb3 Parents: b4359a3 Author: Sergey Beryozkin Authored: Thu Sep 15 21:38:28 2016 +0100 Committer: Sergey Beryozkin Committed: Thu Sep 15 21:39:24 2016 +0100 -- .../validation/ValidationExceptionMapper.java | 36 1 file changed, 30 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/66a554f0/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/ValidationExceptionMapper.java -- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/ValidationExceptionMapper.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/ValidationExceptionMapper.java index b15ad0b..b0d0938 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/ValidationExceptionMapper.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/ValidationExceptionMapper.java @@ -25,6 +25,7 @@ import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; import javax.validation.ValidationException; import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.ResponseBuilder; import javax.ws.rs.ext.ExceptionMapper; import javax.ws.rs.ext.Provider; @@ -35,25 +36,48 @@ import org.apache.cxf.validation.ResponseConstraintViolationException; @Provider public class ValidationExceptionMapper implements ExceptionMapper< ValidationException > { private static final Logger LOG = LogUtils.getL7dLogger(ValidationExceptionMapper.class); +private boolean addMessageToResponse; @Override public Response toResponse(ValidationException exception) { Response.Status errorStatus = Response.Status.INTERNAL_SERVER_ERROR; if (exception instanceof ConstraintViolationException) { +StringBuilder responseBody = addMessageToResponse ? new StringBuilder() : null; + final ConstraintViolationException constraint = (ConstraintViolationException) exception; for (final ConstraintViolation< ? > violation: constraint.getConstraintViolations()) { -LOG.log(Level.WARNING, -violation.getRootBeanClass().getSimpleName() -+ "." + violation.getPropertyPath() -+ ": " + violation.getMessage()); +String message = getMessage(violation); +if (responseBody != null) { +responseBody.append(message).append("\n"); +} +LOG.log(Level.WARNING, message); } if (!(constraint instanceof ResponseConstraintViolationException)) { errorStatus = Response.Status.BAD_REQUEST; } -} -return JAXRSUtils.toResponse(errorStatus); +ResponseBuilder rb = JAXRSUtils.toResponseBuilder(errorStatus); +if (responseBody != null) { +rb.entity(responseBody); +} +return rb.build(); +} else { +return JAXRSUtils.toResponse(errorStatus); +} +} +private String getMessage(ConstraintViolation violation) { +return violation.getRootBeanClass().getSimpleName() ++ "." + violation.getPropertyPath() ++ ": " + violation.getMessage(); } +/** + * Controls whether to add a constraint validation message to Response or not + * @param addMessageToResponse add a constraint validation message to Response + */ +public void setAddMessageToResponse(boolean addMessageToResponse) { +this.addMessageToResponse = addMessageToResponse; +} + }
cxf git commit: Optional reporting of the validation exception message, patch from Vjacheslav V. Borisov applied, This closes #170
Repository: cxf Updated Branches: refs/heads/master c0b847032 -> c18450505 Optional reporting of the validation exception message, patch from Vjacheslav V. Borisov applied, This closes #170 Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/c1845050 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/c1845050 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/c1845050 Branch: refs/heads/master Commit: c184505050812a32f0c496c6b237eff407fb1f18 Parents: c0b8470 Author: Sergey Beryozkin Authored: Thu Sep 15 21:38:28 2016 +0100 Committer: Sergey Beryozkin Committed: Thu Sep 15 21:38:28 2016 +0100 -- .../validation/ValidationExceptionMapper.java | 36 1 file changed, 30 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/c1845050/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/ValidationExceptionMapper.java -- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/ValidationExceptionMapper.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/ValidationExceptionMapper.java index b15ad0b..b0d0938 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/ValidationExceptionMapper.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/ValidationExceptionMapper.java @@ -25,6 +25,7 @@ import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; import javax.validation.ValidationException; import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.ResponseBuilder; import javax.ws.rs.ext.ExceptionMapper; import javax.ws.rs.ext.Provider; @@ -35,25 +36,48 @@ import org.apache.cxf.validation.ResponseConstraintViolationException; @Provider public class ValidationExceptionMapper implements ExceptionMapper< ValidationException > { private static final Logger LOG = LogUtils.getL7dLogger(ValidationExceptionMapper.class); +private boolean addMessageToResponse; @Override public Response toResponse(ValidationException exception) { Response.Status errorStatus = Response.Status.INTERNAL_SERVER_ERROR; if (exception instanceof ConstraintViolationException) { +StringBuilder responseBody = addMessageToResponse ? new StringBuilder() : null; + final ConstraintViolationException constraint = (ConstraintViolationException) exception; for (final ConstraintViolation< ? > violation: constraint.getConstraintViolations()) { -LOG.log(Level.WARNING, -violation.getRootBeanClass().getSimpleName() -+ "." + violation.getPropertyPath() -+ ": " + violation.getMessage()); +String message = getMessage(violation); +if (responseBody != null) { +responseBody.append(message).append("\n"); +} +LOG.log(Level.WARNING, message); } if (!(constraint instanceof ResponseConstraintViolationException)) { errorStatus = Response.Status.BAD_REQUEST; } -} -return JAXRSUtils.toResponse(errorStatus); +ResponseBuilder rb = JAXRSUtils.toResponseBuilder(errorStatus); +if (responseBody != null) { +rb.entity(responseBody); +} +return rb.build(); +} else { +return JAXRSUtils.toResponse(errorStatus); +} +} +private String getMessage(ConstraintViolation violation) { +return violation.getRootBeanClass().getSimpleName() ++ "." + violation.getPropertyPath() ++ ": " + violation.getMessage(); } +/** + * Controls whether to add a constraint validation message to Response or not + * @param addMessageToResponse add a constraint validation message to Response + */ +public void setAddMessageToResponse(boolean addMessageToResponse) { +this.addMessageToResponse = addMessageToResponse; +} + }
cxf-fediz git commit: More STS config work
Repository: cxf-fediz Updated Branches: refs/heads/master 3d732f516 -> 3610309d1 More STS config work Project: http://git-wip-us.apache.org/repos/asf/cxf-fediz/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf-fediz/commit/3610309d Tree: http://git-wip-us.apache.org/repos/asf/cxf-fediz/tree/3610309d Diff: http://git-wip-us.apache.org/repos/asf/cxf-fediz/diff/3610309d Branch: refs/heads/master Commit: 3610309d1fecbf9b06b8d09001285ab78e1d47bb Parents: 3d732f5 Author: Colm O hEigeartaigh Authored: Thu Sep 15 16:10:49 2016 +0100 Committer: Colm O hEigeartaigh Committed: Thu Sep 15 16:10:49 2016 +0100 -- .../sts/src/main/webapp/WEB-INF/kerberos.xml| 10 - .../WEB-INF/wsdl/ws-trust-1.4-service.wsdl | 465 +-- 2 files changed, 5 insertions(+), 470 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/3610309d/services/sts/src/main/webapp/WEB-INF/kerberos.xml -- diff --git a/services/sts/src/main/webapp/WEB-INF/kerberos.xml b/services/sts/src/main/webapp/WEB-INF/kerberos.xml index 86765e0..aaab490 100644 --- a/services/sts/src/main/webapp/WEB-INF/kerberos.xml +++ b/services/sts/src/main/webapp/WEB-INF/kerberos.xml @@ -46,14 +46,4 @@ -http://docs.oasis-open.org/ws-sx/ws-trust/200512/"; -serviceName="ns1:SecurityTokenService" endpointName="ns1:TransportKerberos_Port"> - - - - - http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/3610309d/services/sts/src/main/webapp/WEB-INF/wsdl/ws-trust-1.4-service.wsdl -- diff --git a/services/sts/src/main/webapp/WEB-INF/wsdl/ws-trust-1.4-service.wsdl b/services/sts/src/main/webapp/WEB-INF/wsdl/ws-trust-1.4-service.wsdl index 9840239..ab3044f 100644 --- a/services/sts/src/main/webapp/WEB-INF/wsdl/ws-trust-1.4-service.wsdl +++ b/services/sts/src/main/webapp/WEB-INF/wsdl/ws-trust-1.4-service.wsdl @@ -11,228 +11,6 @@ http://docs.oasis-open.org/ws-sx/ws-trust/200512/"; location="ws-trust-1.4.wsdl"/> - - - http://schemas.xmlsoap.org/soap/http"; /> - - http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue"; /> - - - - - - - - - - - http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Validate"; /> - - - - - - - - - - - http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Cancel"; /> - - - - - - - - - http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Renew"; /> - - - - - - - - - http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/KeyExchangeToken"; /> - - - - - - - - - http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/RequestCollection"; /> - - - - - - - - - - - - http://schemas.xmlsoap.org/soap/http"; /> - - http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue"; /> - - - - - - - - - - - http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Validate"; /> - - - - - - - - - - - http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Cancel"; /> - - - - - - - - - http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Renew"; /> - - - - - - - - - http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/KeyExchangeToken"; /> - - - - - - - - -
cxf-fediz git commit: More STS refactoring
Repository: cxf-fediz Updated Branches: refs/heads/master 150ca5d8e -> 3d732f516 More STS refactoring Project: http://git-wip-us.apache.org/repos/asf/cxf-fediz/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf-fediz/commit/3d732f51 Tree: http://git-wip-us.apache.org/repos/asf/cxf-fediz/tree/3d732f51 Diff: http://git-wip-us.apache.org/repos/asf/cxf-fediz/diff/3d732f51 Branch: refs/heads/master Commit: 3d732f5168f940b03cdc674d31830d384ed0ba50 Parents: 150ca5d Author: Colm O hEigeartaigh Authored: Thu Sep 15 14:33:09 2016 +0100 Committer: Colm O hEigeartaigh Committed: Thu Sep 15 14:33:09 2016 +0100 -- services/sts/src/main/resources/sts.properties | 22 ++ .../src/main/webapp/WEB-INF/cxf-transport.xml | 122 ++- .../src/main/webapp/WEB-INF/data/cxf-sts.xml| 209 --- .../sts/src/main/webapp/WEB-INF/data/realms.xml | 77 +++ 4 files changed, 220 insertions(+), 210 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/3d732f51/services/sts/src/main/resources/sts.properties -- diff --git a/services/sts/src/main/resources/sts.properties b/services/sts/src/main/resources/sts.properties new file mode 100644 index 000..4bb5c7e --- /dev/null +++ b/services/sts/src/main/resources/sts.properties @@ -0,0 +1,22 @@ +# +# 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. +# +signature.properties=stsTruststore.properties +encryption.properties=stsEncryption.properties +issuer=Fediz STS +callback.handler=org.apache.cxf.fediz.service.sts.PasswordCallbackHandler http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/3d732f51/services/sts/src/main/webapp/WEB-INF/cxf-transport.xml -- diff --git a/services/sts/src/main/webapp/WEB-INF/cxf-transport.xml b/services/sts/src/main/webapp/WEB-INF/cxf-transport.xml index fedc7e0..0cac6a7 100644 --- a/services/sts/src/main/webapp/WEB-INF/cxf-transport.xml +++ b/services/sts/src/main/webapp/WEB-INF/cxf-transport.xml @@ -39,13 +39,133 @@ http://cxf.apache.org/configuration/security http://cxf.apache.org/schemas/configuration/security.xsd";> + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.* + + + + + + + + + + + + http://git-wip-us.apache.org/repos/asf/cxf-fediz/blob/3d732f51/services/sts/src/main/webapp/WEB-INF/data/cxf-sts.xml -- diff --git a/services/sts/src/main/webapp/WEB-INF/data/cxf-sts.xml b/services/sts/src/main/webapp/WEB-INF/data/cxf-sts.xml deleted file mode 100644 index b2d43d7..000 --- a/services/sts/src/main/webapp/WEB-INF/data/cxf-sts.xml +++ /dev/null @@ -1,209 +0,0 @@ - - -http://www.springframework.org/schema/beans"; -xmlns:cxf="http://cxf.apache.org/core"; -xmlns:jaxws="http://cxf.apache.org/jaxws"; -xmlns:test="http://apache.org/hello_world_soap_http"; -xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; -xmlns:util="http://www.springframework.org/schema/util"; -xmlns:http="http://cxf.apache.org/transports/http/configuration"; -xmlns:sec="http://cxf.apache.org/configuration/security"; -xsi:schemaLocation=" -http://cxf.apache.org/core -http://cxf.apache.org/schemas/core.xsd -http://www.springframew
cxf git commit: Temp reverting the jsob basic writer format related change
Repository: cxf Updated Branches: refs/heads/3.1.x-fixes 29129d880 -> b4359a383 Temp reverting the jsob basic writer format related change Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/b4359a38 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/b4359a38 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/b4359a38 Branch: refs/heads/3.1.x-fixes Commit: b4359a383f88b6a6072dd6de2c55797a2dca3977 Parents: 29129d8 Author: Sergey Beryozkin Authored: Thu Sep 15 14:06:20 2016 +0100 Committer: Sergey Beryozkin Committed: Thu Sep 15 14:07:11 2016 +0100 -- .../org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java | 2 -- 1 file changed, 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/b4359a38/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java -- diff --git a/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java b/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java index 030548f..d1fb1f5 100644 --- a/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java +++ b/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java @@ -71,14 +71,12 @@ public class JsonMapObjectReaderWriter { protected void toJsonInternal(Output out, Map map) { out.append("{"); -formatIfNeeded(out); for (Iterator> it = map.entrySet().iterator(); it.hasNext();) { Map.Entry entry = it.next(); out.append("\"").append(entry.getKey()).append("\""); out.append(":"); toJsonInternal(out, entry.getValue(), it.hasNext()); } -formatIfNeeded(out); out.append("}"); }
cxf git commit: Temp reverting the jsob basic writer format related change
Repository: cxf Updated Branches: refs/heads/master 1b2a3d0d2 -> c0b847032 Temp reverting the jsob basic writer format related change Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/c0b84703 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/c0b84703 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/c0b84703 Branch: refs/heads/master Commit: c0b84703269034348b63bc673c325e8170f005df Parents: 1b2a3d0 Author: Sergey Beryozkin Authored: Thu Sep 15 14:06:20 2016 +0100 Committer: Sergey Beryozkin Committed: Thu Sep 15 14:06:20 2016 +0100 -- .../org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java | 2 -- 1 file changed, 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/c0b84703/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java -- diff --git a/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java b/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java index 030548f..d1fb1f5 100644 --- a/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java +++ b/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java @@ -71,14 +71,12 @@ public class JsonMapObjectReaderWriter { protected void toJsonInternal(Output out, Map map) { out.append("{"); -formatIfNeeded(out); for (Iterator> it = map.entrySet().iterator(); it.hasNext();) { Map.Entry entry = it.next(); out.append("\"").append(entry.getKey()).append("\""); out.append(":"); toJsonInternal(out, entry.getValue(), it.hasNext()); } -formatIfNeeded(out); out.append("}"); }
cxf git commit: Minor update to the Tika demo code
Repository: cxf Updated Branches: refs/heads/master cc2341a45 -> 1b2a3d0d2 Minor update to the Tika demo code Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/1b2a3d0d Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/1b2a3d0d Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/1b2a3d0d Branch: refs/heads/master Commit: 1b2a3d0d2e1a4c8f13368fd7c3e0e1cbfabd2b32 Parents: cc2341a Author: Sergey Beryozkin Authored: Thu Sep 15 11:24:06 2016 +0100 Committer: Sergey Beryozkin Committed: Thu Sep 15 11:24:06 2016 +0100 -- .../main/java/demo/jaxrs/server/StreamingService.java | 12 ++-- 1 file changed, 2 insertions(+), 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/1b2a3d0d/distribution/src/main/release/samples/jax_rs/spark/src/main/java/demo/jaxrs/server/StreamingService.java -- diff --git a/distribution/src/main/release/samples/jax_rs/spark/src/main/java/demo/jaxrs/server/StreamingService.java b/distribution/src/main/release/samples/jax_rs/spark/src/main/java/demo/jaxrs/server/StreamingService.java index 0d2fdea..000d8bc 100644 --- a/distribution/src/main/release/samples/jax_rs/spark/src/main/java/demo/jaxrs/server/StreamingService.java +++ b/distribution/src/main/release/samples/jax_rs/spark/src/main/java/demo/jaxrs/server/StreamingService.java @@ -55,11 +55,6 @@ import org.apache.spark.streaming.api.java.JavaPairDStream; import org.apache.spark.streaming.api.java.JavaReceiverInputDStream; import org.apache.spark.streaming.api.java.JavaStreamingContext; import org.apache.spark.streaming.receiver.Receiver; -import org.apache.tika.parser.AutoDetectParser; -import org.apache.tika.parser.ParseContext; -import org.apache.tika.parser.Parser; -import org.apache.tika.parser.odf.OpenDocumentParser; -import org.apache.tika.parser.pdf.PDFParser; import scala.Tuple2; @@ -71,6 +66,7 @@ public class StreamingService { MEDIA_TYPE_TABLE = new HashMap(); MEDIA_TYPE_TABLE.put("pdf", MediaType.valueOf("application/pdf")); MEDIA_TYPE_TABLE.put("odt", MediaType.valueOf("application/vnd.oasis.opendocument.text")); +MEDIA_TYPE_TABLE.put("odp", MediaType.valueOf("application/vnd.oasis.opendocument.presentation")); } private Executor executor = new ThreadPoolExecutor(5, 5, 0, TimeUnit.SECONDS, new ArrayBlockingQueue(10)); @@ -83,9 +79,6 @@ public class StreamingService { @Produces("text/plain") public void processMultipartStream(@Suspended AsyncResponse async, @Multipart("file") Attachment att) { -TikaContentExtractor tika = new TikaContentExtractor( -Arrays.asList(new PDFParser(), new OpenDocumentParser())); - MediaType mediaType = att.getContentType(); if (mediaType == null) { String fileName = att.getContentDisposition().getFilename(); @@ -97,8 +90,7 @@ public class StreamingService { } } -ParseContext context = new ParseContext(); -context.set(Parser.class, new AutoDetectParser()); +TikaContentExtractor tika = new TikaContentExtractor(); TikaContent tikaContent = tika.extract(att.getObject(InputStream.class), mediaType); processStream(async, new TikaReceiver(tikaContent));
cxf git commit: Updating TikaContentExtractor to support the embedded attachments
Repository: cxf Updated Branches: refs/heads/3.1.x-fixes 4aa035327 -> 29129d880 Updating TikaContentExtractor to support the embedded attachments Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/29129d88 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/29129d88 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/29129d88 Branch: refs/heads/3.1.x-fixes Commit: 29129d880455fcd535fdb9004a7677fcd1f51906 Parents: 4aa0353 Author: Sergey Beryozkin Authored: Thu Sep 15 11:21:46 2016 +0100 Committer: Sergey Beryozkin Committed: Thu Sep 15 11:22:54 2016 +0100 -- .../ext/search/tika/TikaContentExtractor.java | 40 +++- 1 file changed, 31 insertions(+), 9 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/29129d88/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/tika/TikaContentExtractor.java -- diff --git a/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/tika/TikaContentExtractor.java b/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/tika/TikaContentExtractor.java index fd3511a..e4d1918 100644 --- a/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/tika/TikaContentExtractor.java +++ b/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/tika/TikaContentExtractor.java @@ -36,6 +36,7 @@ import org.apache.tika.detect.Detector; import org.apache.tika.exception.TikaException; import org.apache.tika.metadata.Metadata; import org.apache.tika.mime.MediaType; +import org.apache.tika.parser.AutoDetectParser; import org.apache.tika.parser.ParseContext; import org.apache.tika.parser.Parser; import org.apache.tika.sax.ToTextContentHandler; @@ -47,6 +48,13 @@ public class TikaContentExtractor { private final Detector detector; /** + * Create new Tika-based content extractor using AutoDetectParser. + */ +public TikaContentExtractor() { +this(new AutoDetectParser(), false); +} + +/** * Create new Tika-based content extractor using the provided parser instance. * @param parser parser instance */ @@ -159,9 +167,6 @@ public class TikaContentExtractor { if (in == null) { return null; } -if (context == null) { -context = new ParseContext(); -} final Metadata metadata = new Metadata(); try { @@ -171,20 +176,37 @@ public class TikaContentExtractor { mediaType = MediaType.parse(mtHint.toString()); } else if (detector != null && in.markSupported()) { mediaType = detector.detect(in, metadata); -} +} +if (mediaType != null) { +metadata.set(Metadata.CONTENT_TYPE, mediaType.toString()); +} Parser parser = null; -for (Parser p : parsers) { -if (mediaType != null && !p.getSupportedTypes(context).contains(mediaType)) { -continue; +if (parsers.size() == 1) { +parser = parsers.get(0); +} else { +for (Parser p : parsers) { +if (mediaType != null && !p.getSupportedTypes(context).contains(mediaType)) { +continue; +} +parser = p; +break; } -parser = p; -break; } if (parser == null) { return null; } +if (context == null) { +context = new ParseContext(); +} +if (context.get(Parser.class) == null) { +// to process the embedded attachments +context.set(Parser.class, +parser instanceof AutoDetectParser ? parser : new AutoDetectParser()); +} + + try { parser.parse(in, handler, metadata, context); } catch (Exception ex) {
cxf git commit: Updating TikaContentExtractor to support the embedded attachments
Repository: cxf Updated Branches: refs/heads/master 9810a8448 -> cc2341a45 Updating TikaContentExtractor to support the embedded attachments Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/cc2341a4 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/cc2341a4 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/cc2341a4 Branch: refs/heads/master Commit: cc2341a453a8edd467d83fdeb2c09ea62aee0ffa Parents: 9810a84 Author: Sergey Beryozkin Authored: Thu Sep 15 11:21:46 2016 +0100 Committer: Sergey Beryozkin Committed: Thu Sep 15 11:21:46 2016 +0100 -- .../ext/search/tika/TikaContentExtractor.java | 40 +++- 1 file changed, 31 insertions(+), 9 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/cc2341a4/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/tika/TikaContentExtractor.java -- diff --git a/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/tika/TikaContentExtractor.java b/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/tika/TikaContentExtractor.java index fd3511a..e4d1918 100644 --- a/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/tika/TikaContentExtractor.java +++ b/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/tika/TikaContentExtractor.java @@ -36,6 +36,7 @@ import org.apache.tika.detect.Detector; import org.apache.tika.exception.TikaException; import org.apache.tika.metadata.Metadata; import org.apache.tika.mime.MediaType; +import org.apache.tika.parser.AutoDetectParser; import org.apache.tika.parser.ParseContext; import org.apache.tika.parser.Parser; import org.apache.tika.sax.ToTextContentHandler; @@ -47,6 +48,13 @@ public class TikaContentExtractor { private final Detector detector; /** + * Create new Tika-based content extractor using AutoDetectParser. + */ +public TikaContentExtractor() { +this(new AutoDetectParser(), false); +} + +/** * Create new Tika-based content extractor using the provided parser instance. * @param parser parser instance */ @@ -159,9 +167,6 @@ public class TikaContentExtractor { if (in == null) { return null; } -if (context == null) { -context = new ParseContext(); -} final Metadata metadata = new Metadata(); try { @@ -171,20 +176,37 @@ public class TikaContentExtractor { mediaType = MediaType.parse(mtHint.toString()); } else if (detector != null && in.markSupported()) { mediaType = detector.detect(in, metadata); -} +} +if (mediaType != null) { +metadata.set(Metadata.CONTENT_TYPE, mediaType.toString()); +} Parser parser = null; -for (Parser p : parsers) { -if (mediaType != null && !p.getSupportedTypes(context).contains(mediaType)) { -continue; +if (parsers.size() == 1) { +parser = parsers.get(0); +} else { +for (Parser p : parsers) { +if (mediaType != null && !p.getSupportedTypes(context).contains(mediaType)) { +continue; +} +parser = p; +break; } -parser = p; -break; } if (parser == null) { return null; } +if (context == null) { +context = new ParseContext(); +} +if (context.get(Parser.class) == null) { +// to process the embedded attachments +context.set(Parser.class, +parser instanceof AutoDetectParser ? parser : new AutoDetectParser()); +} + + try { parser.parse(in, handler, metadata, context); } catch (Exception ex) {