private void addDescriptors(List<String> result, EntitiesDescriptor descriptors) throws MetadataProviderException { log.debug("Found metadata EntitiesDescriptor with ID", descriptors.getID()); if (descriptors.getEntitiesDescriptors() != null) { for (EntitiesDescriptor descriptor : descriptors.getEntitiesDescriptors()) { addDescriptors(result, descriptor); } } if (descriptors.getEntityDescriptors() != null) { for (EntityDescriptor descriptor : descriptors.getEntityDescriptors()) { addDescriptor(result, descriptor); } } }
private void discoverAndAddIdp(XMLObject metadata, Map<String, SAMLProviderMetadata> idpMap) { if (metadata instanceof EntityDescriptor) { EntityDescriptor entityDescriptor = (EntityDescriptor) metadata; addIdpToMap(entityDescriptor, idpMap); } else if (metadata instanceof EntitiesDescriptor) { EntitiesDescriptor entitiesDescriptor = (EntitiesDescriptor) metadata; if (entitiesDescriptor.getEntityDescriptors() != null) { for (EntityDescriptor entityDescriptor: entitiesDescriptor.getEntityDescriptors()) { addIdpToMap(entityDescriptor, idpMap); } } if (entitiesDescriptor.getEntitiesDescriptors() != null) { for (EntitiesDescriptor entitiesDescriptorInner: entitiesDescriptor.getEntitiesDescriptors()) { discoverAndAddIdp(entitiesDescriptorInner, idpMap); } } } }
/** * Checks that at least one EntitiesDescriptor or EntityDescriptor is present. * * @param entitiesDescriptor * @throws ValidationException */ protected void validateEntityDescriptors(EntitiesDescriptor entitiesDescriptor) throws ValidationException { if ((entitiesDescriptor.getEntitiesDescriptors() == null || entitiesDescriptor.getEntitiesDescriptors().size() < 1) && (entitiesDescriptor.getEntityDescriptors() == null || entitiesDescriptor.getEntityDescriptors() .size() < 1)) { throw new ValidationException("Must have one or more EntitiesDescriptor or EntityDescriptor."); } } }
/** {@inheritDoc} */ protected void processChildElement(XMLObject parentSAMLObject, XMLObject childSAMLObject) throws UnmarshallingException { EntitiesDescriptor entitiesDescriptor = (EntitiesDescriptor) parentSAMLObject; if (childSAMLObject instanceof Extensions) { entitiesDescriptor.setExtensions((Extensions) childSAMLObject); } else if (childSAMLObject instanceof EntitiesDescriptor) { entitiesDescriptor.getEntitiesDescriptors().add((EntitiesDescriptor) childSAMLObject); } else if (childSAMLObject instanceof EntityDescriptor) { entitiesDescriptor.getEntityDescriptors().add((EntityDescriptor) childSAMLObject); } else if (childSAMLObject instanceof Signature) { entitiesDescriptor.setSignature((Signature) childSAMLObject); } else { super.processChildElement(parentSAMLObject, childSAMLObject); } }
/** * Recursively parses descriptors object. Supports both nested entitiesDescriptor * elements and leaf entityDescriptors. EntityID of all found descriptors are added * to the result set. Signatures on all found entities are verified using the given policy * and trust engine. * * @param result result set of parsed entity IDs * @param descriptors descriptors to parse * @throws MetadataProviderException in case signature validation fails */ private void addDescriptors(List<String> result, EntitiesDescriptor descriptors) throws MetadataProviderException { log.debug("Found metadata EntitiesDescriptor with ID", descriptors.getID()); if (descriptors.getEntitiesDescriptors() != null) { for (EntitiesDescriptor descriptor : descriptors.getEntitiesDescriptors()) { addDescriptors(result, descriptor); } } if (descriptors.getEntityDescriptors() != null) { for (EntityDescriptor descriptor : descriptors.getEntityDescriptors()) { addDescriptor(result, descriptor); } } }
List<EntitiesDescriptor> entitiesDescriptors = descriptor.getEntitiesDescriptors(); if (entitiesDescriptors != null && !entitiesDescriptors.isEmpty()) { List<EntitiesDescriptor> emptyEntitiesDescriptors = new ArrayList<EntitiesDescriptor>(); && (entitiesDescriptor.getEntitiesDescriptors() == null || entitiesDescriptor .getEntitiesDescriptors().isEmpty())) { log.trace("Filtering out entity descriptor {} from entity group {}", entitiesDescriptor .getName(), descriptor.getName());
List<EntitiesDescriptor> entitiesDescriptors = descriptor.getEntitiesDescriptors(); if (entitiesDescriptors != null && !entitiesDescriptors.isEmpty()) { for (EntitiesDescriptor entitiesDescriptor : descriptor.getEntitiesDescriptors()) { entityDescriptor = getEntityDescriptorById(entityID, entitiesDescriptor); if (entityDescriptor != null) {
Iterator<EntitiesDescriptor> entitiesIter = entitiesDescriptor.getEntitiesDescriptors().iterator(); while(entitiesIter.hasNext()) { EntitiesDescriptor entitiesChild = entitiesIter.next(); entitiesDescriptor.getEntitiesDescriptors().removeAll(toRemove);
/** * Gets the entities descriptor with the given name. * * @param name name of the entities descriptor * @param rootDescriptor the root descriptor to search in * * @return the EntitiesDescriptor with the given name */ protected EntitiesDescriptor getEntitiesDescriptorByName(String name, EntitiesDescriptor rootDescriptor) { EntitiesDescriptor descriptor = null; if (DatatypeHelper.safeEquals(name, rootDescriptor.getName()) && isValid(rootDescriptor)) { descriptor = rootDescriptor; } else { List<EntitiesDescriptor> childDescriptors = rootDescriptor.getEntitiesDescriptors(); if (childDescriptors == null || childDescriptors.isEmpty()) { return null; } for (EntitiesDescriptor childDescriptor : childDescriptors) { childDescriptor = getEntitiesDescriptorByName(name, childDescriptor); if (childDescriptor != null) { descriptor = childDescriptor; } } } return descriptor; }