Author: rmannibucau
Date: Wed May 30 15:58:53 2012
New Revision: 1344319
URL: http://svn.apache.org/viewvc?rev=1344319&view=rev
Log:
TOMEE-207 oops some code was missing in last commit
Modified:
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBPerRequestPojoResourceProvider.java
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/HookedRest.java
Modified:
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBPerRequestPojoResourceProvider.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBPerRequestPojoResourceProvider.java?rev=1344319&r1=1344318&r2=1344319&view=diff
==============================================================================
---
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBPerRequestPojoResourceProvider.java
(original)
+++
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBPerRequestPojoResourceProvider.java
Wed May 30 15:58:53 2012
@@ -27,7 +27,7 @@ import javax.naming.Context;
import javax.naming.InitialContext;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
-import org.apache.cxf.jaxrs.lifecycle.PerRequestResourceProvider;
+import org.apache.cxf.jaxrs.lifecycle.ResourceProvider;
import org.apache.cxf.jaxrs.utils.InjectionUtils;
import org.apache.cxf.jaxrs.utils.ResourceUtils;
import org.apache.cxf.message.Message;
@@ -37,18 +37,20 @@ import org.apache.openejb.OpenEJBExcepti
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.inject.OWBInjector;
-// the constructor part is mainly copied from the parent since all is private
+// the constructor part is mainly copied from the PerrequestResourceProvider
since all is private
// and we want to invoke postconstrut ourself
-public class OpenEJBPerRequestPojoResourceProvider extends
PerRequestResourceProvider {
+public class OpenEJBPerRequestPojoResourceProvider implements ResourceProvider
{
protected Collection<Injection> injections;
protected Context context;
protected WebBeansContext webbeansContext;
protected InjectionProcessor<Object> injector;
protected OWBInjector beanInjector;
protected Constructor<?> constructor;
+ protected Method postConstructMethod;
+ protected Method preDestroyMethod;
+
public OpenEJBPerRequestPojoResourceProvider(final Class<?> clazz, final
Collection<Injection> injectionCollection, final Context initialContext, final
WebBeansContext owbCtx) {
- super(clazz);
injections = injectionCollection;
webbeansContext = owbCtx;
context = (Context) Proxy.newProxyInstance(clazz.getClassLoader(), new
Class<?>[]{Context.class}, new InitialContextWrapper(initialContext));
@@ -58,10 +60,12 @@ public class OpenEJBPerRequestPojoResour
throw new RuntimeException("Resource class " + clazz
+ " has no valid constructor");
}
+ postConstructMethod = ResourceUtils.findPostConstructMethod(clazz);
+ preDestroyMethod = ResourceUtils.findPreDestroyMethod(clazz);
}
@Override
- protected Object createInstance(Message m) {
+ public Object getInstance(Message m) {
Object[] values =
ResourceUtils.createConstructorArguments(constructor, m);
try {
final Object instance = values.length > 0 ?
constructor.newInstance(values) : constructor.newInstance(new Object[]{});
@@ -73,7 +77,8 @@ public class OpenEJBPerRequestPojoResour
} catch (Throwable t) {
// ignored
}
- injector.postConstruct();
+ // injector.postConstruct(); // he doesn't know it
+ InjectionUtils.invokeLifeCycleMethod(instance,
postConstructMethod);
return injector.getInstance();
} catch (InstantiationException ex) {
final String msg = "Resource class " +
constructor.getDeclaringClass().getName() + " can not be instantiated";
@@ -95,18 +100,33 @@ public class OpenEJBPerRequestPojoResour
@Override
public void releaseInstance(Message m, Object o) {
+ // we can't give it to the injector so let's do it manually
try {
- if (beanInjector != null) {
- beanInjector.destroy();
+ InjectionUtils.invokeLifeCycleMethod(o, preDestroyMethod);
+ } finally {
+ try {
+ if (beanInjector != null) {
+ beanInjector.destroy();
+ }
+ } catch (Throwable t) {
+ // ignored
+ }
+ if (injector != null) {
+ injector.preDestroy();
}
- } catch (Throwable t) {
- // ignored
- }
- if (injector != null) {
- injector.preDestroy();
}
}
+ @Override
+ public Class<?> getResourceClass() {
+ return constructor.getDeclaringClass();
+ }
+
+ @Override
+ public boolean isSingleton() {
+ return false;
+ }
+
private static class InitialContextWrapper implements InvocationHandler {
private Context ctx;
Modified:
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/HookedRest.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/HookedRest.java?rev=1344319&r1=1344318&r2=1344319&view=diff
==============================================================================
---
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/HookedRest.java
(original)
+++
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/HookedRest.java
Wed May 30 15:58:53 2012
@@ -17,15 +17,17 @@
package org.apache.openejb.server.cxf.rs.beans;
import javax.annotation.PostConstruct;
+import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@Path("/hooked")
public class HookedRest {
private boolean post = false;
+ @Inject private SimpleEJB ejb;
@PostConstruct public void post() {
- post = true;
+ post = true && ejb != null;
}
@Path("/post") @GET public boolean wasPosted() {