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 2013/02/07 14:13:22 UTC
svn commit: r1443448 - in /tomee/tomee/trunk: ./
container/openejb-core/src/main/java/org/apache/openejb/cdi/
server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/
server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/ se...
Author: rmannibucau
Date: Thu Feb 7 13:13:21 2013
New Revision: 1443448
URL: http://svn.apache.org/viewvc?rev=1443448&view=rev
Log:
TOMEE-762 TOMEE-761 TOMEE-760 cdiejbbean should be passivation capable + xbean 3.13 + org.apache.cxf.transport.endpoint.address attribute for rest services
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
tomee/tomee/trunk/pom.xml
tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/Contexts.java
tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
tomee/tomee/trunk/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RsInterceptorInjectionTest.java
tomee/tomee/trunk/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java?rev=1443448&r1=1443447&r2=1443448&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java Thu Feb 7 13:13:21 2013
@@ -41,6 +41,7 @@ import javax.enterprise.inject.spi.Injec
import javax.enterprise.inject.spi.SessionBeanType;
import javax.persistence.EntityManager;
import java.io.Serializable;
+import java.lang.annotation.Annotation;
import java.lang.reflect.Member;
import java.lang.reflect.Method;
import java.lang.reflect.UndeclaredThrowableException;
@@ -66,6 +67,7 @@ public class CdiEjbBean<T> extends BaseE
super(beanClass, toSessionType(beanContext.getComponentType()), webBeansContext);
this.beanContext = beanContext;
beanContext.set(Bean.class, this);
+ passivatingId = beanContext.getDeploymentID() + getReturnType().getName();
}
@Override // copied to be able to produce EM (should be fixed in OWB for next CDI spec)
@@ -153,11 +155,6 @@ public class CdiEjbBean<T> extends BaseE
}
@Override
- public String getId() {
- return beanContext.getDeploymentID() + getReturnType().getName();
- }
-
- @Override
protected void afterConstructor(T instance, CreationalContext<T> tCreationalContext) {
// no-op
}
@@ -216,23 +213,6 @@ public class CdiEjbBean<T> extends BaseE
@SuppressWarnings("unchecked")
protected T getInstance(final CreationalContext<T> creationalContext) {
return createEjb(creationalContext);
-
- /*
- final T instance;
- if (scopeClass == null || Dependent.class == scopeClass) { // no need to add any layer, null = @New
- instance = createEjb(creationalContext);
- } else { // only stateful normally
- final InstanceBean<T> bean = new InstanceBean<T>(this);
- if (webBeansContext.getBeanManagerImpl().isScopeTypeNormal(scopeClass)) {
- instance = (T) webBeansContext.getProxyFactory().createNormalScopedBeanProxy(bean, creationalContext);
- } else {
- final Context context = webBeansContext.getBeanManagerImpl().getContext(scopeClass);
- instance = context.get(bean, creationalContext);
- }
- bean.setOWBProxy(instance);
- }
- return instance;
- */
}
@Override
@@ -310,8 +290,9 @@ public class CdiEjbBean<T> extends BaseE
* @see org.apache.webbeans.component.AbstractBean#isPassivationCapable()
*/
@Override
- public boolean isPassivationCapable() {
- return getWebBeansContext().getBeanManagerImpl().isPassivatingScope(getScope());
+ public boolean isPassivationCapable() { // dependent means EJB serialization
+ final Class<? extends Annotation> scope = getScope();
+ return Dependent.class.equals(scope) || getWebBeansContext().getBeanManagerImpl().isPassivatingScope(scope);
}
@SuppressWarnings("unchecked")
Modified: tomee/tomee/trunk/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/pom.xml?rev=1443448&r1=1443447&r2=1443448&view=diff
==============================================================================
--- tomee/tomee/trunk/pom.xml (original)
+++ tomee/tomee/trunk/pom.xml Thu Feb 7 13:13:21 2013
@@ -97,7 +97,7 @@
<maven-bundle-plugin.version>2.3.7</maven-bundle-plugin.version>
<!-- This is used by a manifest classpath entry -->
- <xbeanVersion>3.12</xbeanVersion>
+ <xbeanVersion>3.13-SNAPSHOT</xbeanVersion>
<!-- OSGi bundles properties -->
<openejb.bundle.activator/>
Modified: tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/Contexts.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/Contexts.java?rev=1443448&r1=1443447&r2=1443448&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/Contexts.java (original)
+++ tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/Contexts.java Thu Feb 7 13:13:21 2013
@@ -115,6 +115,9 @@ public final class Contexts {
ThreadLocalContextManager.PROVIDERS.set(providers);
} else if (ServletRequest.class.equals(type)) {
ServletRequest servletRequest = JAXRSUtils.createContextValue(exchange.getInMessage(), null, ServletRequest.class);
+ if (servletRequest == null) { // probably the case with CXF
+ servletRequest = JAXRSUtils.createContextValue(exchange.getInMessage(), null, HttpServletRequest.class);
+ }
ThreadLocalContextManager.SERVLET_REQUEST.set(servletRequest);
} else if (HttpServletRequest.class.equals(type)) {
HttpServletRequest httpServletRequest = JAXRSUtils.createContextValue(exchange.getInMessage(), null, HttpServletRequest.class);
Modified: tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java?rev=1443448&r1=1443447&r2=1443448&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java (original)
+++ tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java Thu Feb 7 13:13:21 2013
@@ -31,6 +31,7 @@ import org.apache.cxf.jaxrs.provider.jso
import org.apache.cxf.service.invoker.Invoker;
import org.apache.cxf.transport.http.AbstractHTTPDestination;
import org.apache.cxf.transport.http.HTTPTransportFactory;
+import org.apache.cxf.transport.servlet.BaseUrlHelper;
import org.apache.openejb.BeanContext;
import org.apache.openejb.Injection;
import org.apache.openejb.assembler.classic.ServiceInfo;
@@ -111,6 +112,13 @@ public class CxfRsHttpListener implement
return;
}
+ // fix the address (to manage multiple connectors)
+ if (httpRequest instanceof HttpRequestImpl) {
+ ((HttpRequestImpl) httpRequest).initPathFromContext(context);
+ }
+ httpRequest.setAttribute("org.apache.cxf.transport.endpoint.address", BaseUrlHelper.getBaseURL(httpRequest) + "/");
+
+ // delegate invocation
destination.invoke(null, httpRequest.getServletContext(), new HttpServletRequestWrapper(httpRequest) {
// see org.apache.cxf.jaxrs.utils.HttpUtils.getPathToMatch()
// cxf uses implicitly getRawPath() from the endpoint but not for the request URI
Modified: tomee/tomee/trunk/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RsInterceptorInjectionTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RsInterceptorInjectionTest.java?rev=1443448&r1=1443447&r2=1443448&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RsInterceptorInjectionTest.java (original)
+++ tomee/tomee/trunk/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RsInterceptorInjectionTest.java Thu Feb 7 13:13:21 2013
@@ -31,6 +31,7 @@ import javax.ejb.Singleton;
import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptors;
import javax.interceptor.InvocationContext;
+import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.GET;
@@ -100,10 +101,9 @@ public class RsInterceptorInjectionTest
@Context
private HttpServletRequest httpServletRequest;
-// TODO TOMEE-684
-// @Context
-// private ServletRequest servletRequest;
-//
+ @Context
+ private ServletRequest servletRequest;
+
@Context
private UriInfo uriInfo;
@@ -113,7 +113,7 @@ public class RsInterceptorInjectionTest
@Context
private ContextResolver contextResolver;
-// TODO TOMEE-685
+// TODO TOMEE-685 - does it make sense since we don't define a strict servlet?
// @Context
// private ServletConfig servletConfig;
Modified: tomee/tomee/trunk/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java?rev=1443448&r1=1443447&r2=1443448&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java (original)
+++ tomee/tomee/trunk/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java Thu Feb 7 13:13:21 2013
@@ -143,6 +143,7 @@ public class HttpRequestImpl implements
private HttpSession session;
private String encoding = "UTF-8";
private ServletContext context = null;
+ private String contextPath = "";
public HttpRequestImpl(URI socketURI) {
this.socketURI = socketURI;
@@ -721,7 +722,7 @@ public class HttpRequestImpl implements
@Override
public String getContextPath() {
- return path;
+ return contextPath;
}
public String extractContextPath() {
@@ -1022,7 +1023,14 @@ public class HttpRequestImpl implements
final String rawPath = requestRawPath();
if (context != null) {
- setPath(rawPath.substring(1 + context.length(), rawPath.length())); // 1 because of the first /
+ if (context.endsWith("/")) {
+ final int endIndex = context.length() - 1;
+ path = rawPath.substring(endIndex, rawPath.length());
+ contextPath = context.substring(0, endIndex);
+ } else {
+ path = rawPath.substring(context.length(), rawPath.length()); // 1 because of the first /
+ contextPath = context;
+ }
}
}