/** * Get the list of audiences from the <Audience> sub-elements. * * @param element the element under discussion * @return the list of elements (which are subject to property replacement) */ protected List<String> getAudiences(final Element element) { final List<Element> audienceElems = ElementSupport.getChildElementsByTagNameNS(element, RelyingPartySAMLNamespaceHandler.NAMESPACE, "Audience"); return SpringSupport.getElementTextContentAsManagedList(audienceElems); }
/** * Get the list of proxy audiences from the <ProxyAudience> sub-elements. * * @param element the element under discussion * @return the list of elements (which are subject to property replacement) */ protected List<String> getProxyAudiences(final Element element) { final List<Element> audienceElems = ElementSupport.getChildElementsByTagNameNS(element, RelyingPartySAMLNamespaceHandler.NAMESPACE, "ProxyAudience"); return SpringSupport.getElementTextContentAsManagedList(audienceElems); }
/** * Processes an EntityDescriptor by removing any Organization that is within it. * * @param entityDescriptor entity descriptor being processed */ protected void processEntityDescriptor(@Nonnull final Element entityDescriptor) { final String entityId = entityDescriptor.getAttributeNS(null, "entityID"); final List<Element> organizations = ElementSupport.getChildElementsByTagNameNS(entityDescriptor, SAMLMetadataSupport.MD_NS, "Organization"); if (!organizations.isEmpty()) { log.debug("{} pipeline stage filtering Organization from EntityDescriptor {}", getId(), entityId); for (Element organization : organizations) { entityDescriptor.removeChild(organization); } } } }
/** {@inheritDoc} */ @Override protected void doParse(@Nonnull final Element configElement, @Nonnull final ParserContext parserContext, @Nonnull final BeanDefinitionBuilder builder) { super.doParse(configElement, parserContext, builder); final String myId = builder.getBeanDefinition().getAttribute("qualifiedId").toString(); builder.addPropertyValue("id", myId); final List<Element> ruleElementsBasic = ElementSupport.getChildElementsByTagNameNS(configElement, AttributeFilterBasicNamespaceHandler.NAMESPACE, "Rule"); final List<Element> ruleElementsAfp = ElementSupport.getChildElementsByTagNameNS(configElement, BaseFilterParser.NAMESPACE, "Rule"); final List<Element> ruleElements = new ArrayList<>(ruleElementsAfp.size() + ruleElementsBasic.size()); ruleElements.addAll(ruleElementsBasic); ruleElements.addAll(ruleElementsAfp); builder.addPropertyValue("subsidiaries", SpringSupport.parseCustomElements(ruleElements, parserContext)); } }
/** * Parse Group elements into a builder for an {@link EntityGroupNamePredicate}. * * @param element root element to parse under * * @return builder for the predicate, or null if none needed */ @Nullable public BeanDefinitionBuilder parseGroupPredicate(@Nonnull final Element element) { final List<Element> groupList = ElementSupport.getChildElementsByTagNameNS(element, AbstractMetadataProviderParser.METADATA_NAMESPACE, "Group"); if (!groupList.isEmpty()) { final ManagedList<String> managedGroupList = SpringSupport.getElementTextContentAsManagedList(groupList); final BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(EntityGroupNamePredicate.class); builder.addConstructorArgValue(managedGroupList); return builder; } return null; }
/** * Gets the signature element from the document. The signature must be a child of the document root. * * @param docElement document element from which to pull the signature * * @return the signature element, or null * @throws ValidationException if more than one signature element is present */ @Nullable public Element getSignatureElement(@Nonnull final Element docElement) throws ValidationException { final List<Element> sigElements = ElementSupport.getChildElementsByTagNameNS(docElement, XMLSignatureSigningStage.XML_SIG_NS_URI, "Signature"); if (sigElements.isEmpty()) { return null; } if (sigElements.size() > 1) { throw new ValidationException("XML document contained more than one signature, unable to process"); } return sigElements.get(0); }
/** * Parse Entity elements into a builder for an {@link EntityIdPredicate}. * * @param element root element to parse under * * @return builder for the predicate, or null if none needed */ @Nullable public BeanDefinitionBuilder parseEntityPredicate(@Nonnull final Element element) { final List<Element> entityList = ElementSupport.getChildElementsByTagNameNS(element, AbstractMetadataProviderParser.METADATA_NAMESPACE, "Entity"); if (!entityList.isEmpty()) { final ManagedList<String> managedEntityList = SpringSupport.getElementTextContentAsManagedList(entityList); final BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(EntityIdPredicate.class); builder.addConstructorArgValue(managedEntityList); return builder; } return null; }
/** {@inheritDoc} */ @Override protected void doParse(@Nonnull final Element configElement, @Nonnull final ParserContext parserContext, @Nonnull final BeanDefinitionBuilder builder) { super.doParse(configElement, parserContext, builder); final String myId = builder.getBeanDefinition().getAttribute("qualifiedId").toString(); builder.addPropertyValue("id", myId); final List<Element> ruleElementsBasic = ElementSupport.getChildElementsByTagNameNS(configElement, AttributeFilterBasicNamespaceHandler.NAMESPACE, "Rule"); final List<Element> ruleElementsAfp = ElementSupport.getChildElementsByTagNameNS(configElement, BaseFilterParser.NAMESPACE, "Rule"); final List<Element> ruleElements = new ArrayList<>(ruleElementsBasic.size() + ruleElementsAfp.size()); ruleElements.addAll(ruleElementsBasic); ruleElements.addAll(ruleElementsAfp); builder.addPropertyValue("subsidiaries", SpringSupport.parseCustomElements(ruleElements, parserContext)); } }
/** * Gets the signature element from the document. The signature must be a child of the document root. * * @param xmlDoc document from which to pull the signature * * @return the signature element, or null */ protected static Element getSignatureElement(final Document xmlDoc) { final List<Element> sigElements = ElementSupport .getChildElementsByTagNameNS(xmlDoc.getDocumentElement(), Signature.DEFAULT_ELEMENT_NAME.getNamespaceURI(), Signature.DEFAULT_ELEMENT_NAME.getLocalPart()); if (sigElements.isEmpty()) { return null; } if (sigElements.size() > 1) { log.error("XML document contained more than one signature, unable to process"); throw new Terminator(ReturnCode.RC_SIG); } return sigElements.get(0); }
/** * Processes an EntityDescriptor by removing any ContactPerson that is within it. * * @param entityDescriptor entity descriptor being processed */ protected void processEntityDescriptor(@Nonnull final Element entityDescriptor) { final String entityId = entityDescriptor.getAttributeNS(null, "entityID"); final List<Element> contactPersons = ElementSupport .getChildElementsByTagNameNS(entityDescriptor, SAMLMetadataSupport.MD_NS, "ContactPerson"); if (!contactPersons.isEmpty()) { log.debug("{} pipeline stage filtering ContactPerson from EntityDescriptor {}", getId(), entityId); for (Element contactPerson : contactPersons) { if (!isRetainedContactPersonType(contactPerson)) { entityDescriptor.removeChild(contactPerson); } } } }
/** {@inheritDoc} */ @Override protected void doNativeParse(final Element element, final ParserContext parserContext, final BeanDefinitionBuilder builder) { super.doNativeParse(element, parserContext, builder); List<Element> metadataContent = ElementSupport.getChildElementsByTagNameNS(element, SAMLConstants.SAML20MD_NS, "EntitiesDescriptor"); if (metadataContent.size() < 1) { metadataContent = ElementSupport.getChildElementsByTagNameNS(element, SAMLConstants.SAML20MD_NS, "EntityDescriptor"); } builder.addConstructorArgValue(metadataContent.get(0)); if (element.hasAttributeNS(null, "indexesRef")) { builder.addPropertyReference("indexes", StringSupport.trimOrNull(element.getAttributeNS(null, "indexesRef"))); } if (element.hasAttributeNS(null, "resolveViaPredicatesOnly")) { builder.addPropertyValue("resolveViaPredicatesOnly", StringSupport.trimOrNull(element.getAttributeNS(null, "resolveViaPredicatesOnly"))); } }
ElementSupport.getChildElementsByTagNameNS(configElement, AttributeFilterBasicNamespaceHandler.NAMESPACE, "Rule"); final List<Element> ruleReferenceBasic = ElementSupport.getChildElementsByTagNameNS(configElement, AttributeFilterBasicNamespaceHandler.NAMESPACE, "RuleReference"); ElementSupport.getChildElementsByTagNameNS(configElement, BaseFilterParser.NAMESPACE, "Rule");
ElementSupport.getChildElementsByTagNameNS(child, DataConnectorNamespaceHandler.NAMESPACE, "Value"); values.addAll(ElementSupport.getChildElementsByTagNameNS(child, AttributeResolverNamespaceHandler.NAMESPACE, "Value")); final ManagedList<BeanDefinition> inValues = new ManagedList<>(values.size());
/** * Parse ConditionScript elements into a builder, wrapped in an OR as necessary. * * @param element root element to parse under * * @return builder for the predicate, or null if none needed */ @Nullable public BeanDefinitionBuilder parseScripts(@Nonnull final Element element) { final List<Element> scriptList = ElementSupport.getChildElementsByTagNameNS(element, AbstractMetadataProviderParser.METADATA_NAMESPACE, "ConditionScript"); if (scriptList.isEmpty()) { return null; } else if (scriptList.size() == 1) { return ScriptTypeBeanParser.parseScriptType(ScriptedPredicate.class, scriptList.get(0)); } else { final BeanDefinitionBuilder orBuilder = BeanDefinitionBuilder.rootBeanDefinition(Predicates.class, "or"); final ManagedList<BeanDefinition> managedList = new ManagedList<>(scriptList.size()); for (final Element e : scriptList) { managedList.add(ScriptTypeBeanParser.parseScriptType(ScriptedPredicate.class, e).getBeanDefinition()); } orBuilder.addConstructorArgValue(managedList); return orBuilder; } }
ElementSupport.getChildElementsByTagNameNS(element, AbstractMetadataProviderParser.METADATA_NAMESPACE, "Tag"); if (!tagList.isEmpty()) { tagBuilder.addConstructorArgValue(StringSupport.trimOrNull(tag.getAttributeNS(null, "nameFormat"))); final List<Element> valueList = ElementSupport.getChildElementsByTagNameNS(tag, AbstractMetadataProviderParser.METADATA_NAMESPACE, "Value"); if (!valueList.isEmpty()) {
/** {@inheritDoc} */ @Override protected void doParse(final Element element, final ParserContext parserContext, final BeanDefinitionBuilder builder) { final List<QName> retainedRoles = new ArrayList<>(); final List<Element> retainedRoleElems = ElementSupport.getChildElementsByTagNameNS(element, AbstractMetadataProviderParser.METADATA_NAMESPACE, "RetainedRole"); if (retainedRoleElems != null) { for (final Element retainedRoleElem : retainedRoleElems) { retainedRoles.add(ElementSupport.getElementContentAsQName(retainedRoleElem)); } } builder.addConstructorArgValue(retainedRoles); if (element.hasAttributeNS(null, "removeRolelessEntityDescriptors")) { builder.addPropertyValue("removeRolelessEntityDescriptors", StringSupport.trimOrNull(element.getAttributeNS(null, "removeRolelessEntityDescriptors"))); } if (element.hasAttributeNS(null, "removeEmptyEntitiesDescriptors")) { builder.addPropertyValue("removeEmptyEntitiesDescriptors", StringSupport.trimOrNull(element.getAttributeNS(null, "removeEmptyEntitiesDescriptors"))); } }
BeanDefinitionBuilder.genericBeanDefinition(StringResultMappingStrategy.class); final List<Element> columns = ElementSupport.getChildElementsByTagNameNS(configElement, DataConnectorNamespaceHandler.NAMESPACE, "Column"); columns.addAll(ElementSupport.getChildElementsByTagNameNS(configElement, AttributeResolverNamespaceHandler.NAMESPACE, "Column")); if (!columns.isEmpty()) {
/** * Creates a container managed data source bean definition. * * @param containerManagedElement to parse * * @return data source bean definition */ @Nonnull protected BeanDefinition createContainerManagedDataSource(@Nonnull final Element containerManagedElement) { Constraint.isNotNull(containerManagedElement, "ContainerManagedConnection element cannot be null"); final String resourceName = AttributeSupport.getAttributeValue(containerManagedElement, new QName("resourceName")); final ManagedMap<String, String> props = new ManagedMap<>(); final List<Element> elements = ElementSupport.getChildElementsByTagNameNS(containerManagedElement, DataConnectorNamespaceHandler.NAMESPACE, "JNDIConnectionProperty"); elements.addAll(ElementSupport.getChildElementsByTagNameNS(containerManagedElement, AttributeResolverNamespaceHandler.NAMESPACE, "JNDIConnectionProperty")); if (!elements.isEmpty()) { DeprecationSupport.warnOnce(ObjectType.ELEMENT, "<JNDIConnectionProperty>", null, null); for (final Element e : elements) { props.put(AttributeSupport.getAttributeValue(e, new QName("name")), AttributeSupport.getAttributeValue(e, new QName("value"))); } } final BeanDefinitionBuilder dataSource = BeanDefinitionBuilder.rootBeanDefinition(ManagedConnectionParser.class, "buildDataSource"); dataSource.addConstructorArgValue(props); dataSource.addConstructorArgValue(resourceName); return dataSource.getBeanDefinition(); }
BeanDefinitionBuilder.genericBeanDefinition(StringAttributeValueMappingStrategy.class); final List<Element> columns = ElementSupport.getChildElementsByTagNameNS(configElement, DataConnectorNamespaceHandler.NAMESPACE, "Column"); columns.addAll(ElementSupport.getChildElementsByTagNameNS(configElement, AttributeResolverNamespaceHandler.NAMESPACE, "Column"));