Enable logging of SAML errors without making them fatal.
authorScott Cantor <cantor.2@osu.edu>
Fri, 6 Jul 2007 21:52:10 +0000 (21:52 +0000)
committerScott Cantor <cantor.2@osu.edu>
Fri, 6 Jul 2007 21:52:10 +0000 (21:52 +0000)
saml/saml1/binding/SAML1SOAPClient.h
saml/saml1/binding/impl/SAML1SOAPClient.cpp
saml/saml2/binding/SAML2SOAPClient.h
saml/saml2/binding/impl/SAML2SOAPClient.cpp

index 4279f07..832603d 100644 (file)
@@ -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;
         };
index 77b5eb8..30f0bf7 100644 (file)
@@ -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;
 }
index 0bd7fc7..4981c2e 100644 (file)
@@ -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;
         };
index 4b077ba..f2a4d42 100644 (file)
@@ -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;
 }