
org.infinispan.cdi.DelegatingMapReduceTaskLifecycle Maven / Gradle / Ivy
package org.infinispan.cdi;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.InjectionTarget;
import org.infinispan.Cache;
import org.infinispan.cdi.util.CDIHelper;
import org.infinispan.distexec.mapreduce.Mapper;
import org.infinispan.distexec.mapreduce.Reducer;
import org.infinispan.distexec.mapreduce.spi.MapReduceTaskLifecycle;
import org.kohsuke.MetaInfServices;
@MetaInfServices
public class DelegatingMapReduceTaskLifecycle implements MapReduceTaskLifecycle {
private final MapReduceTaskLifecycle delegate;
public DelegatingMapReduceTaskLifecycle() {
delegate = CDIHelper.isCDIAvailable() ? new CDIMapReduceTaskLifecycle() : new NoCDIMapReduceTaskLifecycle();
}
@Override
public void onPreExecute(Mapper mapper, Cache inputCache) {
delegate.onPreExecute(mapper, inputCache);
}
@Override
public void onPostExecute(Mapper mapper) {
delegate.onPostExecute(mapper);
}
@Override
public void onPreExecute(Reducer reducer, Cache, ?> cache) {
delegate.onPreExecute(reducer, cache);
}
@Override
public void onPostExecute(Reducer reducer) {
delegate.onPostExecute(reducer);
}
static class NoCDIMapReduceTaskLifecycle implements MapReduceTaskLifecycle {
@Override
public void onPreExecute(Mapper mapper, Cache inputCache) {
}
@Override
public void onPostExecute(Mapper mapper) {
}
@Override
public void onPreExecute(Reducer reducer, Cache, ?> inputCache) {
}
@Override
public void onPostExecute(Reducer reducer) {
}
}
static class CDIMapReduceTaskLifecycle implements MapReduceTaskLifecycle {
@Override
@SuppressWarnings("unchecked")
public void onPreExecute(Mapper mapper, Cache inputCache) {
BeanManager bm = CDIHelper.getBeanManager();
if (bm == null)
return;
ContextInputCache.set(inputCache);
Class> clazz = (Class>) mapper.getClass();
AnnotatedType> type = bm.createAnnotatedType(clazz);
InjectionTarget> it = bm.createInjectionTarget(type);
CreationalContext> ctx = bm.createCreationalContext(null);
it.inject(mapper, ctx);
it.postConstruct(mapper);
}
@Override
@SuppressWarnings("unchecked")
public void onPostExecute(Mapper mapper) {
try {
BeanManager bm = CDIHelper.getBeanManager();
if (bm == null)
return;
Class> clazz = (Class>) mapper.getClass();
AnnotatedType> type = bm.createAnnotatedType(clazz);
InjectionTarget> it = bm.createInjectionTarget(type);
it.preDestroy(mapper);
it.dispose(mapper);
} finally {
ContextInputCache.clean();
}
}
@Override
@SuppressWarnings("unchecked")
public void onPreExecute(Reducer reducer, Cache, ?> inputCache) {
BeanManager bm = CDIHelper.getBeanManager();
if (bm == null)
return;
Class> clazz = (Class>) reducer.getClass();
AnnotatedType> type = bm.createAnnotatedType(clazz);
InjectionTarget> it = bm.createInjectionTarget(type);
CreationalContext> ctx = bm.createCreationalContext(null);
it.inject(reducer, ctx);
it.postConstruct(reducer);
}
@Override
@SuppressWarnings("unchecked")
public void onPostExecute(Reducer reducer) {
BeanManager bm = CDIHelper.getBeanManager();
if (bm == null)
return;
Class> clazz = (Class>) reducer.getClass();
AnnotatedType> type = bm.createAnnotatedType(clazz);
InjectionTarget> it = bm.createInjectionTarget(type);
it.preDestroy(reducer);
it.dispose(reducer);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy