using namespace xmltooling;\r
using namespace std;\r
\r
-namespace {\r
+namespace shibsp {\r
\r
class ChainingAccessControl : public AccessControl\r
{\r
for_each(m_ac.begin(), m_ac.end(), xmltooling::cleanup<AccessControl>());\r
}\r
\r
- Lockable* lock() {return this;}\r
- void unlock() {}\r
+ Lockable* lock() {\r
+ for_each(m_ac.begin(), m_ac.end(), mem_fun<Lockable*,AccessControl>(&AccessControl::lock));\r
+ return this;\r
+ }\r
+ void unlock() {\r
+ for_each(m_ac.begin(), m_ac.end(), mem_fun<void,AccessControl>(&AccessControl::unlock));\r
+ }\r
\r
aclresult_t authorized(const SPRequest& request, const Session* session) const;\r
\r
static const XMLCh _type[] = UNICODE_LITERAL_4(t,y,p,e);\r
static const XMLCh AND[] = UNICODE_LITERAL_3(A,N,D);\r
static const XMLCh OR[] = UNICODE_LITERAL_2(O,R);\r
-}\r
\r
-extern AccessControl* SHIBSP_DLLLOCAL XMLAccessControlFactory(const DOMElement* const & e);\r
+ extern AccessControl* SHIBSP_DLLLOCAL XMLAccessControlFactory(const DOMElement* const & e);\r
+}\r
\r
void SHIBSP_API shibsp::registerAccessControls()\r
{\r