/** * Creates a bean definition for the credentials object. This methods creates a bean definition instead of the direct * implementation to allow property place holder to change any place holder used for the access or secret key. * * @param credentialsProviderElement * - The element that contains the credentials attributes ACCESS_KEY_ATTRIBUTE_NAME and SECRET_KEY_ATTRIBUTE_NAME * @param parserContext * - Used to report any errors if there is no ACCESS_KEY_ATTRIBUTE_NAME or SECRET_KEY_ATTRIBUTE_NAME available with * a * valid value * @return - the bean definition with an {@link com.amazonaws.auth.BasicAWSCredentials} class */ private static BeanDefinition getCredentials(Element credentialsProviderElement, ParserContext parserContext) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition("com.amazonaws.auth.BasicAWSCredentials"); builder.addConstructorArgValue(getAttributeValue(ACCESS_KEY_ATTRIBUTE_NAME, credentialsProviderElement, parserContext)); builder.addConstructorArgValue(getAttributeValue(SECRET_KEY_ATTRIBUTE_NAME, credentialsProviderElement, parserContext)); return builder.getBeanDefinition(); }
@Override protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { if (parserContext.getRegistry().containsBeanDefinition(CredentialsProviderFactoryBean.CREDENTIALS_PROVIDER_BEAN_NAME)) { parserContext.getReaderContext().error("Multiple <context-credentials/> detected. The <context-credentials/> is only allowed once per application context", element); } List<Element> elements = DomUtils.getChildElements(element); ManagedList<BeanDefinition> credentialsProviders = new ManagedList<>(elements.size()); for (Element credentialsProviderElement : elements) { if ("simple-credentials".equals(credentialsProviderElement.getLocalName())) { credentialsProviders.add(getCredentialsProvider(STATIC_CREDENTIALS_PROVIDER_BEAN_CLASS_NAME, getCredentials(credentialsProviderElement, parserContext))); } if ("instance-profile-credentials".equals(credentialsProviderElement.getLocalName())) { credentialsProviders.add(getCredentialsProvider(INSTANCE_CREDENTIALS_PROVIDER_BEAN_CLASS_NAME)); } if ("profile-credentials".equals(credentialsProviderElement.getLocalName())) { credentialsProviders.add(getCredentialsProvider(PROFILE_CREDENTIALS_PROVIDER_BEAN_CLASS_NAME, getProfileConfiguration(credentialsProviderElement).toArray())); } } builder.addConstructorArgValue(credentialsProviders); replaceDefaultCredentialsProvider(parserContext.getRegistry(), CredentialsProviderFactoryBean.CREDENTIALS_PROVIDER_BEAN_NAME); }
@Override public void init() { registerBeanDefinitionParser("context-credentials", new ContextCredentialsBeanDefinitionParser()); registerBeanDefinitionParser("context-resource-loader", new ContextResourceLoaderBeanDefinitionParser()); registerBeanDefinitionParser("context-region", new ContextRegionBeanDefinitionParser()); registerBeanDefinitionParser("context-instance-data", new ContextInstanceDataPropertySourceBeanDefinitionParser()); registerBeanDefinitionParser("stack-configuration", new StackConfigurationBeanDefinitionParser()); } }
@Override public void init() { registerBeanDefinitionParser("context-credentials", new ContextCredentialsBeanDefinitionParser()); registerBeanDefinitionParser("context-resource-loader", new ContextResourceLoaderBeanDefinitionParser()); registerBeanDefinitionParser("context-region", new ContextRegionBeanDefinitionParser()); registerBeanDefinitionParser("context-instance-data", new ContextInstanceDataPropertySourceBeanDefinitionParser()); registerBeanDefinitionParser("stack-configuration", new StackConfigurationBeanDefinitionParser()); } }
@Override protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { if (parserContext.getRegistry().containsBeanDefinition(CredentialsProviderFactoryBean.CREDENTIALS_PROVIDER_BEAN_NAME)) { parserContext.getReaderContext().error("Multiple <context-credentials/> detected. The <context-credentials/> is only allowed once per application context", element); } List<Element> elements = DomUtils.getChildElements(element); ManagedList<BeanDefinition> credentialsProviders = new ManagedList<>(elements.size()); for (Element credentialsProviderElement : elements) { if ("simple-credentials".equals(credentialsProviderElement.getLocalName())) { credentialsProviders.add(getCredentialsProvider(STATIC_CREDENTIALS_PROVIDER_BEAN_CLASS_NAME, getCredentials(credentialsProviderElement, parserContext))); } if ("instance-profile-credentials".equals(credentialsProviderElement.getLocalName())) { credentialsProviders.add(getCredentialsProvider(INSTANCE_CREDENTIALS_PROVIDER_BEAN_CLASS_NAME)); } if ("profile-credentials".equals(credentialsProviderElement.getLocalName())) { credentialsProviders.add(getCredentialsProvider(PROFILE_CREDENTIALS_PROVIDER_BEAN_CLASS_NAME, getProfileConfiguration(credentialsProviderElement).toArray())); } } builder.addConstructorArgValue(credentialsProviders); replaceDefaultCredentialsProvider(parserContext.getRegistry(), CredentialsProviderFactoryBean.CREDENTIALS_PROVIDER_BEAN_NAME); }
/** * Creates a bean definition for the credentials object. This methods creates a bean definition instead of the direct * implementation to allow property place holder to change any place holder used for the access or secret key. * * @param credentialsProviderElement * - The element that contains the credentials attributes ACCESS_KEY_ATTRIBUTE_NAME and SECRET_KEY_ATTRIBUTE_NAME * @param parserContext * - Used to report any errors if there is no ACCESS_KEY_ATTRIBUTE_NAME or SECRET_KEY_ATTRIBUTE_NAME available with * a * valid value * @return - the bean definition with an {@link com.amazonaws.auth.BasicAWSCredentials} class */ private static BeanDefinition getCredentials(Element credentialsProviderElement, ParserContext parserContext) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition("com.amazonaws.auth.BasicAWSCredentials"); builder.addConstructorArgValue(getAttributeValue(ACCESS_KEY_ATTRIBUTE_NAME, credentialsProviderElement, parserContext)); builder.addConstructorArgValue(getAttributeValue(SECRET_KEY_ATTRIBUTE_NAME, credentialsProviderElement, parserContext)); return builder.getBeanDefinition(); }