MonitorExit.java interface


MonitorExit.java

/*
 *   Licensed Materials - Property of IBM
 *
 *   "Restricted Materials of IBM"
 *
 *   5724-H72
 * 
 *   Copyright IBM Corp. 2009, 2020. All Rights Reserved.
 * 
 *   disclosure restricted by GSA ADP Schedule Contract with
 *   IBM Corp.
 */
package com.ibm.wmqfte.exitroutine.api;

import java.util.Map;

/**
 * An interface that is implemented by classes that want to be invoked as part of
 * user exit routine processing.  This interface defines a method that will be
 * invoked immediately prior to starting a task as the result of a monitor trigger
 */
public interface MonitorExit {

	/**
	 * Invoked immediately prior to starting a task as the result of a monitor 
	 * trigger.
	 * 
	 * @param environmentMetaData
	 *            meta data about the environment in which the implementation
	 *            of this method is running.  This information can only be read,
	 *            it cannot be updated by the implementation.  The constant
	 *            defined in <code>EnvironmentMetaDataConstants</code> class can 
	 *            be used to access the data held by this map.
	 * 
	 * @param monitorMetaData
	 *            meta data to associate with the monitor. The meta data passed
	 *            to this method can be altered, and the changes will be
	 *            reflected in subsequent exit routine invocations. This map
	 *            also contains keys with IBM reserved names.  These entries are
	 *            defined in the <code>MonitorMetaDataConstants</code> class and
	 *            have special semantics. The the values of the IBM reserved names
	 *            cannot be modified by the exit 
	 * 
	 * @param taskDetails
	 *            An XML String representing the task to be executed as a result of
	 *            the monitor triggering. This XML string may be modified by the 
	 *            exit   
	 * 
	 * @return    a monitor exit result object which is used to determine if the
	 *            task should proceed, or be cancelled.
	 */
	MonitorExitResult onMonitor(Map<String, String> environmentMetaData,
			                    Map<String, String> monitorMetaData, 
				                Reference<String> taskDetails);
}