All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.fabric3.execution.runtime.PropagatingRunnable Maven / Gradle / Ivy

package org.fabric3.execution.runtime;

import java.util.List;
import java.util.Map;

import org.fabric3.api.SecuritySubject;
import org.fabric3.spi.invocation.CallbackReference;
import org.fabric3.spi.invocation.WorkContext;
import org.fabric3.spi.invocation.WorkContextCache;

/**
 * Propagates a work context to the current thread executing the delegate runnable.
 */
public class PropagatingRunnable implements Runnable {
    private Runnable delegate;
    private List stack;
    private Map headers;
    private SecuritySubject subject;

    public PropagatingRunnable(Runnable delegate, List stack, Map headers, SecuritySubject subject) {
        this.delegate = delegate;
        this.stack = stack;
        this.headers = headers;
        this.subject = subject;
    }

    public void run() {
        WorkContext workContext = WorkContextCache.getAndResetThreadWorkContext();
        try {
            workContext.setSubject(subject);
            workContext.addHeaders(headers);
            workContext.addCallbackReferences(stack);
            delegate.run();
        } finally {
            workContext.reset();
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy