/*
- * Copyright 2001-2007 Internet2
+ * Copyright 2001-2009 Internet2
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#ifndef __saml2_soap11client_h__
#define __saml2_soap11client_h__
-#include <saml/binding/SOAPClient.h>
+#include <saml/base.h>
namespace opensaml {
+
+ class SAML_API SOAPClient;
+
+ namespace saml2md {
+ class SAML_API MetadataCredentialCriteria;
+ };
+
namespace saml2p {
class SAML_API RequestAbstractType;
/**
* Specialized SOAPClient for SAML 2.0 SOAP binding.
*/
- class SAML_API SAML2SOAPClient : opensaml::SOAPClient
+ class SAML_API SAML2SOAPClient
{
public:
/**
- * Creates a SOAP client instance with a particular SecurityPolicy.
+ * Constructor
*
- * @param policy reference to SecurityPolicy to apply
+ * @param soaper reference to SOAPClient object to use for call
+ * @param fatalSAMLErrors true iff a non-successful SAML Status code should be fatal
*/
- SAML2SOAPClient(SecurityPolicy& policy) : opensaml::SOAPClient(policy), m_correlate(NULL) {}
-
- virtual ~SAML2SOAPClient() {
- XMLString::release(&m_correlate);
- }
+ SAML2SOAPClient(SOAPClient& soaper, bool fatalSAMLErrors=true);
+
+ virtual ~SAML2SOAPClient();
/**
* Specialized method for sending SAML 2.0 requests. The SOAP layer will be
* constructed automatically.
*
- * <p>The request will be freed by the client object if the method succeeds.
+ * <p>The request will be freed by the client object regardless of the outcome.
*
* @param request SAML request to send
- * @param peer peer to send message to, expressed in metadata terms
+ * @param to peer to send message to, expressed in metadata criteria terms
+ * @param from identity of sending application
* @param endpoint URL of endpoint to recieve message
*/
- virtual void sendSAML(RequestAbstractType* request, const saml2md::RoleDescriptor& peer, const char* endpoint);
+ virtual void sendSAML(RequestAbstractType* request, const char* from, saml2md::MetadataCredentialCriteria& to, const char* endpoint);
/**
* Specialized method for receiving SAML 2.0 responses. The SOAP layer will be
* @return true iff the error should be treated as a fatal error
*/
virtual bool handleError(const Status& status);
-
+
+ /** SOAP client object */
+ SOAPClient& m_soaper;
+
+ /** Flag controlling default error handler. */
+ bool m_fatal;
+
private:
XMLCh* m_correlate;
};