@Override protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { if (parserContext.getRegistry().containsBeanDefinition(CONTEXT_REGION_PROVIDER_BEAN_NAME)) { parserContext.getReaderContext().error("Multiple <context-region/> elements detected. The <context-region/> element is only allowed once per application context", element); } if (isAutoDetect(element) && (StringUtils.hasText(element.getAttribute("region")) || StringUtils.hasText(element.getAttribute("region-provider")))) { parserContext.getReaderContext().error("The attribute 'auto-detect' can only be enabled without a region or region-provider specified", element); return null; } if (!isAutoDetect(element) && !StringUtils.hasText(element.getAttribute("region")) && !StringUtils.hasText(element.getAttribute("region-provider"))) { parserContext.getReaderContext().error("Either auto-detect must be enabled, or a region or region-provider must be specified", element); return null; } //Replace the default region provider with this one replaceDefaultRegionProvider(parserContext.getRegistry(), CONTEXT_REGION_PROVIDER_BEAN_NAME); if (StringUtils.hasText(element.getAttribute("region-provider"))) { parserContext.getRegistry().registerAlias(element.getAttribute("region-provider"), CONTEXT_REGION_PROVIDER_BEAN_NAME); return null; } else if (StringUtils.hasText(element.getAttribute("region"))) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition("org.springframework.cloud.aws.core.region.StaticRegionProvider"); builder.addConstructorArgValue(element.getAttribute("region")); return builder.getBeanDefinition(); } else if (isAutoDetect(element)) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition("org.springframework.cloud.aws.core.region.Ec2MetadataRegionProvider"); return builder.getBeanDefinition(); } return null; }
@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 AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { if (parserContext.getRegistry().containsBeanDefinition(CONTEXT_REGION_PROVIDER_BEAN_NAME)) { parserContext.getReaderContext().error("Multiple <context-region/> elements detected. The <context-region/> element is only allowed once per application context", element); } if (isAutoDetect(element) && (StringUtils.hasText(element.getAttribute("region")) || StringUtils.hasText(element.getAttribute("region-provider")))) { parserContext.getReaderContext().error("The attribute 'auto-detect' can only be enabled without a region or region-provider specified", element); return null; } if (!isAutoDetect(element) && !StringUtils.hasText(element.getAttribute("region")) && !StringUtils.hasText(element.getAttribute("region-provider"))) { parserContext.getReaderContext().error("Either auto-detect must be enabled, or a region or region-provider must be specified", element); return null; } //Replace the default region provider with this one replaceDefaultRegionProvider(parserContext.getRegistry(), CONTEXT_REGION_PROVIDER_BEAN_NAME); if (StringUtils.hasText(element.getAttribute("region-provider"))) { parserContext.getRegistry().registerAlias(element.getAttribute("region-provider"), CONTEXT_REGION_PROVIDER_BEAN_NAME); return null; } else if (StringUtils.hasText(element.getAttribute("region"))) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition("org.springframework.cloud.aws.core.region.StaticRegionProvider"); builder.addConstructorArgValue(element.getAttribute("region")); return builder.getBeanDefinition(); } else if (isAutoDetect(element)) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition("org.springframework.cloud.aws.core.region.Ec2MetadataRegionProvider"); return builder.getBeanDefinition(); } return null; }