/** * Gets chaining metadata resolver for all saml services. * * @param servicesManager the services manager * @param entityID the entity id * @param resolver the resolver * @return the chaining metadata resolver for all saml services * @throws Exception the exception */ public static MetadataResolver getMetadataResolverForAllSamlServices( final ServicesManager servicesManager, final String entityID, final SamlRegisteredServiceCachingMetadataResolver resolver) throws Exception { final Predicate p = Predicates.instanceOf(SamlRegisteredService.class); final Collection<RegisteredService> registeredServices = servicesManager.findServiceBy(p); final List<MetadataResolver> resolvers = new ArrayList<>(); final ChainingMetadataResolver chainingMetadataResolver = new ChainingMetadataResolver(); for (final RegisteredService registeredService : registeredServices) { final SamlRegisteredService samlRegisteredService = SamlRegisteredService.class.cast(registeredService); final SamlRegisteredServiceServiceProviderMetadataFacade adaptor = SamlRegisteredServiceServiceProviderMetadataFacade.get( resolver, samlRegisteredService, entityID); resolvers.add(adaptor.getMetadataResolver()); } chainingMetadataResolver.setResolvers(resolvers); chainingMetadataResolver.setId(entityID); chainingMetadataResolver.initialize(); return chainingMetadataResolver; }