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;
+            }
         }
     }