blob: e7a32a5db22b709848f09dfde8182ba64bd4fa6a [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/*
* XSEC
*
* XKMSRequestAbstractType := Interface for base schema of XKMS Request messages
*
* $Id$
*
*/
#ifndef XKMSREQUESTABSTRACTTYPE_INCLUDE
#define XKMSREQUESTABSTRACTTYPE_INCLUDE
// XSEC Includes
#include <xsec/framework/XSECDefs.hpp>
#ifdef XSEC_XKMS_ENABLED
#include <xsec/xkms/XKMSMessageAbstractType.hpp>
class XKMSRespondWith;
class XKMSResponseMechanism;
/**
* @ingroup xkms
*/
/**
* @brief Interface definition for the RequestAbstractType
*
* The \<RequestAbstractType\> is an abstract type on which all
* XKMS Request messages are built.
*
* The schema definition for RequestAbstractType is as follows :
*
* \verbatim
<!-- RequestAbstractType -->
<complexType name="RequestAbstractType" abstract="true">
<complexContent>
<extension base="xkms:MessageAbstractType">
<sequence>
<element ref="xkms:ResponseMechanism" minOccurs="0"
maxOccurs="unbounded"/>
<element ref="xkms:RespondWith" minOccurs="0"
maxOccurs="unbounded"/>
<element ref="xkms:PendingNotification" minOccurs="0"/>
</sequence>
<attribute name="OriginalRequestId" type="NCName"
use="optional"/>
<attribute name="ResponseLimit" type="integer" use="optional"/>
</extension>
</complexContent>
</complexType>
<!-- /RequestAbstractType -->
\endverbatim
*/
class XSEC_EXPORT XKMSRequestAbstractType : public XKMSMessageAbstractType {
/** @name Constructors and Destructors */
//@{
protected:
XKMSRequestAbstractType() {};
public:
virtual ~XKMSRequestAbstractType() {};
/** @name Getter Interface Methods */
//@{
virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMElement * getElement(void) const = 0;
/**
* \brief Get the Original Request Id for the Message
*
* For transactions that use multipt request/response sessions (e.g.
* two stage commit or asyncronous processing), this attribute can be
* used to identify the id of the original message that was processed.
*
* @returns a pointer to the Original Request Id string (owned by the library)
*/
virtual const XMLCh * getOriginalRequestId(void) const = 0;
/**
* \brief Get the ResponseLimit size
*
* A client can limit the number of keys to be returned by the service by
* setting this value to the required limit.
*
* @returns Value of the ResponseLimit within the message. 0 if none was set
*/
virtual unsigned int getResponseLimit(void) const = 0;
//@}
/** @name Setter interface methods */
//@{
/**
* \brief Set the Original Reqeust Id for the Message
*
* Allows a calling application to set a new original request Id for the
* message
*
* @param id The Id to set as the OriginalRequestId
*/
virtual void setOriginalRequestId(const XMLCh * id) = 0;
/**
* \brief Set the ResponseLimit size
*
* A client can limit the number of keys to be returned by the service by
* setting this value to the required limit.
*
* @param limit Value to set the ResponseLimit within the message
*/
virtual void setResponseLimit(unsigned int limit) = 0;
//@}
/** @name \<RespondWith\> handling */
//@{
/**
* \brief Number of RespondWith elements in this Request
*
* Returns the number of RespondWith elements held within this request
*
* @returns Number of RespondWith elements
*/
virtual int getRespondWithSize(void) = 0;
/**
* \brief Get the nth item in the RespondWith list
*
* @param item The item to return
* @returns the nth item in the RespondWith list.
*
*/
virtual XKMSRespondWith * getRespondWithItem(int item) = 0;
/**
* \brief Get the string of the nth item in the RespondWith list
*
* @param item The item whose string is to be returned
* @returns the string of the nth item in the RespondWith list.
*
*/
virtual const XMLCh * getRespondWithItemStr(int item) = 0;
/**
* \brief Append an item to the RespondWith list
*
* @param item XKMSRespondWith object to append to the list.
* @note Once passed in, this item will be owned by the library.
*/
virtual void appendRespondWithItem(XKMSRespondWith * item) = 0;
/**
* \brief Shortcut for appending an item to the RespondWith list
*
* @param item String to create a RespondWith element around and
* append to the list.
*/
virtual void appendRespondWithItem(const XMLCh * item) = 0;
//@}
/** @name \<ResponseMechanism\> handling */
//@{
/**
* \brief Number of ResponseMechanism elements in this Request
*
* Returns the number of ResponseMechanism elements held within this request
*
* @returns Number of ResponseMechanism elements
*/
virtual int getResponseMechanismSize(void) = 0;
/**
* \brief Get the nth item in the ResponseMechanism list
*
* @param item The item to return
* @returns the nth item in the ResponseMechanism list.
*
*/
virtual XKMSResponseMechanism * getResponseMechanismItem(int item) = 0;
/**
* \brief Get the string of the nth item in the ResponseMechanism list
*
* @param item The item whose string is to be returned
* @returns the string of the nth item in the RespondWith list.
*
*/
virtual const XMLCh * getResponseMechanismItemStr(int item) = 0;
/**
* \brief Append an item to the ResponseMechanism list
*
* @param item XKMSResponseMechanism object to append to the list.
* @note Once passed in, this item will be owned by the library.
*/
virtual void appendResponseMechanismItem(XKMSResponseMechanism * item) = 0;
/**
* \brief Shortcut for appending an item to the ResponseMechanism list
*
* @param item String to create a ResponseMechanism element around and
* append to the list.
*/
virtual void appendResponseMechanismItem(const XMLCh * item) = 0;
/**
* \brief Remove a ResponseMechanism
*
* Removes the identified ResponseMechanism from the item
*
* @param item Item to remove
*/
virtual void removeResponseMechanismItem(int item) = 0;
//@}
private:
// Unimplemented
XKMSRequestAbstractType(const XKMSRequestAbstractType &);
XKMSRequestAbstractType & operator = (const XKMSRequestAbstractType &);
};
#endif /* XSEC_XKMS_ENABLED */
#endif /* XKMSREQUESTABSTRACTTYPE_INCLUDE */