You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/09/20 09:24:17 UTC
svn commit: r1387893 - in /openejb/trunk/openejb:
container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/
container/openejb-core/src/main/java/org/apache/openejb/config/
container/openejb-core/src/main/java/org/apache/openejb/rest/ s...
Author: rmannibucau
Date: Thu Sep 20 07:24:16 2012
New Revision: 1387893
URL: http://svn.apache.org/viewvc?rev=1387893&view=rev
Log:
TOMEE-422 HttpServletResponse and ServletConfig for JAXRS @Context injections
Added:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalHttpServletResponse.java
- copied, changed from r1387468, openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalHttpServletRequest.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalServletConfig.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalContextManager.java
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RsInjectionTest.java
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java?rev=1387893&r1=1387892&r2=1387893&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java Thu Sep 20 07:24:16 2012
@@ -58,8 +58,10 @@ import javax.naming.LinkRef;
import javax.naming.Name;
import javax.naming.NamingException;
import javax.persistence.EntityManagerFactory;
+import javax.servlet.ServletConfig;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import javax.transaction.TransactionManager;
import javax.transaction.UserTransaction;
import javax.validation.Validator;
@@ -300,6 +302,10 @@ public class JndiEncBuilder {
reference = new ObjectReference(ThreadLocalContextManager.CONTEXT_RESOLVER);
} else if (Providers.class.equals(type)) {
reference = new ObjectReference(ThreadLocalContextManager.PROVIDERS);
+ } else if (ServletConfig.class.equals(type)) {
+ reference = new ObjectReference(ThreadLocalContextManager.SERVLET_CONFIG);
+ } else if (HttpServletResponse.class.equals(type)) {
+ reference = new ObjectReference(ThreadLocalContextManager.HTTP_SERVLET_RESPONSE);
} else if (referenceInfo.resourceID != null) {
String jndiName = "openejb/Resource/" + referenceInfo.resourceID;
reference = new IntraVmJndiReference(jndiName);
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java?rev=1387893&r1=1387892&r2=1387893&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java Thu Sep 20 07:24:16 2012
@@ -62,8 +62,10 @@ import javax.ejb.TimerService;
import javax.enterprise.inject.spi.BeanManager;
import javax.jms.Queue;
import javax.jms.Topic;
+import javax.servlet.ServletConfig;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import javax.transaction.TransactionManager;
import javax.transaction.TransactionSynchronizationRegistry;
@@ -137,6 +139,8 @@ public class AutoConfig implements Dynam
ignoredReferenceTypes.add(Providers.class.getName());
ignoredReferenceTypes.add(ServletRequest.class.getName());
ignoredReferenceTypes.add(HttpServletRequest.class.getName());
+ ignoredReferenceTypes.add(ServletConfig.class.getName());
+ ignoredReferenceTypes.add(HttpServletResponse.class.getName());
}
private final ConfigurationFactory configFactory;
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalContextManager.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalContextManager.java?rev=1387893&r1=1387892&r2=1387893&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalContextManager.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalContextManager.java Thu Sep 20 07:24:16 2012
@@ -21,8 +21,10 @@ import javax.ws.rs.core.Application;
public class ThreadLocalContextManager {
public static final ThreadLocalRequest REQUEST = new ThreadLocalRequest();
+ public static final ThreadLocalServletConfig SERVLET_CONFIG = new ThreadLocalServletConfig();
public static final ThreadLocalServletRequest SERVLET_REQUEST = new ThreadLocalServletRequest();
public static final ThreadLocalHttpServletRequest HTTP_SERVLET_REQUEST = new ThreadLocalHttpServletRequest();
+ public static final ThreadLocalHttpServletResponse HTTP_SERVLET_RESPONSE = new ThreadLocalHttpServletResponse();
public static final ThreadLocalUriInfo URI_INFO = new ThreadLocalUriInfo();
public static final ThreadLocalHttpHeaders HTTP_HEADERS = new ThreadLocalHttpHeaders();
public static final ThreadLocalSecurityContext SECURITY_CONTEXT = new ThreadLocalSecurityContext();
@@ -33,7 +35,9 @@ public class ThreadLocalContextManager {
public static void reset() {
REQUEST.remove();
SERVLET_REQUEST.remove();
+ SERVLET_CONFIG.remove();
HTTP_SERVLET_REQUEST.remove();
+ HTTP_SERVLET_RESPONSE.remove();
URI_INFO.remove();
HTTP_HEADERS.remove();
SECURITY_CONTEXT.remove();
Copied: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalHttpServletResponse.java (from r1387468, openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalHttpServletRequest.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalHttpServletResponse.java?p2=openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalHttpServletResponse.java&p1=openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalHttpServletRequest.java&r1=1387468&r2=1387893&rev=1387893&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalHttpServletRequest.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalHttpServletResponse.java Thu Sep 20 07:24:16 2012
@@ -17,171 +17,201 @@
package org.apache.openejb.rest;
+import org.apache.openejb.core.ivm.naming.AbstractThreadLocalProxy;
+
import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.http.Part;
+import javax.ws.rs.ext.Providers;
import java.io.IOException;
+import java.io.PrintWriter;
import java.security.Principal;
import java.util.Collection;
import java.util.Enumeration;
+import java.util.Locale;
+
+public class ThreadLocalHttpServletResponse extends AbstractThreadLocalProxy<HttpServletResponse> implements HttpServletResponse {
+ @Override
+ public void addCookie(final Cookie cookie) {
+ get().addCookie(cookie);
+ }
+
+ @Override
+ public void addDateHeader(final String name, final long date) {
+ get().addDateHeader(name, date);
+ }
+
+ @Override
+ public void addHeader(final String name, final String value) {
+ get().addHeader(name, value);
+ }
+
+ @Override
+ public void addIntHeader(final String name, final int value) {
+ get().addIntHeader(name, value);
+ }
-public class ThreadLocalHttpServletRequest extends ThreadLocalServletRequest
- implements HttpServletRequest {
+ @Override
+ public boolean containsHeader(final String name) {
+ return get().containsHeader(name);
+ }
- private HttpServletRequest request() {
- return (HttpServletRequest) super.get();
+ @Override
+ public String encodeURL(final String url) {
+ return get().encodeURL(url);
}
@Override
- public boolean authenticate(HttpServletResponse httpServletResponse) throws IOException, ServletException {
- return request().authenticate(httpServletResponse);
+ public String encodeRedirectURL(final String url) {
+ return get().encodeRedirectURL(url);
}
@Override
- public String getAuthType() {
- return request().getAuthType();
+ public String encodeUrl(final String url) {
+ return get().encodeUrl(url);
}
@Override
- public String getContextPath() {
- return request().getContextPath();
+ public String encodeRedirectUrl(final String url) {
+ return get().encodeRedirectUrl(url);
}
@Override
- public Cookie[] getCookies() {
- return request().getCookies();
+ public String getHeader(final String name) {
+ return get().getHeader(name);
}
@Override
- public long getDateHeader(String s) {
- return request().getDateHeader(s);
+ public Collection<String> getHeaderNames() {
+ return get().getHeaderNames();
}
@Override
- public String getHeader(String s) {
- return request().getHeader(s);
+ public Collection<String> getHeaders(final String headerName) {
+ return get().getHeaders(headerName);
}
@Override
- public Enumeration<String> getHeaderNames() {
- return request().getHeaderNames();
+ public int getStatus() {
+ return get().getStatus();
}
@Override
- public Enumeration<String> getHeaders(String s) {
- return request().getHeaders(s);
+ public void sendError(final int sc) throws IOException {
+ get().sendError(sc);
}
@Override
- public int getIntHeader(String s) {
- return request().getIntHeader(s);
+ public void sendError(final int sc, final String msg) throws IOException {
+ get().sendError(sc, msg);
}
@Override
- public String getMethod() {
- return request().getMethod();
+ public void sendRedirect(final String location) throws IOException {
+ get().sendRedirect(location);
}
@Override
- public Part getPart(String s) throws IOException, ServletException {
- return request().getPart(s);
+ public void setDateHeader(final String name, final long date) {
+ get().setDateHeader(name, date);
}
@Override
- public Collection<Part> getParts() throws IOException, ServletException {
- return request().getParts();
+ public void setHeader(final String name, final String value) {
+ get().setHeader(name, value);
}
@Override
- public String getPathInfo() {
- return request().getPathInfo();
+ public void setIntHeader(final String name, final int value) {
+ get().setIntHeader(name, value);
}
@Override
- public String getPathTranslated() {
- return request().getPathTranslated();
+ public void setStatus(final int sc) {
+ get().setStatus(sc);
}
@Override
- public String getQueryString() {
- return request().getQueryString();
+ public void setStatus(final int sc, final String sm) {
+ get().setStatus(sc, sm);
}
@Override
- public String getRemoteUser() {
- return request().getRemoteUser();
+ public void flushBuffer() throws IOException {
+ get().flushBuffer();
}
@Override
- public String getRequestedSessionId() {
- return request().getRequestedSessionId();
+ public int getBufferSize() {
+ return get().getBufferSize();
}
@Override
- public String getRequestURI() {
- return request().getRequestURI();
+ public String getCharacterEncoding() {
+ return get().getCharacterEncoding();
}
@Override
- public StringBuffer getRequestURL() {
- return request().getRequestURL();
+ public String getContentType() {
+ return get().getContentType();
}
@Override
- public String getServletPath() {
- return request().getServletPath();
+ public Locale getLocale() {
+ return get().getLocale();
}
@Override
- public HttpSession getSession() {
- return request().getSession();
+ public ServletOutputStream getOutputStream() throws IOException {
+ return get().getOutputStream();
}
@Override
- public HttpSession getSession(boolean b) {
- return request().getSession(b);
+ public PrintWriter getWriter() throws IOException {
+ return get().getWriter();
}
@Override
- public Principal getUserPrincipal() {
- return request().getUserPrincipal();
+ public boolean isCommitted() {
+ return get().isCommitted();
}
@Override
- public boolean isRequestedSessionIdFromCookie() {
- return request().isRequestedSessionIdFromCookie();
+ public void reset() {
+ get().reset();
}
@Override
- public boolean isRequestedSessionIdFromUrl() {
- return request().isRequestedSessionIdFromUrl();
+ public void resetBuffer() {
+ get().resetBuffer();
}
@Override
- public boolean isRequestedSessionIdFromURL() {
- return request().isRequestedSessionIdFromURL();
+ public void setBufferSize(final int size) {
+ get().setBufferSize(size);
}
@Override
- public boolean isRequestedSessionIdValid() {
- return request().isRequestedSessionIdValid();
+ public void setCharacterEncoding(final String charset) {
+ get().setCharacterEncoding(charset);
}
@Override
- public boolean isUserInRole(String s) {
- return request().isUserInRole(s);
+ public void setContentLength(final int len) {
+ get().setContentLength(len);
}
@Override
- public void login(String s, String s1) throws ServletException {
- request().login(s, s1);
+ public void setContentType(final String type) {
+ get().setContentType(type);
}
@Override
- public void logout() throws ServletException {
- request().logout();
+ public void setLocale(final Locale loc) {
+ get().setLocale(loc);
}
}
Added: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalServletConfig.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalServletConfig.java?rev=1387893&view=auto
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalServletConfig.java (added)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalServletConfig.java Thu Sep 20 07:24:16 2012
@@ -0,0 +1,46 @@
+/*
+ * 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.openejb.rest;
+
+import org.apache.openejb.core.ivm.naming.AbstractThreadLocalProxy;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import java.util.Enumeration;
+
+public class ThreadLocalServletConfig extends AbstractThreadLocalProxy<ServletConfig> implements ServletConfig {
+ @Override
+ public String getServletName() {
+ return get().getServletName();
+ }
+
+ @Override
+ public ServletContext getServletContext() {
+ return get().getServletContext();
+ }
+
+ @Override
+ public String getInitParameter(final String name) {
+ return get().getInitParameter(name);
+ }
+
+ @Override
+ public Enumeration<String> getInitParameterNames() {
+ return get().getInitParameterNames();
+ }
+}
Modified: openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java?rev=1387893&r1=1387892&r2=1387893&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java (original)
+++ openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java Thu Sep 20 07:24:16 2012
@@ -24,8 +24,10 @@ import org.apache.cxf.message.Exchange;
import org.apache.openejb.InvalidateReferenceException;
import org.apache.openejb.rest.ThreadLocalContextManager;
+import javax.servlet.ServletConfig;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.SecurityContext;
@@ -69,6 +71,12 @@ public class OpenEJBEJBInvoker extends J
} else if (HttpServletRequest.class.equals(type)) {
HttpServletRequest httpServletRequest = JAXRSUtils.createContextValue(exchange.getInMessage(), null, HttpServletRequest.class);
ThreadLocalContextManager.HTTP_SERVLET_REQUEST.set(httpServletRequest);
+ } else if (HttpServletResponse.class.equals(type)) {
+ HttpServletResponse httpServletResponse = JAXRSUtils.createContextValue(exchange.getInMessage(), null, HttpServletResponse.class);
+ ThreadLocalContextManager.HTTP_SERVLET_RESPONSE.set(httpServletResponse);
+ } else if (ServletConfig.class.equals(type)) {
+ ServletConfig servletConfig = JAXRSUtils.createContextValue(exchange.getInMessage(), null, ServletConfig.class);
+ ThreadLocalContextManager.SERVLET_CONFIG.set(servletConfig);
}
}
Modified: openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RsInjectionTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RsInjectionTest.java?rev=1387893&r1=1387892&r2=1387893&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RsInjectionTest.java (original)
+++ openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RsInjectionTest.java Thu Sep 20 07:24:16 2012
@@ -27,6 +27,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import javax.ejb.Singleton;
+import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
@@ -65,10 +66,13 @@ public class RsInjectionTest {
@Context
private Providers providers;
+ @Context
+ private HttpServletResponse response;
+
@GET
@Path("/check")
public boolean check() {
- return providers != null;
+ return providers != null && response != null;
}
}
}