From b1a9d73e4cd13aa99f221b8e7a38dcb92931a1f1 Mon Sep 17 00:00:00 2001 From: Scott Cantor Date: Fri, 6 Jul 2007 21:52:10 +0000 Subject: [PATCH] Enable logging of SAML errors without making them fatal. --- saml/saml1/binding/SAML1SOAPClient.h | 10 +++++++--- saml/saml1/binding/impl/SAML1SOAPClient.cpp | 2 +- saml/saml2/binding/SAML2SOAPClient.h | 10 +++++++--- saml/saml2/binding/impl/SAML2SOAPClient.cpp | 2 +- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/saml/saml1/binding/SAML1SOAPClient.h b/saml/saml1/binding/SAML1SOAPClient.h index 4279f07..832603d 100644 --- a/saml/saml1/binding/SAML1SOAPClient.h +++ b/saml/saml1/binding/SAML1SOAPClient.h @@ -42,9 +42,10 @@ namespace opensaml { /** * Constructor * - * @param soaper reference to SOAPClient object to use for call + * @param soaper reference to SOAPClient object to use for call + * @param fatalSAMLErrors true iff a non-successful SAML Status code should be fatal */ - SAML1SOAPClient(SOAPClient& soaper) : m_soaper(soaper), m_correlate(NULL) { + SAML1SOAPClient(SOAPClient& soaper, bool fatalSAMLErrors=true) : m_soaper(soaper), m_fatal(fatalSAMLErrors), m_correlate(NULL) { } virtual ~SAML1SOAPClient() { @@ -82,9 +83,12 @@ namespace opensaml { */ virtual bool handleError(const Status& status); - /** SOAP client object */ + /** SOAP client object. */ SOAPClient& m_soaper; + /** Flag controlling default error handler. */ + bool m_fatal; + private: XMLCh* m_correlate; }; diff --git a/saml/saml1/binding/impl/SAML1SOAPClient.cpp b/saml/saml1/binding/impl/SAML1SOAPClient.cpp index 77b5eb8..30f0bf7 100644 --- a/saml/saml1/binding/impl/SAML1SOAPClient.cpp +++ b/saml/saml1/binding/impl/SAML1SOAPClient.cpp @@ -95,5 +95,5 @@ bool SAML1SOAPClient::handleError(const Status& status) (code ? code->toString().c_str() : "no code"), (str.get() ? str.get() : "no message") ); - return true; + return m_fatal; } diff --git a/saml/saml2/binding/SAML2SOAPClient.h b/saml/saml2/binding/SAML2SOAPClient.h index 0bd7fc7..4981c2e 100644 --- a/saml/saml2/binding/SAML2SOAPClient.h +++ b/saml/saml2/binding/SAML2SOAPClient.h @@ -42,11 +42,12 @@ namespace opensaml { /** * Constructor * - * @param soaper reference to SOAPClient object to use for call + * @param soaper reference to SOAPClient object to use for call + * @param fatalSAMLErrors true iff a non-successful SAML Status code should be fatal */ - SAML2SOAPClient(SOAPClient& soaper) : m_soaper(soaper), m_correlate(NULL) { + SAML2SOAPClient(SOAPClient& soaper, bool fatalSAMLErrors=true) : m_soaper(soaper), m_fatal(fatalSAMLErrors), m_correlate(NULL) { } - + virtual ~SAML2SOAPClient() { xercesc::XMLString::release(&m_correlate); } @@ -85,6 +86,9 @@ namespace opensaml { /** SOAP client object */ SOAPClient& m_soaper; + /** Flag controlling default error handler. */ + bool m_fatal; + private: XMLCh* m_correlate; }; diff --git a/saml/saml2/binding/impl/SAML2SOAPClient.cpp b/saml/saml2/binding/impl/SAML2SOAPClient.cpp index 4b077ba..f2a4d42 100644 --- a/saml/saml2/binding/impl/SAML2SOAPClient.cpp +++ b/saml/saml2/binding/impl/SAML2SOAPClient.cpp @@ -94,5 +94,5 @@ bool SAML2SOAPClient::handleError(const Status& status) (code.get() ? code.get() : "no code"), (str.get() ? str.get() : "no message") ); - return true; + return m_fatal; } -- 2.1.4