/** Get the Pool configuration <ConnectionPool> element contents, warning if there is more than one. * @return the <ConnectionPool> or null if there isn't one. */ @Nullable Element getConnectionPoolElement() { final List<Element> poolConfigElements = ElementSupport.getChildElements(configElement, new QName(DataConnectorNamespaceHandler.NAMESPACE, "ConnectionPool")); poolConfigElements.addAll(ElementSupport.getChildElements(configElement, new QName(AttributeResolverNamespaceHandler.NAMESPACE, "ConnectionPool"))); if (poolConfigElements.isEmpty()) { return null; } if (poolConfigElements.size() > 1) { log.warn("{} Only one <ConnectionPool> should be specified; only the first has been consulted.", getLogPrefix()); } return poolConfigElements.get(0); }
/** * Get the definition for the {@link org.opensaml.security.x509.PKIXValidationInformationResolver}. This is * constructed from the Trusted names and the Validation Info. * * @param element what to parse * @param parserContext the context to parse inside * @return the definition */ protected BeanDefinition getPKIXValidationInformationResolver(@Nonnull final Element element, @Nonnull final ParserContext parserContext) { final List<Element> validationInfoElements = ElementSupport.getChildElements(element, VALIDATION_INFO); final List<Element> trustedNameElements = ElementSupport.getChildElements(element, TRUSTED_NAMES); final BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(StaticPKIXValidationInformationResolver.class); builder.addConstructorArgValue(SpringSupport.parseCustomElements(validationInfoElements, parserContext)); builder.addConstructorArgValue(SpringSupport.getElementTextContentAsManagedList(trustedNameElements)); return builder.getBeanDefinition(); }
/** {@inheritDoc} */ @Override protected void doParse(final Element element, final BeanDefinitionBuilder builder) { super.doParse(element, builder); parsePrivateKey(ElementSupport.getChildElements(element, PRIVATE_KEY_ELEMENT_NAME), builder); parseCertificates(ElementSupport.getChildElements(element, CERTIFICATE_ELEMENT_NAME), builder); parseCRLs(ElementSupport.getChildElements(element, CRL_ELEMENT_NAME), builder); }
/** {@inheritDoc} */ @Override protected void doParse(final Element element, final ParserContext parserContext, final BeanDefinitionBuilder builder) { super.doParse(element, parserContext, builder); final List<Element> credentials = ElementSupport.getChildElements(element, AbstractCredentialParser.CREDENTIAL_ELEMENT_NAME); final BeanDefinitionBuilder resolver = BeanDefinitionBuilder.genericBeanDefinition(StaticCredentialResolver.class); resolver.addConstructorArgValue(SpringSupport.parseCustomElements(credentials, parserContext)); builder.addConstructorArgValue(resolver.getBeanDefinition()); } }
/** * Get the definition for the {@link org.opensaml.security.x509.PKIXTrustEvaluator}. This is purely a * {@link CertPathPKIXTrustEvaluator} constructed with whatever ValidationOptions we provide. * * @param element what to parse * @param parserContext the context to parse inside * @return the definition */ protected BeanDefinition getPKIXTrustEvaluator(@Nonnull final Element element, @Nonnull final ParserContext parserContext) { final BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(CertPathPKIXTrustEvaluator.class); final List<Element> validationOptionsElements = ElementSupport.getChildElements(element, PKIXValidationOptionsParser.ELEMENT_NAME); if (null != validationOptionsElements && !validationOptionsElements.isEmpty()) { builder.addConstructorArgValue(SpringSupport.parseCustomElements(validationOptionsElements, parserContext)); } return builder.getBeanDefinition(); }
/** * Gets a list of all instances of an extension element for a given descriptor. * * An empty list is returned if the descriptor has no extensions, or if it * has no extensions of the requested type. * * @param descriptor the descriptor, never <code>null</code> * @param extensionName name of the extension element, never <code>null</code> * @return a possibly empty list of all extension instances */ @Nonnull public static List<Element> getDescriptorExtensionList(@Nonnull final Element descriptor, @Nonnull final QName extensionName) { Constraint.isNotNull(descriptor, "descriptor may not be null"); Constraint.isNotNull(extensionName, "extension name may not be null"); // Locate the Extensions element final List<Element> extensions = ElementSupport.getChildElements(descriptor, EXTENSIONS_NAME); if (extensions.isEmpty()) { return Collections.EMPTY_LIST; } return ElementSupport.getChildElements(extensions.get(0), extensionName); }
/** {@inheritDoc} */ @Override protected void doNativeParse(final Element element, final ParserContext parserContext, final BeanDefinitionBuilder builder) { super.doNativeParse(element, parserContext, builder); final List<Element> childProviders = ElementSupport.getChildElements(element, MetadataNamespaceHandler.METADATA_ELEMENT_NAME); builder.addPropertyValue("resolvers", SpringSupport.parseCustomElements(childProviders, parserContext)); } }
/** {@inheritDoc} */ @Override protected void doParse(final Element element, final ParserContext parserContext, final BeanDefinitionBuilder builder) { super.doParse(element, parserContext, builder); builder.addPropertyValue("configDescription", parserContext.getReaderContext().getResource().getDescription()); parsePrivateKey(ElementSupport.getChildElements(element, PRIVATE_KEY_ELEMENT_NAME), parserContext, builder); parsePublicKey(ElementSupport.getChildElements(element, PUBLIC_KEY_ELEMENT_NAME), parserContext, builder); parseSecretKey(ElementSupport.getChildElements(element, SECRET_KEY_ELEMENT_NAME), parserContext, builder); }
/** {@inheritDoc} */ @Override protected void doParse(final Element element, final ParserContext parserContext, final BeanDefinitionBuilder builder) { super.doParse(element, parserContext, builder); final List<Element> childEngines = ElementSupport.getChildElements(element, AbstractMetadataProviderParser.TRUST_ENGINE_ELEMENT_NAME); final List<Element> childEngineRefs = ElementSupport.getChildElements(element, SecurityNamespaceHandler.TRUST_ENGINE_REF); final List<BeanMetadataElement> allChildren = new ManagedList<>(childEngines.size()+ childEngineRefs.size()); allChildren.addAll(SpringSupport.parseCustomElements(childEngines, parserContext)); for (final Element ref:childEngineRefs) { final String reference = StringSupport.trimOrNull(ref.getAttributeNS(null, "ref")); if (null != reference) { allChildren.add(new RuntimeBeanReference(StringSupport.trim(reference))); } } builder.addConstructorArgValue(allChildren); } }
/** {@inheritDoc} */ @Override protected void doParse(final Element element, final ParserContext parserContext, final BeanDefinitionBuilder builder) { super.doParse(element, parserContext, builder); final List<Element> credentials = ElementSupport.getChildElements(element, AbstractCredentialParser.CREDENTIAL_ELEMENT_NAME); final BeanDefinitionBuilder resolver = BeanDefinitionBuilder.genericBeanDefinition(StaticCredentialResolver.class); resolver.addConstructorArgValue(SpringSupport.parseCustomElements(credentials, parserContext)); builder.addConstructorArgValue(resolver.getBeanDefinition()); builder.addConstructorArgValue(DefaultSecurityConfigurationBootstrap .buildBasicInlineKeyInfoCredentialResolver()); } }
/** {@inheritDoc} * * We call the parent method for the custom schema (which is expected to not do anything special * with the <beans> statement) and then we call again to handle the beans statements which * we have explicitly pulled out. * */ @Override public void registerBeanDefinitions(final Document doc, final XmlReaderContext readerContext) throws BeanDefinitionStoreException { super.registerBeanDefinitions(doc, readerContext); final List<Element> beans = ElementSupport.getChildElements(doc.getDocumentElement(), new QName(BeanDefinitionParserDelegate.BEANS_NAMESPACE_URI, NESTED_BEANS_ELEMENT)); if (beans.isEmpty()) { return; } for (final Element elem : beans) { doRegisterBeanDefinitions(elem); } } }
/** {@inheritDoc} */ @Override protected void doParse(final Element element, final ParserContext parserContext, final BeanDefinitionBuilder builder) { DeprecationSupport.warn(ObjectType.XSITYPE, TYPE_NAME.toString(), parserContext.getReaderContext().getResource().getDescription(), null); final List<Element> children = ElementSupport.getChildElements(element, AbstractMetadataProviderParser.METADATA_FILTER_ELEMENT_NAME); if (null != children && !children.isEmpty()) { builder.addPropertyValue("filters", SpringSupport.parseCustomElements(children, parserContext)); } }
/** {@inheritDoc} */ @Override protected void doParse(final Element element, final ParserContext parserContext, final BeanDefinitionBuilder builder) { final List<Element> schemaNameElements = ElementSupport.getChildElements(element, EXTENSION_SCHEMA_NAME); if (element.hasAttributeNS(null, "schemaBuilderRef")) { builder.addConstructorArgReference(StringSupport.trimOrNull(element .getAttributeNS(null, "schemaBuilderRef"))); } else { builder.addConstructorArgReference("shibboleth.SchemaBuilder"); } if (null != schemaNameElements && !schemaNameElements.isEmpty()) { DeprecationSupport.warn(ObjectType.ELEMENT, "ExtensionSchema", null, null); builder.addConstructorArgValue(SpringSupport.getElementTextContentAsManagedList(schemaNameElements)); } }
/** {@inheritDoc} */ @Override protected void doParse(final Element element, final ParserContext parserContext, final BeanDefinitionBuilder builder) { builder.setInitMethodName("initialize"); builder.setDestroyMethodName("destroy"); builder.setLazyInit(true); final List<Element> children = ElementSupport.getChildElements(element, MetadataNamespaceHandler.METADATA_NODE_PROC_ELEMENT_NAME); if (null != children && !children.isEmpty()) { builder.addPropertyValue("nodeProcessors", SpringSupport.parseCustomElements(children, parserContext)); } }
/** {@inheritDoc} */ @Override protected void doParse(@Nonnull final Element config, @Nonnull final ParserContext parserContext, @Nonnull final BeanDefinitionBuilder builder) { DeprecationSupport.warn(ObjectType.ELEMENT, "<PrincipalConnector>", parserContext.getReaderContext().getResource().getDescription(), "c14n"); builder.setInitMethodName("initialize"); builder.setDestroyMethodName("destroy"); super.doParse(config, parserContext, builder); // First up, add the per type decoders addSAMLDecoders(config, parserContext, builder); final String format = StringSupport.trimOrNull(config.getAttributeNS(null, "nameIDFormat")); builder.addPropertyValue("format", format); final String id = StringSupport.trimOrNull(config.getAttributeNS(null, "id")); builder.addPropertyValue("id", id); final List<Element> children = ElementSupport.getChildElements(config, RELYING_PARTY); final List<String> relyingParties = new ManagedList<>(children.size()); for (final Element child : children) { relyingParties.add(child.getTextContent()); } builder.addPropertyValue("relyingParties", relyingParties); }
/** * Iterates over all child EntitiesDescriptor, passing each to {@link #processEntitiesDescriptor(Element)}, and * EntityDescriptor, passing each to {@link #processEntityDescriptor(Element)}. * * @param entitiesDescriptor EntitiesDescriptor being processed */ protected void processEntitiesDescriptor(@Nonnull final Element entitiesDescriptor) { final List<Element> children = ElementSupport.getChildElements(entitiesDescriptor); for (Element child : children) { if (SAMLMetadataSupport.isEntitiesDescriptor(child)) { processEntitiesDescriptor(child); } else if (SAMLMetadataSupport.isEntityDescriptor(child)) { processEntityDescriptor(child); } } }
/** * Iterates over all child EntitiesDescriptor, passing each to {@link #processEntitiesDescriptor(Element)}, and * EntityDescriptor, passing each to {@link #processEntityDescriptor(Element)}. * * @param entitiesDescriptor EntitiesDescriptor being processed */ protected void processEntitiesDescriptor(@Nonnull final Element entitiesDescriptor) { final List<Element> children = ElementSupport.getChildElements(entitiesDescriptor); for (Element child : children) { if (SAMLMetadataSupport.isEntitiesDescriptor(child)) { processEntitiesDescriptor(child); } else if (SAMLMetadataSupport.isEntityDescriptor(child)) { processEntityDescriptor(child); } } }
/** * Processes an EntitiesDescriptor element. All child EntityDescriptor elements are processed and * EntitiesDescriptors are run back through this method. * * @param itemCollection collection to which EntityDescriptor metadata elements are added * @param entitiesDescriptor the EntitiesDescriptor to break down */ protected void processEntitiesDescriptor(@Nonnull @NonnullElements final Collection<Item<Element>> itemCollection, @Nonnull final Element entitiesDescriptor) { final List<Element> children = ElementSupport.getChildElements(entitiesDescriptor); for (Element child : children) { if (SAMLMetadataSupport.isEntitiesDescriptor(child)) { processEntitiesDescriptor(itemCollection, child); } if (SAMLMetadataSupport.isEntityDescriptor(child)) { processEntityDescriptor(itemCollection, child); } } }
/** {@inheritDoc} */ @Override protected void doParse(final Element element, final ParserContext parserContext, final BeanDefinitionBuilder builder) { super.doParse(element, parserContext, builder); builder.setLazyInit(true); parseAttributes(element, builder); parseKeyNames(ElementSupport.getChildElements(element, KEY_NAME_ELEMENT_NAME), builder); }
/** * Check that there are no filters on the resource. * * @param resourceElement the element to look at * @param readerContext the reader context * @throws BeanDefinitionParsingException if we encounter a filter */ public static void noFilters(final Element resourceElement, final XmlReaderContext readerContext) { final List<Element> filters = ElementSupport.getChildElements(resourceElement, FILTER_NAME); if (null == filters || filters.isEmpty()) { return; } LOG.error("{}: Resource filters are not supported", readerContext.getResource().getDescription()); throw new BeanDefinitionParsingException(new Problem("Resource filters are not supported", new Location( readerContext.getResource()))); }