From a4682ceae6774956461edd03b2485bbacea445f4 Mon Sep 17 00:00:00 2001 From: mharmsen Date: Tue, 4 Oct 2011 01:17:41 +0000 Subject: Bugzilla Bug #688225 - (dogtagIPAv2.1) TRACKER: of the Dogtag fixes for freeIPA 2.1 git-svn-id: svn+ssh://svn.fedorahosted.org/svn/pki/tags/IPA_v2_RHEL_6_2_20111003@2252 c9f7a03b-bd48-0410-a16d-cbbf54688b0b --- .../netscape/certsrv/request/IRequestQueue.java | 414 +++++++++++++++++++++ 1 file changed, 414 insertions(+) create mode 100644 pki/base/common/src/com/netscape/certsrv/request/IRequestQueue.java (limited to 'pki/base/common/src/com/netscape/certsrv/request/IRequestQueue.java') diff --git a/pki/base/common/src/com/netscape/certsrv/request/IRequestQueue.java b/pki/base/common/src/com/netscape/certsrv/request/IRequestQueue.java new file mode 100644 index 000000000..9b2edf9b4 --- /dev/null +++ b/pki/base/common/src/com/netscape/certsrv/request/IRequestQueue.java @@ -0,0 +1,414 @@ +// --- BEGIN COPYRIGHT BLOCK --- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; version 2 of the License. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this program; if not, write to the Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +// +// (C) 2007 Red Hat, Inc. +// All rights reserved. +// --- END COPYRIGHT BLOCK --- +package com.netscape.certsrv.request; + +import java.math.*; +import java.util.Enumeration; +import com.netscape.certsrv.dbs.repository.IRepository; + +import com.netscape.certsrv.base.EBaseException; + + +/** + * The IRequestQueue interface defines the operations on + * a collection of requests within the certificate server. + * There are may several collections, such as KRA, RA and CA + * requests. Each of these request collection has a defined + * set of policies, a notification service (for request + * completion) and a service routine. The request queue + * provides an interface for creating and viewing requests, + * as well as performing operations on them. + *

+ * @version $Revision$ $Date$ + */ +public interface IRequestQueue { + + /** + * Creates a new request object. A request id is + * assigned to it - see IRequest.getRequestId, and + * the status is set to RequestStatus.BEGIN + *

+ * The request is LOCKED. The caller MUST release the + * request object by calling releaseRequest(). + *

+ * TODO: provide other required values (such as type + * and sourceId) + * + * @param requestType request type + * @return new request + * @exception EBaseException failed to create new request + */ + public IRequest newRequest(String requestType) + throws EBaseException; + + /** + * 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(). + * + * @param r request to be cloned + * @return cloned request + * @exception EBaseException failed to clone request + */ + public IRequest cloneRequest(IRequest r) + throws EBaseException; + + /** + * Gets the Request corresponding to id. + * Returns null if the id does not correspond + * to a valid request id. + *

+ * Errors may be generated for other conditions. + * + * @param id request id + * @return found request + * @exception EBaseException failed to access request queue + */ + public IRequest findRequest(RequestId id) + throws EBaseException; + + /** + * Begins processing for this request. This call + * is valid only on requests with status BEGIN + * An error is generated for other cases. + * + * @param req request to be processed + * @exception EBaseException failed to process request + */ + public void processRequest(IRequest req) + throws EBaseException; + + /** + * Sets request scheduler. + * + * @param scheduler request scheduler + */ + public void setRequestScheduler(IRequestScheduler scheduler); + + /** + * Gets request scheduler. + * + * @return request scheduler + */ + public IRequestScheduler getRequestScheduler(); + + /** + * Puts a new request into the PENDING state. This call is + * only valid for requests with status BEGIN. An error is + * generated for other cases. + *

+ * This call might be used by agent servlets that want to + * copy a previous request, and resubmit it. By putting it + * into PENDING state, the normal agent screens can be used + * for further processing. + * + * @param req + * the request to mark PENDING + * @exception EBaseException failed to mark request as pending + */ + public void markRequestPending(IRequest req) + throws EBaseException; + + /** + * Clones a request object and mark it pending. 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(). + * + * @param r request to be cloned + * @return cloned request mark PENDING + * @exception EBaseException failed to clone or mark request + */ + public IRequest cloneAndMarkPending(IRequest r) + throws EBaseException; + + /** + * Approves a request. The request must be locked. + *

+ * This call will fail if: + * the request is not in PENDING state + * the policy modules do not accept the request + *

+ * If the policy modules reject the request, then the request + * will remain in the PENDING state. Messages from the policy + * module can be display to the agent to indicate the source + * of the problem. + *

+ * The request processing code adds an AgentApproval to this + * request that contains the authentication id of the agent. This + * data is retrieved from the Session object (qv). + * + * @param request + * the request that is being approved + * @exception EBaseException failed to approve request + */ + public void approveRequest(IRequest request) + throws EBaseException; + + /** + * Rejects a request. The request must be locked. + *

+ * This call will fail if: + * the request is not in PENDING state + *

+ * The agent servlet (or other application) may wish to store + * AgentMessage values to indicate the reason for the action + * + * @param request + * the request that is being rejected + * @exception EBaseException failed to reject request + */ + public void rejectRequest(IRequest request) + throws EBaseException; + + /** + * Cancels a request. The request must be locked. + *

+ * This call will fail if: + * the request is not in PENDING state + *

+ * The agent servlet (or other application) may wish to store + * AgentMessage values to indicate the reason for the action + * + * @param request + * the request that is being canceled + * @exception EBaseException failed to cancel request + */ + public void cancelRequest(IRequest request) + throws EBaseException; + + /** + * 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. + * + * @param request + * the request that is being updated + * @exception EBaseException failed to update request + */ + public void updateRequest(IRequest request) + throws EBaseException; + + /** + * Returns an enumerator that lists all RequestIds in the + * queue. The caller should use the RequestIds to locate + * each request by calling findRequest(). + *

+ * NOTE: This interface will not be useful for large databases. + * This needs to be replace by a VLV (paged) search object. + * + * @return request list + */ + public IRequestList listRequests(); + + /** + * 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. + * + * @param status request status + * @return request list + */ + public IRequestList listRequestsByStatus(RequestStatus status); + + /** + * 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. + * + * @param filter search filter + * @return request list + */ + public IRequestList listRequestsByFilter(String filter); + + /** + * 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. + * + * @param filter search filter + * @param maxSize max size to return + * @return request list + */ + public IRequestList listRequestsByFilter(String filter, int maxSize); + + /** + * 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. + * + * @param filter search filter + * @param maxSize max size to return + * @param timeLimit timeout value for the search + * @return request list + */ + public IRequestList listRequestsByFilter(String filter, int maxSize, int timeLimit); + + /** + * Gets requests that are pending on handling by the service + *

+ * @return list of pending requests + */ + // public IRequestList listServicePendingRequests(); + + /** + * Locates a request from the SourceId. + * + * @param id + * a unique identifier for the record that is based on the source + * of the request, and possibly an identify assigned by the source. + * @return + * The requestid corresponding to this source id. null is + * returned if the source id does not exist. + */ + public RequestId findRequestBySourceId(String id); + + /** + * Locates all requests with a particular SourceId. + *

+ * @param id + * an identifier for the record that is based on the source + * of the request + * @return + * A list of requests corresponding to this source id. null is + * returned if the source id does not exist. + */ + public IRequestList findRequestsBySourceId(String id); + + /** + * Releases the LOCK on a request obtained from findRequest() or + * newRequest() + *

+ * @param r request + */ + public void releaseRequest(IRequest r); + + /** + * Marks as serviced after destination authority has serviced request. + * Used by connector. + * + * @param r request + */ + public void markAsServiced(IRequest r); + + /** + * Resends requests + */ + public void recover(); + + /** + * Gets a pageable list of IRequest entries in this queue. + * + * @param pageSize page size + * @return request list + */ + public IRequestVirtualList getPagedRequests(int pageSize); + + /** + * Gets a pageable list of IRequest entries in this queue. + * + * @param filter search filter + * @param pageSize page size + * @param sortKey the attributes to sort by + * @return request list + */ + public IRequestVirtualList getPagedRequestsByFilter(String filter, + int pageSize, + String sortKey); + /** + * Gets a pageable list of IRequest entries in this queue. + * + * @param fromId request id to start with + * @param filter search filter + * @param pageSize page size + * @param sortKey the attributes to sort by + * @return request list + */ + public IRequestVirtualList getPagedRequestsByFilter(RequestId fromId, + String filter, + int pageSize, + String sortKey); + + /** + * Gets a pageable list of IRequest entries in this queue. This + * jumps right to the end of the list + * + * @param fromId request id to start with + * @param jumpToEnd jump to end of list (set fromId to null) + * @param filter search filter + * @param pageSize page size + * @param sortKey the attributes to sort by + * @return request list + */ + public IRequestVirtualList getPagedRequestsByFilter(RequestId fromId, + boolean jumpToEnd, String filter, + int pageSize, + String sortKey); + + + /** + * Retrieves the notifier for pending request. + * + * @return notifier for pending request + */ + public INotify getPendingNotify(); + + + public BigInteger getLastRequestIdInRange(BigInteger reqId_low_bound, BigInteger reqId_upper_bound); + + /** + * Resets serial number. + */ + public void resetSerialNumber(BigInteger serial) throws EBaseException; + + /** + * Removes all objects with this repository. + */ + public void removeAllObjects() throws EBaseException; + + /** + * Gets request repository. + * + * @return request repository + */ + public IRepository getRequestRepository(); + + public String getPublishingStatus(); + + public void setPublishingStatus(String status); +} -- cgit