001package com.identityworksllc.iiq.common.task;
002
003import sailpoint.api.SailPointContext;
004import sailpoint.tools.GeneralException;
005
006import java.util.Map;
007
008/**
009 * A consumer interface for executing an operation on an item in a private thread
010 * @param <T> The type of the object being consumed
011 */
012@FunctionalInterface
013public interface PrivateContextObjectConsumer<T> {
014    /**
015     * Executes the operation on the item
016     *
017     * @param threadContext A private context for the current thread
018     * @param parameters Any relevant input parameters for the operation
019     * @param obj The item on which to operate
020     * @return An arbitrary output, which can be ignored or not
021     * @throws GeneralException if any failures occur during execution
022     */
023    Object threadExecute(SailPointContext threadContext, Map<String, Object> parameters, T obj) throws GeneralException;
024}