}\r
\r
app->getMetadataProvider()->lock();\r
- const EntityDescriptor* entity = app->getMetadataProvider()->getEntityDescriptor(entityID, strict);\r
- if (entity) {\r
- if (rname) {\r
- const XMLCh* ns = rns ? XMLString::transcode(rns) : samlconstants::SAML20MD_NS;\r
- auto_ptr_XMLCh n(rname);\r
- QName q(ns, n.get());\r
- const RoleDescriptor* role = entity->getRoleDescriptor(q, protocol);\r
- if (role) {\r
- XMLHelper::serialize(role->marshall(), cout, true);\r
- }\r
- else {\r
- log.error("compatible role %s not found for (%s)", q.toString().c_str(), entityID);\r
- }\r
- }\r
- else {\r
- XMLHelper::serialize(entity->marshall(), cout, true);\r
- }\r
+ MetadataProvider::Criteria mc(entityID, NULL, NULL, strict);\r
+ if (rname) {\r
+ const XMLCh* ns = rns ? XMLString::transcode(rns) : samlconstants::SAML20MD_NS;\r
+ auto_ptr_XMLCh n(rname);\r
+ QName q(ns, n.get());\r
+ mc.role = &q;\r
+ mc.protocol = protocol;\r
+ const RoleDescriptor* role = app->getMetadataProvider()->getEntityDescriptor(mc).second;\r
+ if (role)\r
+ XMLHelper::serialize(role->marshall(), cout, true);\r
+ else\r
+ log.error("compatible role %s not found for (%s)", q.toString().c_str(), entityID);\r
}\r
else {\r
- log.error("no metadata found for (%s)", entityID);\r
+ const EntityDescriptor* entity = app->getMetadataProvider()->getEntityDescriptor(mc).first;\r
+ if (entity)\r
+ XMLHelper::serialize(entity->marshall(), cout, true);\r
+ else\r
+ log.error("no metadata found for (%s)", entityID);\r
}\r
\r
app->getMetadataProvider()->unlock();\r