+ if (m_metadataCriteria)
+ delete m_metadataCriteria;
+ m_metadataCriteria=criteria;
+}
+
+void SecurityPolicy::evaluate(const XMLObject& message, const GenericRequest* request)
+{
+ for (vector<const SecurityPolicyRule*>::const_iterator i=m_rules.begin(); i!=m_rules.end(); ++i)
+ (*i)->evaluate(message,request,*this);
+}
+
+void SecurityPolicy::setIssuer(const Issuer* issuer)
+{
+ if (!getIssuerMatchingPolicy().issuerMatches(m_issuer, issuer))
+ throw SecurityPolicyException("An Issuer was supplied that conflicts with previous results.");
+
+ if (!m_issuer) {
+ if (m_entityOnly && issuer->getFormat() && !XMLString::equals(issuer->getFormat(), NameIDType::ENTITY))
+ throw SecurityPolicyException("A non-entity Issuer was supplied, violating policy.");
+ m_issuerRole = NULL;
+ m_issuer=issuer->cloneIssuer();
+ }
+}
+
+void SecurityPolicy::setIssuer(const XMLCh* issuer)
+{
+ if (!getIssuerMatchingPolicy().issuerMatches(m_issuer, issuer))
+ throw SecurityPolicyException("An Issuer was supplied that conflicts with previous results.");
+
+ if (!m_issuer && issuer && *issuer) {
+ m_issuerRole = NULL;
+ m_issuer = IssuerBuilder::buildIssuer();
+ m_issuer->setName(issuer);