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()) + "/.*";