Draft of query tool, not working yet.
[shibboleth/cpp-sp.git] / shibsp / impl / XMLServiceProvider.cpp
index faa71d7..600c3bd 100644 (file)
@@ -249,13 +249,12 @@ namespace {
             return NULL;\r
         }\r
 \r
-        vector<const SecurityPolicyRule*>& getPolicyRules(const Handler& handler) const {\r
-            pair<bool,const char*> pid = handler.getString("policyId", "urn:mace:shibboleth:sp:config:2.0");\r
-            if (!pid.first)\r
-                pid.second = m_impl->m_policyDefault.c_str();\r
-            if (m_impl->m_policyMap.count(pid.second))\r
-                return m_impl->m_policyMap[pid.second];\r
-            throw ConfigurationException("Security Policy ($1) not found, check <SecurityPolicies> element.", params(1,pid.second));\r
+        vector<const SecurityPolicyRule*>& getPolicyRules(const char* id=NULL) const {\r
+            if (!id)\r
+                id = m_impl->m_policyDefault.c_str();\r
+            if (m_impl->m_policyMap.count(id))\r
+                return m_impl->m_policyMap[id];\r
+            throw ConfigurationException("Security Policy ($1) not found, check <SecurityPolicies> element.", params(1,id));\r
         }\r
 \r
     protected:\r
@@ -938,27 +937,6 @@ XMLConfigImpl::XMLConfigImpl(const DOMElement* e, bool first, const XMLConfig* o
             }\r
         }\r
 \r
-        // Load the default application. This actually has a fixed ID of "default". ;-)\r
-        child=XMLHelper::getLastChildElement(e,Applications);\r
-        if (!child) {\r
-            log.fatal("can't build default Application object, missing conf:Applications element?");\r
-            throw ConfigurationException("can't build default Application object, missing conf:Applications element?");\r
-        }\r
-        XMLApplication* defapp=new XMLApplication(m_outer,child);\r
-        m_appmap[defapp->getId()]=defapp;\r
-        \r
-        // Load any overrides.\r
-        child = XMLHelper::getFirstChildElement(child,_Application);\r
-        while (child) {\r
-            auto_ptr<XMLApplication> iapp(new XMLApplication(m_outer,child,defapp));\r
-            if (m_appmap.count(iapp->getId()))\r
-                log.crit("found conf:Application element with duplicate id attribute (%s), skipping it", iapp->getId());\r
-            else\r
-                m_appmap[iapp->getId()]=iapp.release();\r
-\r
-            child = XMLHelper::getNextSiblingElement(child,_Application);\r
-        }\r
-\r
         // Load security policies.\r
         child = XMLHelper::getLastChildElement(e,SecurityPolicies);\r
         if (child) {\r
@@ -984,6 +962,27 @@ XMLConfigImpl::XMLConfigImpl(const DOMElement* e, bool first, const XMLConfig* o
             if (!m_policyMap.count(m_policyDefault))\r
                 throw ConfigurationException("Default security policy ($1) not found in conf:SecurityPolicies element.", params(1,m_policyDefault.c_str()));\r
         }\r
+\r
+        // Load the default application. This actually has a fixed ID of "default". ;-)\r
+        child=XMLHelper::getLastChildElement(e,Applications);\r
+        if (!child) {\r
+            log.fatal("can't build default Application object, missing conf:Applications element?");\r
+            throw ConfigurationException("can't build default Application object, missing conf:Applications element?");\r
+        }\r
+        XMLApplication* defapp=new XMLApplication(m_outer,child);\r
+        m_appmap[defapp->getId()]=defapp;\r
+        \r
+        // Load any overrides.\r
+        child = XMLHelper::getFirstChildElement(child,_Application);\r
+        while (child) {\r
+            auto_ptr<XMLApplication> iapp(new XMLApplication(m_outer,child,defapp));\r
+            if (m_appmap.count(iapp->getId()))\r
+                log.crit("found conf:Application element with duplicate id attribute (%s), skipping it", iapp->getId());\r
+            else\r
+                m_appmap[iapp->getId()]=iapp.release();\r
+\r
+            child = XMLHelper::getNextSiblingElement(child,_Application);\r
+        }\r
     }\r
     catch (exception&) {\r
         this->~XMLConfigImpl();\r