00001 #ifndef __ARCSEC_EVALUATORLOADER_H__
00002 #define __ARCSEC_EVALUATORLOADER_H__
00003
00004 #include <list>
00005
00006 #include <arc/Logger.h>
00007 #include <arc/security/ClassLoader.h>
00008 #include <arc/XMLNode.h>
00009 #include <arc/ArcConfig.h>
00010 #include <arc/security/ArcPDP/Evaluator.h>
00011 #include <arc/security/ArcPDP/Request.h>
00012 #include <arc/security/ArcPDP/policy/Policy.h>
00013 #include <arc/security/ArcPDP/Source.h>
00014
00015 namespace ArcSec {
00017
00019 class EvaluatorLoader {
00020 public:
00021 EvaluatorLoader();
00023 Evaluator* getEvaluator(const std::string& classname);
00025 Evaluator* getEvaluator(const Policy* policy);
00027 Evaluator* getEvaluator(const Request* request);
00029 Request* getRequest(const std::string& classname, const Source& requestsource);
00031 Request* getRequest(const Source& requestsource);
00033 Policy* getPolicy(const std::string& classname, const Source& policysource);
00035 Policy* getPolicy(const Source& policysource);
00036 protected:
00037 static Arc::Logger logger;
00038 private:
00041 std::list<Arc::XMLNode> class_config_list_;
00042 };
00043
00044 }
00045
00046 #endif
00047