package org.aperteworkflow.util; import pl.net.bluesoft.rnd.processtool.ProcessToolContext; import pl.net.bluesoft.rnd.processtool.ReturningProcessToolContextCallback; import pl.net.bluesoft.rnd.processtool.plugins.RegistryHolder; /** * @author tlipski@bluesoft.net.pl */ public class ContextUtil { public static <T> T withContext(final ReturningProcessToolContextCallback<T> callback) { return RegistryHolder.getRegistry().withExistingOrNewContext(new ReturningProcessToolContextCallback<T>() { @Override public T processWithContext(ProcessToolContext ctx) { ProcessToolContext.Util.setThreadProcessToolContext(ctx); try { return callback.processWithContext(ctx); } finally { ProcessToolContext.Util.removeThreadProcessToolContext(); } } }); } }