You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@batchee.apache.org by st...@apache.org on 2014/04/26 00:28:43 UTC
git commit: BATCHEE-28 provide injection in all batch lifecycle phases
Repository: incubator-batchee
Updated Branches:
refs/heads/master 876e0542d -> 703d241c4
BATCHEE-28 provide injection in all batch lifecycle phases
We can do this now due to having a single place in our new
proxy handling.
Project: http://git-wip-us.apache.org/repos/asf/incubator-batchee/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-batchee/commit/703d241c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-batchee/tree/703d241c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-batchee/diff/703d241c
Branch: refs/heads/master
Commit: 703d241c47215468f1e9837e3f47032148ff5f88
Parents: 876e054
Author: Mark Struberg <st...@apache.org>
Authored: Sat Apr 26 00:27:37 2014 +0200
Committer: Mark Struberg <st...@apache.org>
Committed: Sat Apr 26 00:27:37 2014 +0200
----------------------------------------------------------------------
.../proxy/BatchProxyInvocationHandler.java | 4 ++++
.../batchee/container/proxy/ProxyFactory.java | 2 +-
.../batchee/test/mock/InjectionsMock.java | 25 +++++++++++++++++++-
3 files changed, 29 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-batchee/blob/703d241c/jbatch/src/main/java/org/apache/batchee/container/proxy/BatchProxyInvocationHandler.java
----------------------------------------------------------------------
diff --git a/jbatch/src/main/java/org/apache/batchee/container/proxy/BatchProxyInvocationHandler.java b/jbatch/src/main/java/org/apache/batchee/container/proxy/BatchProxyInvocationHandler.java
index 412b77e..7decab4 100644
--- a/jbatch/src/main/java/org/apache/batchee/container/proxy/BatchProxyInvocationHandler.java
+++ b/jbatch/src/main/java/org/apache/batchee/container/proxy/BatchProxyInvocationHandler.java
@@ -50,6 +50,7 @@ public class BatchProxyInvocationHandler implements InvocationHandler {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+ InjectionReferences oldInjectionRefs = ProxyFactory.setInjectionReferences(this.injectionRefs);
try {
return method.invoke(delegate, args);
} catch (Throwable e) {
@@ -67,6 +68,9 @@ public class BatchProxyInvocationHandler implements InvocationHandler {
}
throw e;
+ } finally {
+ ProxyFactory.setInjectionReferences(oldInjectionRefs);
}
+
}
}
http://git-wip-us.apache.org/repos/asf/incubator-batchee/blob/703d241c/jbatch/src/main/java/org/apache/batchee/container/proxy/ProxyFactory.java
----------------------------------------------------------------------
diff --git a/jbatch/src/main/java/org/apache/batchee/container/proxy/ProxyFactory.java b/jbatch/src/main/java/org/apache/batchee/container/proxy/ProxyFactory.java
index bbf15a6..45ffb6c 100755
--- a/jbatch/src/main/java/org/apache/batchee/container/proxy/ProxyFactory.java
+++ b/jbatch/src/main/java/org/apache/batchee/container/proxy/ProxyFactory.java
@@ -38,7 +38,7 @@ import javax.batch.api.partition.PartitionReducer;
* Introduce a level of indirection so proxies are not instantiated directly by newing them up.
*/
public class ProxyFactory {
- static final ThreadLocal<InjectionReferences> INJECTION_CONTEXT = new ThreadLocal<InjectionReferences>();
+ private static final ThreadLocal<InjectionReferences> INJECTION_CONTEXT = new ThreadLocal<InjectionReferences>();
private ProxyFactory() {
// private utility class ct
http://git-wip-us.apache.org/repos/asf/incubator-batchee/blob/703d241c/jbatch/src/test/java/org/apache/batchee/test/mock/InjectionsMock.java
----------------------------------------------------------------------
diff --git a/jbatch/src/test/java/org/apache/batchee/test/mock/InjectionsMock.java b/jbatch/src/test/java/org/apache/batchee/test/mock/InjectionsMock.java
index 55a98de..bbb0c16 100644
--- a/jbatch/src/test/java/org/apache/batchee/test/mock/InjectionsMock.java
+++ b/jbatch/src/test/java/org/apache/batchee/test/mock/InjectionsMock.java
@@ -18,18 +18,41 @@ package org.apache.batchee.test.mock;
import javax.batch.api.AbstractBatchlet;
import javax.batch.api.BatchProperty;
+import javax.batch.runtime.context.JobContext;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
import javax.inject.Inject;
import javax.inject.Named;
import java.net.URL;
+import org.testng.Assert;
+
@Named("injected")
public class InjectionsMock extends AbstractBatchlet {
@Inject
@BatchProperty
private URL url;
+ @Inject
+ private JobContext jobContext;
+
+ @Inject
+ private BeanManager beanManager;
+
@Override
public String process() throws Exception {
- return url.toExternalForm().equals("http://batchee.incubator.org") + "";
+ Assert.assertTrue(url.toExternalForm().equals("http://batchee.incubator.org"));
+ Assert.assertNotNull(jobContext);
+ Assert.assertEquals(jobContext.getJobName(), "injections");
+
+ // now check whether injection also works during the runtime of the batch
+ // this is needed if you e.g have a NormalScoped bean which only now gets initialized.
+ Assert.assertNotNull(beanManager);
+ Bean<?> bean = beanManager.resolve(beanManager.getBeans(JobContext.class));
+ JobContext jc = (JobContext) beanManager.getReference(bean, JobContext.class, beanManager.createCreationalContext(bean));
+ Assert.assertNotNull(jc);
+ Assert.assertEquals(jc.getJobName(), "injections");
+
+ return "true";
}
}