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 2011/07/26 00:03:05 UTC

svn commit: r1150931 - in /openejb/trunk/openejb3: 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/ ...

Author: rmannibucau
Date: Mon Jul 25 22:03:02 2011
New Revision: 1150931

URL: http://svn.apache.org/viewvc?rev=1150931&view=rev
Log:
OPENEJB-1237 putting REST injections into jndi builders

Removed:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalApplication.java
Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalContextManager.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyFactory.java
    openejb/trunk/openejb3/examples/pom.xml
    openejb/trunk/openejb3/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java
    openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
    openejb/trunk/openejb3/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1150931&r1=1150930&r2=1150931&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Mon Jul 25 22:03:02 2011
@@ -777,19 +777,6 @@ public class Assembler extends Assembler
                 }
             }
 
-            // REST context resources
-            try {
-                containerSystemContext.bind("openejb/Resource/rest/context/Request", ThreadLocalContextManager.REQUEST);
-                containerSystemContext.bind("openejb/Resource/rest/context/UriInfo", ThreadLocalContextManager.URI_INFO);
-                containerSystemContext.bind("openejb/Resource/rest/context/HttpHeaders", ThreadLocalContextManager.HTTP_HEADERS);
-                containerSystemContext.bind("openejb/Resource/rest/context/SecurityContext", ThreadLocalContextManager.SECURITY_CONTEXT);
-                // TODO:
-                // containerSystemContext.bind("openejb/Resource/rest/context/ContextResolver", ThreadLocalContextManager.CONTEXT_RESOLVER);
-                // containerSystemContext.bind("openejb/Resource/rest/context/Application", ThreadLocalContextManager.APPLICATION);
-            } catch (NameAlreadyBoundException ignored) {
-                // no-op
-            }
-
             SystemInstance systemInstance = SystemInstance.get();
 
             // WebApp
@@ -1086,19 +1073,6 @@ public class Assembler extends Assembler
             }
         }
 
-        // REST context resources
-        try {
-            globalContext.unbind("openejb/Resource/rest/context/Request");
-            globalContext.unbind("openejb/Resource/rest/context/UriInfo");
-            globalContext.unbind("openejb/Resource/rest/context/HttpHeaders");
-            globalContext.unbind("openejb/Resource/rest/context/SecurityContext");
-            // TODO:
-            // globalContext.unbind("openejb/Resource/rest/context/ContextResolver");
-            // globalContext.unbind("openejb/Resource/rest/context/Application");
-        } catch (Throwable ignored) {
-            // no-op
-        }
-
         for (PersistenceUnitInfo unitInfo : appInfo.persistenceUnits) {
             try {
                 Object object = globalContext.lookup("openejb/PersistenceUnit/" + unitInfo.id);

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java?rev=1150931&r1=1150930&r2=1150931&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java Mon Jul 25 22:03:02 2011
@@ -29,6 +29,7 @@ import org.apache.openejb.core.ivm.namin
 import org.apache.openejb.core.ivm.naming.JaxWsServiceReference;
 import org.apache.openejb.core.ivm.naming.JndiReference;
 import org.apache.openejb.core.ivm.naming.JndiUrlReference;
+import org.apache.openejb.core.ivm.naming.ObjectReference;
 import org.apache.openejb.core.ivm.naming.PersistenceContextReference;
 import org.apache.openejb.core.ivm.naming.Reference;
 import org.apache.openejb.core.ivm.naming.SystemComponentReference;
@@ -39,6 +40,7 @@ import org.apache.openejb.core.webservic
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.persistence.JtaEntityManager;
 import org.apache.openejb.persistence.JtaEntityManagerRegistry;
+import org.apache.openejb.rest.ThreadLocalContextManager;
 import org.apache.openejb.spi.ContainerSystem;
 import org.apache.openejb.util.Classes;
 import org.apache.openejb.util.IntrospectionSupport;
@@ -59,6 +61,11 @@ import javax.transaction.TransactionMana
 import javax.transaction.UserTransaction;
 import javax.validation.Validator;
 import javax.validation.ValidatorFactory;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Request;
+import javax.ws.rs.core.SecurityContext;
+import javax.ws.rs.core.UriInfo;
+import javax.ws.rs.ext.ContextResolver;
 import javax.xml.ws.Service;
 import javax.xml.ws.WebServiceContext;
 import java.io.Serializable;
@@ -267,6 +274,16 @@ public class JndiEncBuilder {
                 ManagedBean managed = type.getAnnotation(ManagedBean.class);
                 String name = managed.value().length() == 0 ? type.getSimpleName() : managed.value();
                 reference = new LinkRef("module/" + name);
+            } else if (Request.class.equals(type)) {
+                reference = new ObjectReference(ThreadLocalContextManager.REQUEST);
+            } else if (UriInfo.class.equals(type)) {
+                reference = new ObjectReference(ThreadLocalContextManager.URI_INFO);
+            } else if (HttpHeaders.class.equals(type)) {
+                reference = new ObjectReference(ThreadLocalContextManager.HTTP_HEADERS);
+            } else if (SecurityContext.class.equals(type)) {
+                reference = new ObjectReference(ThreadLocalContextManager.SECURITY_CONTEXT);
+            } else if (ContextResolver.class.equals(type)) {
+                reference = new ObjectReference(ThreadLocalContextManager.CONTEXT_RESOLVER);
             } else if (referenceInfo.resourceID != null) {
                 String jndiName = "openejb/Resource/" + referenceInfo.resourceID;
                 reference = new IntraVmJndiReference(jndiName);

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1150931&r1=1150930&r2=1150931&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Mon Jul 25 22:03:02 2011
@@ -3247,7 +3247,6 @@ public class AnnotationDeployer implemen
         private void buildContext(JndiConsumer consumer, Member member) {
             ResourceRef ref = new ResourceRef();
             ref.setName(member.getDeclaringClass().getName() + "/" + member.getName());
-            ref.setLookupName("java:openejb/Resource/rest/context/" + member.getType().getSimpleName());
 
             InjectionTarget target = new InjectionTarget();
             target.setInjectionTargetClass(member.getDeclaringClass().getName());

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalContextManager.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalContextManager.java?rev=1150931&r1=1150930&r2=1150931&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalContextManager.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/rest/ThreadLocalContextManager.java Mon Jul 25 22:03:02 2011
@@ -11,7 +11,7 @@ public class ThreadLocalContextManager {
     public static final ThreadLocalHttpHeaders HTTP_HEADERS = new ThreadLocalHttpHeaders();
     public static final ThreadLocalSecurityContext SECURITY_CONTEXT = new ThreadLocalSecurityContext();
     public static final ThreadLocalContextResolver CONTEXT_RESOLVER = new ThreadLocalContextResolver();
-    public static final ThreadLocalApplication APPLICATION = new ThreadLocalApplication();
+    public static final ThreadLocal<Application> APPLICATION = new ThreadLocal<Application>();
 
     public static void reset() {
         REQUEST.remove();

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyFactory.java?rev=1150931&r1=1150930&r2=1150931&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyFactory.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyFactory.java Mon Jul 25 22:03:02 2011
@@ -28,7 +28,7 @@ public class LocalBeanProxyFactory {
     private static final java.lang.reflect.InvocationHandler NON_BUSINESS_HANDLER = new NonBusinessHandler();
     
     public static Object newProxyInstance(ClassLoader cl, Class interfce, java.lang.reflect.InvocationHandler h) throws IllegalArgumentException {
-        try {
+            try {
             Class proxyCls = new LocalBeanProxyGeneratorImpl().createProxy(interfce, cl);
             Constructor constructor = proxyCls.getConstructor(java.lang.reflect.InvocationHandler.class, 
                                                               java.lang.reflect.InvocationHandler.class);

Modified: openejb/trunk/openejb3/examples/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/pom.xml?rev=1150931&r1=1150930&r2=1150931&view=diff
==============================================================================
--- openejb/trunk/openejb3/examples/pom.xml (original)
+++ openejb/trunk/openejb3/examples/pom.xml Mon Jul 25 22:03:02 2011
@@ -84,6 +84,7 @@
     <module>bean-validation-design-by-contract</module>
     <module>cdi-example</module>
 	<module>cdi-interceptors</module>
+    <module>rest-on-ejb</module>
   </modules>
   <profiles>
     <profile>

Modified: openejb/trunk/openejb3/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java?rev=1150931&r1=1150930&r2=1150931&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java (original)
+++ openejb/trunk/openejb3/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java Mon Jul 25 22:03:02 2011
@@ -1,16 +1,5 @@
 package org.apache.openejb.server.cxf.rs;
 
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Request;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.SecurityContext;
-import javax.ws.rs.core.UriInfo;
-import javax.ws.rs.ext.ContextResolver;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.jaxrs.JAXRSInvoker;
 import org.apache.cxf.jaxrs.model.ClassResourceInfo;
@@ -19,11 +8,20 @@ import org.apache.cxf.jaxrs.utils.JAXRSU
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.MessageContentsList;
 import org.apache.openejb.BeanContext;
-import org.apache.openejb.Injection;
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.RpcContainer;
 import org.apache.openejb.rest.ThreadLocalContextManager;
 
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Request;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.SecurityContext;
+import javax.ws.rs.core.UriInfo;
+import javax.ws.rs.ext.ContextResolver;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.List;
+
 /**
  * @author Romain Manni-Bucau
  */
@@ -40,15 +38,16 @@ public class OpenEJBEJBInvoker extends J
         final Method method = cri.getMethodDispatcher().getMethod(ori);
         final RpcContainer container = RpcContainer.class.cast(context.getContainer());
 
-        List<?> params;
+        Object[] parameters;
         if (request instanceof List) {
-            params = CastUtils.cast((List<?>) request);
+            List<Object> params = CastUtils.cast((List<?>) request);
+            parameters = params.toArray(new Object[params.size()]);
         } else if (request != null) {
-            params = new MessageContentsList(request);
+            List<Object> params = new MessageContentsList(request);
+            parameters = params.toArray(new Object[params.size()]);
         } else {
-            params = new ArrayList<Object>();
+            parameters = new Object[0];
         }
-        Object[] parameters = params.toArray(new Object[params.size()]);
 
         // injecting context parameters
         super.insertExchange(method, parameters, exchange);
@@ -68,11 +67,9 @@ public class OpenEJBEJBInvoker extends J
             } else if (SecurityContext.class.equals(type)) {
                 SecurityContext binding = JAXRSUtils.createContextValue(exchange.getInMessage(), null, SecurityContext.class);
                 ThreadLocalContextManager.SECURITY_CONTEXT.set(binding);
-            } else if (Application.class.equals(type)) {
-                Application binding = JAXRSUtils.createContextValue(exchange.getInMessage(), null, Application.class);
-                ThreadLocalContextManager.APPLICATION.set(binding);
             } else if (ContextResolver.class.equals(type)) {
-                // TODO
+                ContextResolver<?> binding = JAXRSUtils.createContextValue(exchange.getInMessage(), type, ContextResolver.class);
+                ThreadLocalContextManager.CONTEXT_RESOLVER.set(binding);
             }
         }
 

Modified: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java?rev=1150931&r1=1150930&r2=1150931&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java (original)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java Mon Jul 25 22:03:02 2011
@@ -350,7 +350,11 @@ public class HttpRequestImpl implements 
             method = Method.GET.name();
         } else if (token.equalsIgnoreCase("POST")) {
             method = Method.POST.name();
-        } else {
+        } /* else if (token.equalsIgnoreCase("PUT")) {
+            method = Method.PUT.name();
+        } else if (token.equalsIgnoreCase("DELETE")) {
+            method = Method.DELETE.name();
+        } */ else {
             method = Method.UNSUPPORTED.name();
             throw new IOException("Unsupported HTTP Request Method :" + token);
         }

Modified: openejb/trunk/openejb3/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java?rev=1150931&r1=1150930&r2=1150931&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java (original)
+++ openejb/trunk/openejb3/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java Mon Jul 25 22:03:02 2011
@@ -158,7 +158,7 @@ public abstract class RESTService implem
                 }
             }
         }
-    }
+    }   
 
     private void deploySingleton(String contextRoot, Object o, Application appInstance, ClassLoader classLoader) {
         final String nopath = getAddress(contextRoot, o.getClass()) + "/.*";