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 2008/11/05 18:39:39 UTC
svn commit: r711635 - in /cxf/trunk/rt/frontend/jaxrs/src:
main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletResponse.java
main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
Author: sergeyb
Date: Wed Nov 5 09:39:37 2008
New Revision: 711635
URL: http://svn.apache.org/viewvc?rev=711635&view=rev
Log:
JAX-RS : minor fix to enable @Resource proxies plus adding HttpServletResponse proxy
Added:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletResponse.java (with props)
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
Added: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletResponse.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletResponse.java?rev=711635&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletResponse.java (added)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletResponse.java Wed Nov 5 09:39:37 2008
@@ -0,0 +1,179 @@
+/**
+ * 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.tl;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Locale;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletResponse;
+
+public class ThreadLocalHttpServletResponse extends AbstractThreadLocalProxy<HttpServletResponse>
+ implements HttpServletResponse {
+
+ public void addCookie(Cookie cookie) {
+ get().addCookie(cookie);
+
+ }
+
+ public void addDateHeader(String name, long date) {
+ get().addDateHeader(name, date);
+ }
+
+ public void addHeader(String name, String value) {
+ get().addHeader(name, value);
+
+ }
+
+ public void addIntHeader(String name, int value) {
+ get().addIntHeader(name, value);
+
+ }
+
+ public boolean containsHeader(String name) {
+ return get().containsHeader(name);
+ }
+
+ public String encodeRedirectURL(String url) {
+ return get().encodeRedirectURL(url);
+ }
+
+ @SuppressWarnings("deprecation")
+ public String encodeRedirectUrl(String url) {
+ return get().encodeRedirectUrl(url);
+ }
+
+ public String encodeURL(String url) {
+ return get().encodeURL(url);
+ }
+
+ @SuppressWarnings("deprecation")
+ public String encodeUrl(String url) {
+ return get().encodeUrl(url);
+ }
+
+ public void sendError(int sc) throws IOException {
+ get().sendError(sc);
+ }
+
+ public void sendError(int sc, String msg) throws IOException {
+ get().sendError(sc, msg);
+ }
+
+ public void sendRedirect(String location) throws IOException {
+ get().sendRedirect(location);
+ }
+
+ public void setDateHeader(String name, long date) {
+ get().setDateHeader(name, date);
+ }
+
+ public void setHeader(String name, String value) {
+ get().setHeader(name, value);
+
+ }
+
+ public void setIntHeader(String name, int value) {
+ get().setIntHeader(name, value);
+ }
+
+ public void setStatus(int sc) {
+ get().setStatus(sc);
+
+ }
+
+ @SuppressWarnings("deprecation")
+ public void setStatus(int sc, String sm) {
+ get().setStatus(sc, sm);
+ }
+
+ public void flushBuffer() throws IOException {
+ get().flushBuffer();
+
+ }
+
+ public int getBufferSize() {
+ return get().getBufferSize();
+ }
+
+ public String getCharacterEncoding() {
+ return get().getCharacterEncoding();
+ }
+
+ public String getContentType() {
+ return get().getContentType();
+ }
+
+ public Locale getLocale() {
+ return get().getLocale();
+ }
+
+ public ServletOutputStream getOutputStream() throws IOException {
+ return get().getOutputStream();
+ }
+
+ public PrintWriter getWriter() throws IOException {
+ return get().getWriter();
+ }
+
+ public boolean isCommitted() {
+ return get().isCommitted();
+ }
+
+ public void reset() {
+ get().reset();
+
+ }
+
+ public void resetBuffer() {
+ get().resetBuffer();
+
+ }
+
+ public void setBufferSize(int size) {
+ get().setBufferSize(size);
+
+ }
+
+ public void setCharacterEncoding(String charset) {
+ get().setCharacterEncoding(charset);
+
+ }
+
+ public void setContentLength(int len) {
+ get().setContentLength(len);
+
+ }
+
+ public void setContentType(String type) {
+ get().setContentType(type);
+
+ }
+
+ public void setLocale(Locale loc) {
+ get().setLocale(loc);
+
+ }
+
+
+
+}
Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletResponse.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletResponse.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java?rev=711635&r1=711634&r2=711635&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java Wed Nov 5 09:39:37 2008
@@ -41,6 +41,7 @@
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Request;
@@ -55,6 +56,7 @@
import org.apache.cxf.jaxrs.impl.tl.ThreadLocalContextResolver;
import org.apache.cxf.jaxrs.impl.tl.ThreadLocalHttpHeaders;
import org.apache.cxf.jaxrs.impl.tl.ThreadLocalHttpServletRequest;
+import org.apache.cxf.jaxrs.impl.tl.ThreadLocalHttpServletResponse;
import org.apache.cxf.jaxrs.impl.tl.ThreadLocalMessageBodyWorkers;
import org.apache.cxf.jaxrs.impl.tl.ThreadLocalProxy;
import org.apache.cxf.jaxrs.impl.tl.ThreadLocalRequest;
@@ -296,6 +298,8 @@
proxy = new ThreadLocalHttpServletRequest();
} else if (ServletContext.class.isAssignableFrom(type)) {
proxy = new ThreadLocalServletContext();
+ } else if (HttpServletResponse.class.isAssignableFrom(type)) {
+ proxy = new ThreadLocalHttpServletResponse();
}
return proxy;
}
@@ -314,6 +318,11 @@
ThreadLocalProxy proxy = cri.getContextFieldProxy(f);
InjectionUtils.injectFieldValue(f, instance, proxy);
}
+
+ for (Field f : cri.getResourceFields()) {
+ ThreadLocalProxy proxy = cri.getResourceFieldProxy(f);
+ InjectionUtils.injectFieldValue(f, instance, proxy);
+ }
}
@SuppressWarnings("unchecked")
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java?rev=711635&r1=711634&r2=711635&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java Wed Nov 5 09:39:37 2008
@@ -700,6 +700,10 @@
m.put(Message.PROTOCOL_HEADERS, new HashMap<String, List<String>>());
ServletContext servletContextMock = EasyMock.createNiceMock(ServletContext.class);
m.put(AbstractHTTPDestination.HTTP_CONTEXT, servletContextMock);
+ HttpServletRequest httpRequest = EasyMock.createNiceMock(HttpServletRequest.class);
+ m.put(AbstractHTTPDestination.HTTP_REQUEST, httpRequest);
+ HttpServletResponse httpResponse = EasyMock.createNiceMock(HttpServletResponse.class);
+ m.put(AbstractHTTPDestination.HTTP_RESPONSE, httpResponse);
InjectionUtils.injectContextProxies(cri, cri.getResourceProvider().getInstance());
InjectionUtils.injectContextFields(c, cri, m);
@@ -720,6 +724,37 @@
assertSame(servletContextMock,
((ThreadLocalProxy)c.getThreadLocalServletContext()).get());
+ assertSame(servletContextMock,
+ ((ThreadLocalProxy)c.getServletContext()).get());
+
+ assertSame(httpRequest,
+ ((ThreadLocalProxy)c.getServletRequest()).get());
+ assertSame(httpResponse,
+ ((ThreadLocalProxy)c.getServletResponse()).get());
+ }
+
+ @Test
+ public void testSingletonHttpResourceFields() throws Exception {
+
+ ClassResourceInfo cri = new ClassResourceInfo(Customer.class, true);
+ Customer c = new Customer();
+ cri.setResourceProvider(new SingletonResourceProvider(c));
+
+ Message m = new MessageImpl();
+ ServletContext servletContextMock = EasyMock.createNiceMock(ServletContext.class);
+ m.put(AbstractHTTPDestination.HTTP_CONTEXT, servletContextMock);
+ HttpServletRequest httpRequest = EasyMock.createNiceMock(HttpServletRequest.class);
+ m.put(AbstractHTTPDestination.HTTP_REQUEST, httpRequest);
+ HttpServletResponse httpResponse = EasyMock.createNiceMock(HttpServletResponse.class);
+ m.put(AbstractHTTPDestination.HTTP_RESPONSE, httpResponse);
+ InjectionUtils.injectContextProxies(cri, cri.getResourceProvider().getInstance());
+ InjectionUtils.injectResourceFields(c, cri, m);
+ assertSame(servletContextMock,
+ ((ThreadLocalProxy)c.getServletContextResource()).get());
+ assertSame(httpRequest,
+ ((ThreadLocalProxy)c.getServletRequestResource()).get());
+ assertSame(httpResponse,
+ ((ThreadLocalProxy)c.getServletResponseResource()).get());
}
@Test