
package controls;

import java.beans.*;

import java.lang.reflect.Method;
import java.lang.reflect.UndeclaredThrowableException;
import java.util.HashMap;
import java.util.Map;

import org.apache.beehive.controls.api.bean.*;
import org.apache.beehive.controls.api.context.ControlBeanContext;
import org.apache.beehive.controls.api.properties.PropertyKey;
import org.apache.beehive.controls.api.properties.PropertyMap;
import org.apache.beehive.controls.api.versioning.*;

@SuppressWarnings("all")
public class AppTaskControlIIBean
extends com.bea.control.TaskControlBean
implements controls.AppTaskControlII
{
    static final Method _getApprovalPendingStepMethod;
    static final Method _getApplicationApprovedStepMethod;
    static final Method _setApplicationCaseIdMethod;
    static final Method _createMethod;
    static final Method _setApplicationInfoMethod;
    static final Method _getApplicationCaseIdMethod;
    static final Method _getCurrentStepMethod;
    static final Method _getApplicationInfoMethod;
    static final Method _NewExternalApplicationMethod;
    static final Method _getApplicationRejectedStepMethod;
    static final Method _CustomCallback_onApplicationApprovedStepEvent;
    static final Method _CustomCallback_onApprovalPendingStepEvent;
    static final Method _CustomCallback_onApplicationRejectedStepEvent;
    
    //
    // This HashMap will map from a Method to the array of names for parameters of the
    // method.  This is necessary because parameter name data isn't carried along in the
    // class file, but if available can enable ease of use by referencing parameters by
    // the declared name (vs. by index).
    //
    // This map should be read-only after its initialization in the static block, hence
    // using a plain HashMap is thread-safe.
    //
    static HashMap<Method, String []> _methodParamMap = new HashMap<Method, String []>();
    
    static
    {
        try
        {
            _getApprovalPendingStepMethod = controls.AppTaskControlII.class.getMethod("getApprovalPendingStep", new Class [] {});
            _methodParamMap.put(_getApprovalPendingStepMethod, new String [] {  });
            _getApplicationApprovedStepMethod = controls.AppTaskControlII.class.getMethod("getApplicationApprovedStep", new Class [] {});
            _methodParamMap.put(_getApplicationApprovedStepMethod, new String [] {  });
            _setApplicationCaseIdMethod = controls.AppTaskControlII.class.getMethod("setApplicationCaseId", new Class [] {java.lang.String.class});
            _methodParamMap.put(_setApplicationCaseIdMethod, new String [] { "value" });
            _createMethod = controls.AppTaskControlII.class.getMethod("create", new Class [] {});
            _methodParamMap.put(_createMethod, new String [] {  });
            _setApplicationInfoMethod = controls.AppTaskControlII.class.getMethod("setApplicationInfo", new Class [] {org.openuri.temp.exampleApp.application.InternalApplicationDocument.class});
            _methodParamMap.put(_setApplicationInfoMethod, new String [] { "value" });
            _getApplicationCaseIdMethod = controls.AppTaskControlII.class.getMethod("getApplicationCaseId", new Class [] {});
            _methodParamMap.put(_getApplicationCaseIdMethod, new String [] {  });
            _getCurrentStepMethod = controls.AppTaskControlII.class.getMethod("getCurrentStep", new Class [] {});
            _methodParamMap.put(_getCurrentStepMethod, new String [] {  });
            _getApplicationInfoMethod = controls.AppTaskControlII.class.getMethod("getApplicationInfo", new Class [] {});
            _methodParamMap.put(_getApplicationInfoMethod, new String [] {  });
            _NewExternalApplicationMethod = controls.AppTaskControlII.class.getMethod("NewExternalApplication", new Class [] {java.lang.String.class, org.openuri.temp.exampleApp.application.InternalApplicationDocument.class});
            _methodParamMap.put(_NewExternalApplicationMethod, new String [] { "taskName", "ApplicationInfo" });
            _getApplicationRejectedStepMethod = controls.AppTaskControlII.class.getMethod("getApplicationRejectedStep", new Class [] {});
            _methodParamMap.put(_getApplicationRejectedStepMethod, new String [] {  });
            _CustomCallback_onApplicationApprovedStepEvent = controls.AppTaskControlII.CustomCallback.class.getMethod("onApplicationApprovedStep", new Class [] {controls.AppTaskControlII.ApplicationApproved.class});
            _methodParamMap.put(_CustomCallback_onApplicationApprovedStepEvent, new String [] { "step" });
            _CustomCallback_onApprovalPendingStepEvent = controls.AppTaskControlII.CustomCallback.class.getMethod("onApprovalPendingStep", new Class [] {controls.AppTaskControlII.ApprovalPending.class});
            _methodParamMap.put(_CustomCallback_onApprovalPendingStepEvent, new String [] { "step" });
            _CustomCallback_onApplicationRejectedStepEvent = controls.AppTaskControlII.CustomCallback.class.getMethod("onApplicationRejectedStep", new Class [] {controls.AppTaskControlII.ApplicationRejected.class});
            _methodParamMap.put(_CustomCallback_onApplicationRejectedStepEvent, new String [] { "step" });
        }
        catch (NoSuchMethodException __bc_nsme)
        {
            throw new ExceptionInInitializerError(__bc_nsme);
        }
    }
    
    
    
    static
    {
        
    }
    
    
    
    /**
    * This is the public constructor for the class.  A client-defined control ID may
    * be provided.  This ID must be unique within the nesting ControlBeanContext.
    * @param context The containing ControlBeanContext
    * @param id The control identifier (or null to autogenerate a unique value)
    * @param props The initialization Properties for the new instance (or null for defaults)
    */
    public AppTaskControlIIBean(ControlBeanContext context, String id, PropertyMap props)
    {
        this(context, id, props, controls.AppTaskControlII.class);
    }
    
    /**
    * This is the public null-arg constructor for this ControlBean.  If a control id
    * is not provided, a unique value will be auto-generated.
    */
    public AppTaskControlIIBean()
    {
        this(null, null, null);
    }
    
    /**
    * This is the protected version that is used by any ControlBean subclass
    */
    protected AppTaskControlIIBean(ControlBeanContext context, String id, PropertyMap props, Class controlClass)
    {
        super(context, id, props, controlClass);
        
        //
        // Register event notifier instances for any EventSets
        //
        setEventNotifier(controls.AppTaskControlII.CustomCallback.class, new CustomCallbackNotifier());
    }
    
    
    /**
    * Returns an array of parameter names for the request method, or null if no parameter
    * data is available.
    */
    protected String [] getParameterNames(Method m)
    {
        // Check the local map for operations on this bean type
        if (_methodParamMap.containsKey(m))
        {
            return _methodParamMap.get(m);
        }
        
        // Delegate up if not found locally
        return super.getParameterNames(m);
    }
    
    /**
    * Implements controls.AppTaskControlII.getApprovalPendingStep
    */
    public  controls.AppTaskControlII.ApprovalPending getApprovalPendingStep() 
    {
        Object [] __bc_argArray = new Object[] {  };
        Throwable __bc_thrown = null;
        Extensible __bc_target = (Extensible)ensureControl();
        controls.AppTaskControlII.ApprovalPending __bc_retval = null;
        
        try
        {
            preInvoke(_getApprovalPendingStepMethod, __bc_argArray);
            
            __bc_retval =
            (controls.AppTaskControlII.ApprovalPending)
            __bc_target.invoke(_getApprovalPendingStepMethod, __bc_argArray)
            ;
        }
        catch (Throwable __bc_t)
        {
            //
            // All exceptions are caught here, so postInvoke processing has visibility into
            // the exception status.  Errors, RuntimExceptions, or declared checked exceptions will
            // be rethrown.
            //
            __bc_thrown = __bc_t;
            
            if (__bc_t instanceof Error) throw (Error)__bc_t;
            else if (__bc_t instanceof RuntimeException) throw (RuntimeException)__bc_t;
            
            throw new UndeclaredThrowableException(__bc_t);
        }
        finally
        {
            Object __bc_rv = __bc_retval;
            postInvoke(_getApprovalPendingStepMethod, __bc_argArray, __bc_rv, __bc_thrown);
        }
        return __bc_retval;
    }
    
    /**
    * Implements controls.AppTaskControlII.getApplicationApprovedStep
    */
    public  controls.AppTaskControlII.ApplicationApproved getApplicationApprovedStep() 
    {
        Object [] __bc_argArray = new Object[] {  };
        Throwable __bc_thrown = null;
        Extensible __bc_target = (Extensible)ensureControl();
        controls.AppTaskControlII.ApplicationApproved __bc_retval = null;
        
        try
        {
            preInvoke(_getApplicationApprovedStepMethod, __bc_argArray);
            
            __bc_retval =
            (controls.AppTaskControlII.ApplicationApproved)
            __bc_target.invoke(_getApplicationApprovedStepMethod, __bc_argArray)
            ;
        }
        catch (Throwable __bc_t)
        {
            //
            // All exceptions are caught here, so postInvoke processing has visibility into
            // the exception status.  Errors, RuntimExceptions, or declared checked exceptions will
            // be rethrown.
            //
            __bc_thrown = __bc_t;
            
            if (__bc_t instanceof Error) throw (Error)__bc_t;
            else if (__bc_t instanceof RuntimeException) throw (RuntimeException)__bc_t;
            
            throw new UndeclaredThrowableException(__bc_t);
        }
        finally
        {
            Object __bc_rv = __bc_retval;
            postInvoke(_getApplicationApprovedStepMethod, __bc_argArray, __bc_rv, __bc_thrown);
        }
        return __bc_retval;
    }
    
    /**
    * Implements controls.AppTaskControlII.setApplicationCaseId
    */
    public  void setApplicationCaseId(java.lang.String value) 
    {
        Object [] __bc_argArray = new Object[] { value };
        Throwable __bc_thrown = null;
        Extensible __bc_target = (Extensible)ensureControl();
        
        try
        {
            preInvoke(_setApplicationCaseIdMethod, __bc_argArray);
            
            __bc_target.invoke(_setApplicationCaseIdMethod, __bc_argArray)
            ;
        }
        catch (Throwable __bc_t)
        {
            //
            // All exceptions are caught here, so postInvoke processing has visibility into
            // the exception status.  Errors, RuntimExceptions, or declared checked exceptions will
            // be rethrown.
            //
            __bc_thrown = __bc_t;
            
            if (__bc_t instanceof Error) throw (Error)__bc_t;
            else if (__bc_t instanceof RuntimeException) throw (RuntimeException)__bc_t;
            
            throw new UndeclaredThrowableException(__bc_t);
        }
        finally
        {
            Object __bc_rv = null;
            postInvoke(_setApplicationCaseIdMethod, __bc_argArray, __bc_rv, __bc_thrown);
        }
    }
    
    /**
    * Implements controls.AppTaskControlII.create
    */
    public  controls.AppTaskControlII create() 
    {
        Object [] __bc_argArray = new Object[] {  };
        Throwable __bc_thrown = null;
        Extensible __bc_target = (Extensible)ensureControl();
        controls.AppTaskControlII __bc_retval = null;
        
        try
        {
            preInvoke(_createMethod, __bc_argArray);
            
            __bc_retval =
            (controls.AppTaskControlII)
            __bc_target.invoke(_createMethod, __bc_argArray)
            ;
        }
        catch (Throwable __bc_t)
        {
            //
            // All exceptions are caught here, so postInvoke processing has visibility into
            // the exception status.  Errors, RuntimExceptions, or declared checked exceptions will
            // be rethrown.
            //
            __bc_thrown = __bc_t;
            
            if (__bc_t instanceof Error) throw (Error)__bc_t;
            else if (__bc_t instanceof RuntimeException) throw (RuntimeException)__bc_t;
            
            throw new UndeclaredThrowableException(__bc_t);
        }
        finally
        {
            Object __bc_rv = __bc_retval;
            postInvoke(_createMethod, __bc_argArray, __bc_rv, __bc_thrown);
        }
        return __bc_retval;
    }
    
    /**
    * Implements controls.AppTaskControlII.setApplicationInfo
    */
    public  void setApplicationInfo(org.openuri.temp.exampleApp.application.InternalApplicationDocument value) 
    {
        Object [] __bc_argArray = new Object[] { value };
        Throwable __bc_thrown = null;
        Extensible __bc_target = (Extensible)ensureControl();
        
        try
        {
            preInvoke(_setApplicationInfoMethod, __bc_argArray);
            
            __bc_target.invoke(_setApplicationInfoMethod, __bc_argArray)
            ;
        }
        catch (Throwable __bc_t)
        {
            //
            // All exceptions are caught here, so postInvoke processing has visibility into
            // the exception status.  Errors, RuntimExceptions, or declared checked exceptions will
            // be rethrown.
            //
            __bc_thrown = __bc_t;
            
            if (__bc_t instanceof Error) throw (Error)__bc_t;
            else if (__bc_t instanceof RuntimeException) throw (RuntimeException)__bc_t;
            
            throw new UndeclaredThrowableException(__bc_t);
        }
        finally
        {
            Object __bc_rv = null;
            postInvoke(_setApplicationInfoMethod, __bc_argArray, __bc_rv, __bc_thrown);
        }
    }
    
    /**
    * Implements controls.AppTaskControlII.getApplicationCaseId
    */
    public  java.lang.String getApplicationCaseId() 
    {
        Object [] __bc_argArray = new Object[] {  };
        Throwable __bc_thrown = null;
        Extensible __bc_target = (Extensible)ensureControl();
        java.lang.String __bc_retval = null;
        
        try
        {
            preInvoke(_getApplicationCaseIdMethod, __bc_argArray);
            
            __bc_retval =
            (java.lang.String)
            __bc_target.invoke(_getApplicationCaseIdMethod, __bc_argArray)
            ;
        }
        catch (Throwable __bc_t)
        {
            //
            // All exceptions are caught here, so postInvoke processing has visibility into
            // the exception status.  Errors, RuntimExceptions, or declared checked exceptions will
            // be rethrown.
            //
            __bc_thrown = __bc_t;
            
            if (__bc_t instanceof Error) throw (Error)__bc_t;
            else if (__bc_t instanceof RuntimeException) throw (RuntimeException)__bc_t;
            
            throw new UndeclaredThrowableException(__bc_t);
        }
        finally
        {
            Object __bc_rv = __bc_retval;
            postInvoke(_getApplicationCaseIdMethod, __bc_argArray, __bc_rv, __bc_thrown);
        }
        return __bc_retval;
    }
    
    /**
    * Implements controls.AppTaskControlII.getCurrentStep
    */
    public  controls.AppTaskControlII.Step getCurrentStep() 
    {
        Object [] __bc_argArray = new Object[] {  };
        Throwable __bc_thrown = null;
        Extensible __bc_target = (Extensible)ensureControl();
        controls.AppTaskControlII.Step __bc_retval = null;
        
        try
        {
            preInvoke(_getCurrentStepMethod, __bc_argArray);
            
            __bc_retval =
            (controls.AppTaskControlII.Step)
            __bc_target.invoke(_getCurrentStepMethod, __bc_argArray)
            ;
        }
        catch (Throwable __bc_t)
        {
            //
            // All exceptions are caught here, so postInvoke processing has visibility into
            // the exception status.  Errors, RuntimExceptions, or declared checked exceptions will
            // be rethrown.
            //
            __bc_thrown = __bc_t;
            
            if (__bc_t instanceof Error) throw (Error)__bc_t;
            else if (__bc_t instanceof RuntimeException) throw (RuntimeException)__bc_t;
            
            throw new UndeclaredThrowableException(__bc_t);
        }
        finally
        {
            Object __bc_rv = __bc_retval;
            postInvoke(_getCurrentStepMethod, __bc_argArray, __bc_rv, __bc_thrown);
        }
        return __bc_retval;
    }
    
    /**
    * Implements controls.AppTaskControlII.getApplicationInfo
    */
    public  org.openuri.temp.exampleApp.application.InternalApplicationDocument getApplicationInfo() 
    {
        Object [] __bc_argArray = new Object[] {  };
        Throwable __bc_thrown = null;
        Extensible __bc_target = (Extensible)ensureControl();
        org.openuri.temp.exampleApp.application.InternalApplicationDocument __bc_retval = null;
        
        try
        {
            preInvoke(_getApplicationInfoMethod, __bc_argArray);
            
            __bc_retval =
            (org.openuri.temp.exampleApp.application.InternalApplicationDocument)
            __bc_target.invoke(_getApplicationInfoMethod, __bc_argArray)
            ;
        }
        catch (Throwable __bc_t)
        {
            //
            // All exceptions are caught here, so postInvoke processing has visibility into
            // the exception status.  Errors, RuntimExceptions, or declared checked exceptions will
            // be rethrown.
            //
            __bc_thrown = __bc_t;
            
            if (__bc_t instanceof Error) throw (Error)__bc_t;
            else if (__bc_t instanceof RuntimeException) throw (RuntimeException)__bc_t;
            
            throw new UndeclaredThrowableException(__bc_t);
        }
        finally
        {
            Object __bc_rv = __bc_retval;
            postInvoke(_getApplicationInfoMethod, __bc_argArray, __bc_rv, __bc_thrown);
        }
        return __bc_retval;
    }
    
    /**
    * Implements controls.AppTaskControlII.NewExternalApplication
    */
    public  controls.AppTaskControlII.ApprovalPending NewExternalApplication(java.lang.String taskName, org.openuri.temp.exampleApp.application.InternalApplicationDocument ApplicationInfo) 
    {
        Object [] __bc_argArray = new Object[] { taskName, ApplicationInfo };
        Throwable __bc_thrown = null;
        Extensible __bc_target = (Extensible)ensureControl();
        controls.AppTaskControlII.ApprovalPending __bc_retval = null;
        
        try
        {
            preInvoke(_NewExternalApplicationMethod, __bc_argArray);
            
            __bc_retval =
            (controls.AppTaskControlII.ApprovalPending)
            __bc_target.invoke(_NewExternalApplicationMethod, __bc_argArray)
            ;
        }
        catch (Throwable __bc_t)
        {
            //
            // All exceptions are caught here, so postInvoke processing has visibility into
            // the exception status.  Errors, RuntimExceptions, or declared checked exceptions will
            // be rethrown.
            //
            __bc_thrown = __bc_t;
            
            if (__bc_t instanceof Error) throw (Error)__bc_t;
            else if (__bc_t instanceof RuntimeException) throw (RuntimeException)__bc_t;
            
            throw new UndeclaredThrowableException(__bc_t);
        }
        finally
        {
            Object __bc_rv = __bc_retval;
            postInvoke(_NewExternalApplicationMethod, __bc_argArray, __bc_rv, __bc_thrown);
        }
        return __bc_retval;
    }
    
    /**
    * Implements controls.AppTaskControlII.getApplicationRejectedStep
    */
    public  controls.AppTaskControlII.ApplicationRejected getApplicationRejectedStep() 
    {
        Object [] __bc_argArray = new Object[] {  };
        Throwable __bc_thrown = null;
        Extensible __bc_target = (Extensible)ensureControl();
        controls.AppTaskControlII.ApplicationRejected __bc_retval = null;
        
        try
        {
            preInvoke(_getApplicationRejectedStepMethod, __bc_argArray);
            
            __bc_retval =
            (controls.AppTaskControlII.ApplicationRejected)
            __bc_target.invoke(_getApplicationRejectedStepMethod, __bc_argArray)
            ;
        }
        catch (Throwable __bc_t)
        {
            //
            // All exceptions are caught here, so postInvoke processing has visibility into
            // the exception status.  Errors, RuntimExceptions, or declared checked exceptions will
            // be rethrown.
            //
            __bc_thrown = __bc_t;
            
            if (__bc_t instanceof Error) throw (Error)__bc_t;
            else if (__bc_t instanceof RuntimeException) throw (RuntimeException)__bc_t;
            
            throw new UndeclaredThrowableException(__bc_t);
        }
        finally
        {
            Object __bc_rv = __bc_retval;
            postInvoke(_getApplicationRejectedStepMethod, __bc_argArray, __bc_rv, __bc_thrown);
        }
        return __bc_retval;
    }
    
    
    /**
    * A PropertyKey that can be used to access the controlImplementation property of the
    * BaseProperties PropertySet
    */
    public static final PropertyKey ControlImplementationKey = new PropertyKey(org.apache.beehive.controls.api.properties.BaseProperties.class, "controlImplementation");
    
    public synchronized void setControlImplementation(java.lang.String value)
    {
        
        setControlProperty(ControlImplementationKey, value);
    }
    
    public java.lang.String getControlImplementation()
    {
        return (java.lang.String)getControlProperty(ControlImplementationKey);
    }
    
    
    
    
    /**
    * This inner class implements a simple proxy to deliver CustomCallback events
    * back to a register listener.
    */
    protected class CustomCallbackNotifier
    extends com.bea.control.TaskControlBean.CallbackNotifier
    implements controls.AppTaskControlII.CustomCallback, java.io.Serializable
    {
        private static final long serialVersionUID = 1L;
        
        public void onApplicationApprovedStep(controls.AppTaskControlII.ApplicationApproved step) 
        {
            Throwable __bc_thrown = null;
            
            CustomCallbackNotifier __bc_notifier = (CustomCallbackNotifier)getEventNotifier(controls.AppTaskControlII.CustomCallback.class);
            
            Object [] __bc_argArray = new Object[] {step};
            
            java.util.Iterator __bc_listenerIter = __bc_notifier.listenerIterator();
            
            try
            {
                while (__bc_listenerIter.hasNext())
                {
                    controls.AppTaskControlII.CustomCallback __bc_listener = (controls.AppTaskControlII.CustomCallback)__bc_listenerIter.next();
                    __bc_listener.onApplicationApprovedStep(step);
                }
            }
            catch (Throwable __bc_t)
            {
                //
                // All exceptions are caught here, so postEvent processing has visibility into
                // the exception status.  Errors, RuntimExceptions, or declared checked exceptions will
                // be rethrown.
                //
                __bc_thrown = __bc_t;
                
                if (__bc_t instanceof Error) throw (Error)__bc_t;
                else if (__bc_t instanceof RuntimeException) throw (RuntimeException)__bc_t;
                
                throw new UndeclaredThrowableException(__bc_t);
            }
        }
        
        public void onApprovalPendingStep(controls.AppTaskControlII.ApprovalPending step) 
        {
            Throwable __bc_thrown = null;
            
            CustomCallbackNotifier __bc_notifier = (CustomCallbackNotifier)getEventNotifier(controls.AppTaskControlII.CustomCallback.class);
            
            Object [] __bc_argArray = new Object[] {step};
            
            java.util.Iterator __bc_listenerIter = __bc_notifier.listenerIterator();
            
            try
            {
                while (__bc_listenerIter.hasNext())
                {
                    controls.AppTaskControlII.CustomCallback __bc_listener = (controls.AppTaskControlII.CustomCallback)__bc_listenerIter.next();
                    __bc_listener.onApprovalPendingStep(step);
                }
            }
            catch (Throwable __bc_t)
            {
                //
                // All exceptions are caught here, so postEvent processing has visibility into
                // the exception status.  Errors, RuntimExceptions, or declared checked exceptions will
                // be rethrown.
                //
                __bc_thrown = __bc_t;
                
                if (__bc_t instanceof Error) throw (Error)__bc_t;
                else if (__bc_t instanceof RuntimeException) throw (RuntimeException)__bc_t;
                
                throw new UndeclaredThrowableException(__bc_t);
            }
        }
        
        public void onApplicationRejectedStep(controls.AppTaskControlII.ApplicationRejected step) 
        {
            Throwable __bc_thrown = null;
            
            CustomCallbackNotifier __bc_notifier = (CustomCallbackNotifier)getEventNotifier(controls.AppTaskControlII.CustomCallback.class);
            
            Object [] __bc_argArray = new Object[] {step};
            
            java.util.Iterator __bc_listenerIter = __bc_notifier.listenerIterator();
            
            try
            {
                while (__bc_listenerIter.hasNext())
                {
                    controls.AppTaskControlII.CustomCallback __bc_listener = (controls.AppTaskControlII.CustomCallback)__bc_listenerIter.next();
                    __bc_listener.onApplicationRejectedStep(step);
                }
            }
            catch (Throwable __bc_t)
            {
                //
                // All exceptions are caught here, so postEvent processing has visibility into
                // the exception status.  Errors, RuntimExceptions, or declared checked exceptions will
                // be rethrown.
                //
                __bc_thrown = __bc_t;
                
                if (__bc_t instanceof Error) throw (Error)__bc_t;
                else if (__bc_t instanceof RuntimeException) throw (RuntimeException)__bc_t;
                
                throw new UndeclaredThrowableException(__bc_t);
            }
        }
        
    }
    
    /**
    * Registers a new listener for CustomCallback events on the bean.
    */
    public synchronized void addCustomCallbackListener(controls.AppTaskControlII.CustomCallback listener)
    {
        CustomCallbackNotifier __bc_notifier = (CustomCallbackNotifier)getEventNotifier(controls.AppTaskControlII.CustomCallback.class);
        __bc_notifier.addListener(listener);
    }
    
    /**
    * Unregisters an existing listener for CustomCallback events on the bean.
    */
    public synchronized void removeCustomCallbackListener(controls.AppTaskControlII.CustomCallback listener)
    {
        CustomCallbackNotifier __bc_notifier = (CustomCallbackNotifier)getEventNotifier(controls.AppTaskControlII.CustomCallback.class);
        __bc_notifier.removeListener(listener);
    }
    
    /**
    * Returns the  array of registered listeners for CustomCallback events on the bean, or
    * an empty array if no listener has been registered
    */
    public synchronized controls.AppTaskControlII.CustomCallback [] getCustomCallbackListeners()
    {
        CustomCallbackNotifier __bc_notifier = (CustomCallbackNotifier)getEventNotifier(controls.AppTaskControlII.CustomCallback.class);
        controls.AppTaskControlII.CustomCallback [] __bc_listeners = new controls.AppTaskControlII.CustomCallback[__bc_notifier.getListenerCount()];
        __bc_notifier.getListeners(__bc_listeners);
        return __bc_listeners;
    }
    
    /**
    * The _annotCache maintains a lookup cache from AnnotatedElements to an associated
    * PropertyMap.  This enables these maps to be shared across multiple beans.
    */
    static private HashMap __bc_annotCache = new HashMap();
    
    protected Map getPropertyMapCache() { return __bc_annotCache; }
    
    private static final long serialVersionUID = 1L;
}
