Class RequestQueue

    • Field Detail

      • logger

        public static org.slf4j.Logger logger
      • mBaseDN

        protected java.lang.String mBaseDN
    • Constructor Detail

      • RequestQueue

        public RequestQueue​(DBSubsystem dbSubsystem,
                            RequestRepository requestRepository,
                            IPolicy policy,
                            IService service,
                            INotify notifier,
                            INotify pendingNotifier)
                     throws EBaseException
        Create a request queue.
        Parameters:
        name - the name of the request queue. (Ex: "ca" "ra")
        policy - A policy enforcement module. This object is called to make adjustments to the request, and decide whether it needs agent approval.
        service - The service object. This object actually performs the request after it is finalized and approved.
        notiifer - A notifier object (optional). The notify() method of this object is invoked when the request is completed (COMPLETE, REJECTED or CANCELED states).
        pendingNotifier - A notifier object (optional). Like the notifier, except the notification happens if the request is made PENDING. May be the same as the 'n' argument if desired.
        Throws:
        EBaseException - failed to retrieve request queue
    • Method Detail

      • cloneRequest

        public IRequest cloneRequest​(IRequest request)
                              throws EBaseException
        Description copied from class: ARequestQueue
        Clones a request object. A new request id is assigned and all attributes of the request is copied to cloned request, except for the sourceID of the original request (remote authority's request Id).

        The cloned request that is returned is LOCKED. The caller MUST release the request object by calling releaseRequest().

        Specified by:
        cloneRequest in class ARequestQueue
        Parameters:
        request - request to be cloned
        Returns:
        cloned request
        Throws:
        EBaseException - failed to clone request
      • updateRequest

        public void updateRequest​(IRequest request)
                           throws EBaseException
        Description copied from class: ARequestQueue
        Updates the request in the permanent data store.

        This call can be made after changing a value like source id or owner, to force the new value to be written.

        The request must be locked to make this call.

        Specified by:
        updateRequest in class ARequestQueue
        Throws:
        EBaseException - failed to update request
      • findRequestBySourceId

        public RequestId findRequestBySourceId​(java.lang.String id)
        Description copied from class: ARequestQueue
        Locates a request from the SourceId.
        Specified by:
        findRequestBySourceId in class ARequestQueue
        Parameters:
        id - a unique identifier for the record that is based on the source of the request, and possibly an identify assigned by the source.
        Returns:
        The requestid corresponding to this source id. null is returned if the source id does not exist.
      • findRequestsBySourceId

        public IRequestList findRequestsBySourceId​(java.lang.String id)
        Description copied from class: ARequestQueue
        Locates all requests with a particular SourceId.

        Specified by:
        findRequestsBySourceId in class ARequestQueue
        Parameters:
        id - an identifier for the record that is based on the source of the request
        Returns:
        A list of requests corresponding to this source id. null is returned if the source id does not exist.
      • getRawList

        protected java.util.Enumeration<RequestId> getRawList()
        Description copied from class: ARequestQueue
        Get complete list of RequestId values found i this queue.

        This method can form the basis for creating other types of search/list operations (although there are probably more efficient ways of doing this. ARequestQueue implements default versions of some of the searching by using this method as a basis.

        TODO: return IRequestList -or- just use listRequests as the basic engine.

        Specified by:
        getRawList in class ARequestQueue
        Returns:
        an Enumeration that generates RequestId objects.
      • listRequestsByFilter

        public IRequestList listRequestsByFilter​(java.lang.String f,
                                                 int maxSize)
        Description copied from class: ARequestQueue
        Returns an enumerator that lists all RequestIds for requests that match the filter.

        NOTE: This interface will not be useful for large databases. This needs to be replace by a VLV (paged) search object.

        Specified by:
        listRequestsByFilter in class ARequestQueue
        Parameters:
        f - search filter
        maxSize - max size to return
        Returns:
        request list
      • listRequestsByFilter

        public IRequestList listRequestsByFilter​(java.lang.String f,
                                                 int maxSize,
                                                 int timeLimit)
        Description copied from class: ARequestQueue
        Returns an enumerator that lists all RequestIds for requests that match the filter.

        NOTE: This interface will not be useful for large databases. This needs to be replace by a VLV (paged) search object.

        Specified by:
        listRequestsByFilter in class ARequestQueue
        Parameters:
        f - search filter
        maxSize - max size to return
        timeLimit - timeout value for the search
        Returns:
        request list
      • listRequestsByStatus

        public IRequestList listRequestsByStatus​(RequestStatus s)
        Description copied from class: ARequestQueue
        Returns an enumerator that lists all RequestIds for requests that are in the given status. For example, all the PENDING requests could be listed by specifying RequestStatus.PENDING as the status argument

        NOTE: This interface will not be useful for large databases. This needs to be replace by a VLV (paged) search object.

        Should be overridden by the specialized class if a more efficient method is available for implementing this operation.

        Overrides:
        listRequestsByStatus in class ARequestQueue
        Returns:
        request list