You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2015/12/14 13:20:50 UTC
cxf git commit: [CXF-6709] The best effort at returning the original
IS
Repository: cxf
Updated Branches:
refs/heads/master 853014d07 -> 2f61e43a1
[CXF-6709] The best effort at returning the original IS
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/2f61e43a
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/2f61e43a
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/2f61e43a
Branch: refs/heads/master
Commit: 2f61e43a1d8f07154893e71d1839ea6a2f1e40fa
Parents: 853014d
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Mon Dec 14 12:17:26 2015 +0000
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Mon Dec 14 12:17:26 2015 +0000
----------------------------------------------------------------------
.../jaxrs/impl/HttpServletRequestFilter.java | 51 ++++++++++++++++++++
.../org/apache/cxf/jaxrs/utils/JAXRSUtils.java | 4 +-
.../cxf/jaxrs/ext/MessageContextImplTest.java | 8 ++-
.../apache/cxf/jaxrs/utils/JAXRSUtilsTest.java | 21 +++++---
.../cxf/systest/jaxrs/BookStoreSpring.java | 13 ++++-
.../jaxrs/JAXRSClientServerSpringBookTest.java | 12 ++++-
6 files changed, 96 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/2f61e43a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpServletRequestFilter.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpServletRequestFilter.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpServletRequestFilter.java
new file mode 100644
index 0000000..9d393d4
--- /dev/null
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpServletRequestFilter.java
@@ -0,0 +1,51 @@
+/**
+ * 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.jaxrs.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+
+import org.apache.cxf.io.DelegatingInputStream;
+import org.apache.cxf.message.Message;
+
+public class HttpServletRequestFilter extends HttpServletRequestWrapper {
+
+ private Message m;
+ public HttpServletRequestFilter(HttpServletRequest request, Message message) {
+ super(request);
+ m = message;
+ }
+ @Override
+ public ServletInputStream getInputStream() throws IOException {
+ InputStream is = m.getContent(InputStream.class);
+ if (is instanceof DelegatingInputStream) {
+ is = ((DelegatingInputStream)is).getInputStream();
+ }
+ if (is instanceof ServletInputStream) {
+ return (ServletInputStream)is;
+ } else {
+ return super.getInputStream();
+ }
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/cxf/blob/2f61e43a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
index 26120ec..5b3a808 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
@@ -103,6 +103,7 @@ import org.apache.cxf.jaxrs.impl.AsyncResponseImpl;
import org.apache.cxf.jaxrs.impl.ContainerRequestContextImpl;
import org.apache.cxf.jaxrs.impl.ContainerResponseContextImpl;
import org.apache.cxf.jaxrs.impl.HttpHeadersImpl;
+import org.apache.cxf.jaxrs.impl.HttpServletRequestFilter;
import org.apache.cxf.jaxrs.impl.HttpServletResponseFilter;
import org.apache.cxf.jaxrs.impl.MediaTypeHeaderProvider;
import org.apache.cxf.jaxrs.impl.MetadataMap;
@@ -1155,7 +1156,8 @@ public final class JAXRSUtils {
Object value = null;
if (clazz == HttpServletRequest.class) {
- value = m.get(AbstractHTTPDestination.HTTP_REQUEST);
+ HttpServletRequest request = (HttpServletRequest)m.get(AbstractHTTPDestination.HTTP_REQUEST);
+ value = request != null ? new HttpServletRequestFilter(request, m) : null;
} else if (clazz == HttpServletResponse.class) {
HttpServletResponse response = (HttpServletResponse)m.get(AbstractHTTPDestination.HTTP_RESPONSE);
value = response != null ? new HttpServletResponseFilter(response, m) : null;
http://git-wip-us.apache.org/repos/asf/cxf/blob/2f61e43a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/MessageContextImplTest.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/MessageContextImplTest.java b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/MessageContextImplTest.java
index b40c669..64fcd48 100644
--- a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/MessageContextImplTest.java
+++ b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/MessageContextImplTest.java
@@ -34,6 +34,7 @@ import javax.xml.bind.JAXBContext;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.jaxrs.impl.HttpHeadersImpl;
+import org.apache.cxf.jaxrs.impl.HttpServletRequestFilter;
import org.apache.cxf.jaxrs.impl.HttpServletResponseFilter;
import org.apache.cxf.jaxrs.impl.ProvidersImpl;
import org.apache.cxf.jaxrs.impl.RequestImpl;
@@ -126,8 +127,11 @@ public class MessageContextImplTest extends Assert {
MessageContext mc = new MessageContextImpl(m);
HttpServletRequest request = EasyMock.createMock(HttpServletRequest.class);
m.put(AbstractHTTPDestination.HTTP_REQUEST, request);
- assertSame(request.getClass(), mc.getHttpServletRequest().getClass());
- assertSame(request.getClass(), mc.getContext(HttpServletRequest.class).getClass());
+
+ assertSame(request.getClass(),
+ ((HttpServletRequestFilter)mc.getHttpServletRequest()).getRequest().getClass());
+ assertSame(request.getClass(),
+ ((HttpServletRequestFilter)mc.getContext(HttpServletRequest.class)).getRequest().getClass());
}
@Test
http://git-wip-us.apache.org/repos/asf/cxf/blob/2f61e43a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
index 856d02f..0cd52fc 100644
--- a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
+++ b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
@@ -75,6 +75,7 @@ import org.apache.cxf.jaxrs.SimpleFactory;
import org.apache.cxf.jaxrs.Timezone;
import org.apache.cxf.jaxrs.ext.ContextProvider;
import org.apache.cxf.jaxrs.impl.HttpHeadersImpl;
+import org.apache.cxf.jaxrs.impl.HttpServletRequestFilter;
import org.apache.cxf.jaxrs.impl.HttpServletResponseFilter;
import org.apache.cxf.jaxrs.impl.MetadataMap;
import org.apache.cxf.jaxrs.impl.PathSegmentImpl;
@@ -1719,7 +1720,7 @@ public class JAXRSUtilsTest extends Assert {
List<Object> params =
JAXRSUtils.processParameters(ori, new MetadataMap<String, String>(), m);
assertEquals("4 parameters expected", 4, params.size());
- assertSame(request.getClass(), params.get(0).getClass());
+ assertSame(request.getClass(), ((HttpServletRequestFilter)params.get(0)).getRequest().getClass());
assertSame(response.getClass(), params.get(1).getClass());
assertSame(context.getClass(), params.get(2).getClass());
assertSame(config.getClass(), params.get(3).getClass());
@@ -1790,8 +1791,10 @@ public class JAXRSUtilsTest extends Assert {
((ThreadLocalProxy<ServletContext>)c.getServletContext()).get());
assertSame(servletContextMock,
((ThreadLocalProxy<ServletContext>)c.getSuperServletContext()).get());
- assertSame(httpRequest,
- ((ThreadLocalProxy<HttpServletRequest>)c.getServletRequest()).get());
+ HttpServletRequest currentReq =
+ ((ThreadLocalProxy<HttpServletRequest>)c.getServletRequest()).get();
+ assertSame(httpRequest,
+ ((HttpServletRequestFilter)currentReq).getRequest());
HttpServletResponseFilter filter = (
HttpServletResponseFilter)((ThreadLocalProxy<HttpServletResponse>)c.getServletResponse()).get();
assertSame(httpResponse, filter.getResponse());
@@ -1816,8 +1819,10 @@ public class JAXRSUtilsTest extends Assert {
InjectionUtils.injectContextFields(c, cri, m);
assertSame(servletContextMock,
((ThreadLocalProxy<ServletContext>)c.getServletContextResource()).get());
- assertSame(httpRequest,
- ((ThreadLocalProxy<HttpServletRequest>)c.getServletRequestResource()).get());
+ HttpServletRequest currentReq =
+ ((ThreadLocalProxy<HttpServletRequest>)c.getServletRequestResource()).get();
+ assertSame(httpRequest,
+ ((HttpServletRequestFilter)currentReq).getRequest());
HttpServletResponseFilter filter = (
HttpServletResponseFilter)((ThreadLocalProxy<HttpServletResponse>)c.getServletResponseResource())
.get();
@@ -1961,7 +1966,8 @@ public class JAXRSUtilsTest extends Assert {
m.put(AbstractHTTPDestination.HTTP_CONTEXT, context);
InjectionUtils.injectContextFields(c, ori.getClassResourceInfo(), m);
- assertSame(request.getClass(), c.getServletRequestResource().getClass());
+ assertSame(request.getClass(),
+ ((HttpServletRequestFilter)c.getServletRequestResource()).getRequest().getClass());
HttpServletResponseFilter filter = (HttpServletResponseFilter)c.getServletResponseResource();
assertSame(response.getClass(), filter.getResponse().getClass());
assertSame(context.getClass(), c.getServletContextResource().getClass());
@@ -1971,7 +1977,8 @@ public class JAXRSUtilsTest extends Assert {
assertNotNull(c.getServletRequestResource());
assertNotNull(c.getServletResponseResource());
assertNotNull(c.getServletContextResource());
- assertSame(request.getClass(), c.getServletRequest().getClass());
+ assertSame(request.getClass(),
+ ((HttpServletRequestFilter)c.getServletRequestResource()).getRequest().getClass());
filter = (HttpServletResponseFilter)c.getServletResponse();
assertSame(response.getClass(), filter.getResponse().getClass());
assertSame(context.getClass(), c.getServletContext().getClass());
http://git-wip-us.apache.org/repos/asf/cxf/blob/2f61e43a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSpring.java
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSpring.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSpring.java
index 8ae6bff..a367733 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSpring.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSpring.java
@@ -21,6 +21,8 @@ package org.apache.cxf.systest.jaxrs;
import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.net.URI;
import java.util.Collections;
import java.util.HashMap;
@@ -51,13 +53,12 @@ import javax.xml.stream.XMLStreamException;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
-import org.apache.cxf.annotations.Logging;
+import org.apache.cxf.helpers.IOUtils;
import org.apache.cxf.staxutils.DepthExceededStaxException;
import org.apache.cxf.staxutils.StaxUtils;
@Path("/")
@Produces("application/json")
-@Logging
public class BookStoreSpring {
private Map<Long, Book> books = new HashMap<Long, Book>();
@@ -91,6 +92,14 @@ public class BookStoreSpring {
long id = Long.valueOf(req.getParameter("id"));
return new Book(name, id);
}
+ @POST
+ @Path("/bookform")
+ @Consumes("application/xml")
+ @Produces("application/xml")
+ public String echoBookFormXml(@Context HttpServletRequest req) throws IOException {
+ InputStream is = req.getInputStream();
+ return IOUtils.readStringFromStream(is);
+ }
@GET
@Path("/books/webex")
http://git-wip-us.apache.org/repos/asf/cxf/blob/2f61e43a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java
index 6ae9f4e..eb515d7 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java
@@ -100,13 +100,23 @@ public class JAXRSClientServerSpringBookTest extends AbstractBusClientServerTest
public void testEchoBookForm() throws Exception {
String address = "http://localhost:" + PORT + "/bus/thebooksform/bookform";
WebClient wc = WebClient.create(address);
- WebClient.getConfig(wc).getHttpConduit().getClient().setReceiveTimeout(10000000L);
Book b =
wc.form(new Form().param("name", "CXFForm").param("id", "125"))
.readEntity(Book.class);
assertEquals("CXFForm", b.getName());
assertEquals(125L, b.getId());
}
+ @Test
+ public void testEchoBookFormXml() throws Exception {
+ String address = "http://localhost:" + PORT + "/bus/thebooksform/bookform";
+ WebClient wc = WebClient.create(address);
+ WebClient.getConfig(wc).getHttpConduit().getClient().setReceiveTimeout(10000000L);
+ Book b =
+ wc.type("application/xml").post(new Book("CXFFormXml", 125L))
+ .readEntity(Book.class);
+ assertEquals("CXFFormXml", b.getName());
+ assertEquals(125L, b.getId());
+ }
@Test
public void testGetBookWebEx4() throws Exception {