Пример #1
0
  /**
   * 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;
  }