Pass through critical bit in metadata/trust accessors.
[shibboleth/cpp-sp.git] / shibsp / impl / XMLServiceProvider.cpp
index 1dfc15d..b6afa6f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2010 Internet2
+ *  Copyright 2001-2011 Internet2
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -132,12 +132,12 @@ namespace {
         MetadataProvider* getMetadataProvider(bool required=true) const {
             if (required && !m_base && !m_metadata)
                 throw ConfigurationException("No MetadataProvider available.");
-            return (!m_metadata && m_base) ? m_base->getMetadataProvider() : m_metadata;
+            return (!m_metadata && m_base) ? m_base->getMetadataProvider(required) : m_metadata;
         }
         TrustEngine* getTrustEngine(bool required=true) const {
             if (required && !m_base && !m_trust)
                 throw ConfigurationException("No TrustEngine available.");
-            return (!m_trust && m_base) ? m_base->getTrustEngine() : m_trust;
+            return (!m_trust && m_base) ? m_base->getTrustEngine(required) : m_trust;
         }
         AttributeExtractor* getAttributeExtractor() const {
             return (!m_attrExtractor && m_base) ? m_base->getAttributeExtractor() : m_attrExtractor;
@@ -1018,8 +1018,7 @@ void XMLApplication::doSSO(const ProtocolProvider& pp, set<string>& protocols, D
     SPConfig& conf = SPConfig::getConfig();
 
     // Tokenize the protocol list inside the element.
-    const XMLCh* protlist = e->getFirstChild()->getNodeValue();
-    XMLStringTokenizer prottokens(protlist);
+    XMLStringTokenizer prottokens(e->getTextContent());
     while (prottokens.hasMoreTokens()) {
         auto_ptr_char prot(prottokens.nextToken());
 
@@ -1138,8 +1137,7 @@ void XMLApplication::doLogout(const ProtocolProvider& pp, set<string>& protocols
     SPConfig& conf = SPConfig::getConfig();
 
     // Tokenize the protocol list inside the element.
-    const XMLCh* protlist = e->getFirstChild()->getNodeValue();
-    XMLStringTokenizer prottokens(protlist);
+    XMLStringTokenizer prottokens(e->getTextContent());
     while (prottokens.hasMoreTokens()) {
         auto_ptr_char prot(prottokens.nextToken());
 
@@ -1227,8 +1225,7 @@ void XMLApplication::doNameIDMgmt(const ProtocolProvider& pp, set<string>& proto
     SPConfig& conf = SPConfig::getConfig();
 
     // Tokenize the protocol list inside the element.
-    const XMLCh* protlist = e->getFirstChild()->getNodeValue();
-    XMLStringTokenizer prottokens(protlist);
+    XMLStringTokenizer prottokens(e->getTextContent());
     while (prottokens.hasMoreTokens()) {
         auto_ptr_char prot(prottokens.nextToken());