SSPCPP-341 - Template resolver plugin
authorScott Cantor <cantor.2@osu.edu>
Tue, 10 Apr 2012 15:23:07 +0000 (15:23 +0000)
committerScott Cantor <cantor.2@osu.edu>
Tue, 10 Apr 2012 15:23:07 +0000 (15:23 +0000)
plugins/Makefile.am
plugins/TransformAttributeResolver.cpp
plugins/plugins.cpp
plugins/plugins.vcxproj
plugins/plugins.vcxproj.filters

index 5ccd500..230bf4b 100644 (file)
@@ -12,6 +12,7 @@ common_sources = \
 plugins_la_SOURCES = \
        ${common_sources} \
        GSSAPIAttributeExtractor.cpp \
+    TemplateAttributeResolver.cpp \
     TransformAttributeResolver.cpp
 
 #plugins_lite_la_SOURCES = \
index 6925722..f620dc0 100644 (file)
@@ -50,20 +50,17 @@ namespace shibsp {
     class SHIBSP_DLLLOCAL TransformContext : public ResolutionContext
     {
     public:
-        TransformContext(const Session& session) : m_inputAttributes(&session.getAttributes()) {
-        }
-
-        TransformContext(const vector<shibsp::Attribute*>* attributes) : m_inputAttributes(attributes) {
+        TransformContext(const vector<Attribute*>* attributes) : m_inputAttributes(attributes) {
         }
 
         ~TransformContext() {
-            for_each(m_attributes.begin(), m_attributes.end(), xmltooling::cleanup<shibsp::Attribute>());
+            for_each(m_attributes.begin(), m_attributes.end(), xmltooling::cleanup<Attribute>());
         }
 
-        const vector<shibsp::Attribute*>* getInputAttributes() const {
+        const vector<Attribute*>* getInputAttributes() const {
             return m_inputAttributes;
         }
-        vector<shibsp::Attribute*>& getResolvedAttributes() {
+        vector<Attribute*>& getResolvedAttributes() {
             return m_attributes;
         }
         vector<opensaml::Assertion*>& getResolvedAssertions() {
@@ -71,8 +68,8 @@ namespace shibsp {
         }
 
     private:
-        const vector<shibsp::Attribute*>* m_inputAttributes;
-        vector<shibsp::Attribute*> m_attributes;
+        const vector<Attribute*>* m_inputAttributes;
+        vector<Attribute*> m_attributes;
         static vector<opensaml::Assertion*> m_assertions;   // empty dummy
     };
 
@@ -97,7 +94,7 @@ namespace shibsp {
             const XMLCh* authncontext_class=nullptr,
             const XMLCh* authncontext_decl=nullptr,
             const vector<const opensaml::Assertion*>* tokens=nullptr,
-            const vector<shibsp::Attribute*>* attributes=nullptr
+            const vector<Attribute*>* attributes=nullptr
             ) const {
             // Make sure new method gets run.
             return createResolutionContext(application, nullptr, issuer, protocol, nameid, authncontext_class, authncontext_decl, tokens, attributes);
@@ -112,13 +109,13 @@ namespace shibsp {
             const XMLCh* authncontext_class=nullptr,
             const XMLCh* authncontext_decl=nullptr,
             const vector<const opensaml::Assertion*>* tokens=nullptr,
-            const vector<shibsp::Attribute*>* attributes=nullptr
+            const vector<Attribute*>* attributes=nullptr
             ) const {
             return new TransformContext(attributes);
         }
 
         ResolutionContext* createResolutionContext(const Application& application, const Session& session) const {
-            return new TransformContext(session);
+            return new TransformContext(&session.getAttributes());
         }
 
         void resolveAttributes(ResolutionContext& ctx) const;
index 44d6dc4..ead4f8e 100644 (file)
@@ -44,19 +44,22 @@ namespace shibsp {
 #ifdef HAVE_GSSAPI_NAMINGEXTS
     PluginManager<AttributeExtractor,string,const DOMElement*>::Factory GSSAPIExtractorFactory;
 #endif
+    PluginManager<AttributeResolver,string,const DOMElement*>::Factory TemplateAttributeResolverFactory;
     PluginManager<AttributeResolver,string,const DOMElement*>::Factory TransformAttributeResolverFactory;
 };
 
 extern "C" int PLUGINS_EXPORTS xmltooling_extension_init(void*)
 {
+    SPConfig& conf = SPConfig::getConfig();
 #ifdef HAVE_GSSAPI_NAMINGEXTS
-    SPConfig::getConfig().AttributeExtractorManager.registerFactory("GSSAPI", GSSAPIExtractorFactory);
+    conf.AttributeExtractorManager.registerFactory("GSSAPI", GSSAPIExtractorFactory);
     static const XMLCh _GSSAPIName[] = UNICODE_LITERAL_10(G,S,S,A,P,I,N,a,m,e);
     static const XMLCh _GSSAPIContext[] = UNICODE_LITERAL_13(G,S,S,A,P,I,C,o,n,t,e,x,t);
     XMLObjectBuilder::registerBuilder(xmltooling::QName(shibspconstants::SHIB2ATTRIBUTEMAP_NS, _GSSAPIName), new AnyElementBuilder());
     XMLObjectBuilder::registerBuilder(xmltooling::QName(shibspconstants::SHIB2ATTRIBUTEMAP_NS, _GSSAPIContext), new AnyElementBuilder());
 #endif
-    SPConfig::getConfig().AttributeResolverManager.registerFactory("Transform", TransformAttributeResolverFactory);
+    conf.AttributeResolverManager.registerFactory("Template", TemplateAttributeResolverFactory);
+    conf.AttributeResolverManager.registerFactory("Transform", TransformAttributeResolverFactory);
     return 0;   // signal success
 }
 
index b3e4a11..e73adde 100644 (file)
   <ItemGroup>
     <ClCompile Include="GSSAPIAttributeExtractor.cpp" />
     <ClCompile Include="plugins.cpp" />
+    <ClCompile Include="TemplateAttributeResolver.cpp" />
     <ClCompile Include="TransformAttributeResolver.cpp" />
   </ItemGroup>
   <ItemGroup>
index ab750f4..f126958 100644 (file)
@@ -4,6 +4,7 @@
     <ClCompile Include="GSSAPIAttributeExtractor.cpp" />
     <ClCompile Include="plugins.cpp" />
     <ClCompile Include="TransformAttributeResolver.cpp" />
+    <ClCompile Include="TemplateAttributeResolver.cpp" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="internal.h" />