Add chaining extractor.
[shibboleth/sp.git] / shibsp / Application.h
index e4d9c0b..9660e7a 100644 (file)
@@ -79,9 +79,6 @@ namespace shibsp {
         /** Shared lock for manipulating application state. */
         mutable xmltooling::RWLock* m_lock;
 
-        /** Cache of entity attributes. */
-        mutable std::map< std::string,std::multimap<std::string,const Attribute*> > m_entityAttributes;
-
         /** Pairs of raw and normalized CGI header names to clear. */
         mutable std::vector< std::pair<std::string,std::string> > m_unsetHeaders;
 
@@ -175,11 +172,11 @@ namespace shibsp {
         virtual const PropertySet* getRelyingParty(const opensaml::saml2md::EntityDescriptor* provider) const=0;
 
         /**
-         * Returns the set of audience values associated with this Application.
+         * Returns any additional audience values associated with this Application.
          * 
-         * @return set of audience values associated with the Application
+         * @return additional audience values associated with the Application, or NULL
          */
-        virtual const std::vector<const XMLCh*>& getAudiences() const=0;
+        virtual const std::vector<const XMLCh*>* getAudiences() const=0;
 #endif
 
         /**
@@ -193,12 +190,11 @@ namespace shibsp {
         virtual std::string getNotificationURL(const char* request, bool front, unsigned int index) const=0;
 
         /**
-         * Returns a set of attribute IDs to use as a REMOTE_USER value.
-         * <p>The first attribute with a value (and only a single value) will be used.
+         * Returns an array of attribute IDs to use as a REMOTE_USER value, in order of preference.
          *
-         * @return  a set of attribute IDs, or an empty set
+         * @return  an array of attribute IDs, possibly empty
          */
-        virtual const std::set<std::string>& getRemoteUserAttributeIds() const=0;
+        virtual const std::vector<std::string>& getRemoteUserAttributeIds() const=0;
 
         /**
          * Clears any headers that may be used to hold attributes after export.
@@ -208,14 +204,6 @@ namespace shibsp {
         virtual void clearAttributeHeaders(SPRequest& request) const;
 
         /**
-         * Returns an indexed set of attributes associated with an entity (as opposed to a user).
-         *
-         * @param entityID  unique ID of entity
-         * @return a map of attributes keyed by their ID
-         */
-        virtual const std::multimap<std::string,const Attribute*>& getEntityAttributes(const char* entityID) const;
-
-        /**
          * Returns the default SessionInitiator when automatically requesting a session.
          * 
          * @return the default SessionInitiator, or NULL
@@ -264,6 +252,13 @@ namespace shibsp {
          * @return the mapped Handler, or NULL 
          */
         virtual const Handler* getHandler(const char* path) const=0;
+
+        /**
+         * Returns all registered Handlers.
+         *
+         * @param handlers  array to populate
+         */
+        virtual void getHandlers(std::vector<const Handler*>& handlers) const=0;
     };
 
 #if defined (_MSC_VER)