- const EntityDescriptor* entity = policy.getMetadataProvider()->getEntityDescriptor(issuer);
- if (entity) {
- log.debug("matched response issuer against metadata, searching for applicable role...");
- const RoleDescriptor* roledesc=entity->getRoleDescriptor(*policy.getRole(), protocol);
- if (roledesc)
- policy.setIssuerMetadata(roledesc);
- else if (log.isWarnEnabled())
- log.warn("unable to find compatible role (%s) in metadata", policy.getRole()->toString().c_str());
- }
- else if (log.isWarnEnabled()) {
+ MetadataProvider::Criteria& mc = policy.getMetadataProviderCriteria();
+ mc.entityID_unicode = issuer;
+ mc.role = policy.getRole();
+ mc.protocol = protocol;
+ pair<const EntityDescriptor*,const RoleDescriptor*> entity = policy.getMetadataProvider()->getEntityDescriptor(mc);
+
+ if (!entity.first) {