Back to index

nordugrid-arc-nox  1.1.0~rc6
XACMLApply.h
Go to the documentation of this file.
00001 #ifndef __ARC_SEC_XACMLAPPLY_H__
00002 #define __ARC_SEC_XACMLAPPLY_H__
00003 
00004 #include <list>
00005 #include <arc/XMLNode.h>
00006 #include <arc/security/ArcPDP/attr/AttributeValue.h>
00007 #include <arc/security/ArcPDP/fn/Function.h>
00008 #include <arc/security/ArcPDP/attr/AttributeFactory.h>
00009 #include <arc/security/ArcPDP/fn/FnFactory.h>
00010 #include <arc/security/ArcPDP/Evaluator.h>
00011 
00012 #include "./AttributeSelector.h"
00013 #include "./AttributeDesignator.h"
00014 
00015 namespace ArcSec {
00016 
00017 //<Apply/>
00018 class XACMLApply {
00019 public:
00020   XACMLApply(Arc::XMLNode& node, EvaluatorContext* ctx);
00021   virtual ~XACMLApply();
00022   virtual std::list<AttributeValue*> evaluate(EvaluationCtx* ctx);
00023 
00024 private:
00025   Arc::XMLNode applynode;
00026   std::string functionId;
00027 
00028   AttributeFactory* attrfactory;
00029   FnFactory* fnfactory;
00030 
00031   Function* function;
00032 
00037   std::map<int, AttributeValue*> attrval_list;
00038   std::map<int, XACMLApply*> sub_apply_list;
00039   std::map<int, AttributeDesignator*> designator_list;
00040   std::map<int, AttributeSelector*> selector_list;
00041 };
00042 
00043 } // namespace ArcSec
00044 
00045 #endif /* __ARC_SEC_XACMLAPPLY_H__ */
00046