INT-4139: Add CORS Config to Graph Annotation
JIRA: https://jira.spring.io/browse/INT-4139 Doc Polishing Polishing - Fix CORS Test and Revert XML - Use standard CORS configuration with XML.
This commit is contained in:
committed by
Artem Bilan
parent
8d70463c7a
commit
3c284871c3
@@ -58,4 +58,12 @@ public @interface EnableIntegrationGraphController {
|
||||
@AliasFor("value")
|
||||
String path() default HttpContextUtils.GRAPH_CONTROLLER_DEFAULT_PATH;
|
||||
|
||||
/**
|
||||
* Specify allowed origin URLs for cross-origin request handling.
|
||||
* Only allows GET operations.
|
||||
* @return the URLs.
|
||||
* @since 4.3.5
|
||||
*/
|
||||
String[] allowedOrigins() default {};
|
||||
|
||||
}
|
||||
|
||||
@@ -39,9 +39,14 @@ import org.springframework.integration.context.IntegrationContextUtils;
|
||||
import org.springframework.integration.http.management.IntegrationGraphController;
|
||||
import org.springframework.integration.http.support.HttpContextUtils;
|
||||
import org.springframework.integration.support.management.graph.IntegrationGraphServer;
|
||||
import org.springframework.web.servlet.config.annotation.CorsRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
|
||||
|
||||
/**
|
||||
* Registers the necessary beans for {@link EnableIntegrationGraphController}.
|
||||
*
|
||||
* @author Artem Bilan
|
||||
* @author Gary Russell
|
||||
* @since 4.3
|
||||
*/
|
||||
class IntegrationGraphControllerRegistrar implements ImportBeanDefinitionRegistrar {
|
||||
@@ -56,6 +61,16 @@ class IntegrationGraphControllerRegistrar implements ImportBeanDefinitionRegistr
|
||||
new RootBeanDefinition(IntegrationGraphServer.class));
|
||||
}
|
||||
|
||||
String[] allowedOrigins = (String[]) annotationAttributes.get("allowedOrigins");
|
||||
if (allowedOrigins != null && allowedOrigins.length > 0) {
|
||||
AbstractBeanDefinition controllerCorsConfigurer =
|
||||
BeanDefinitionBuilder.genericBeanDefinition(IntegrationGraphCorsConfigurer.class)
|
||||
.addConstructorArgValue(annotationAttributes.get("value"))
|
||||
.addConstructorArgValue(allowedOrigins)
|
||||
.getBeanDefinition();
|
||||
BeanDefinitionReaderUtils.registerWithGeneratedName(controllerCorsConfigurer, registry);
|
||||
}
|
||||
|
||||
if (!registry.containsBeanDefinition(HttpContextUtils.GRAPH_CONTROLLER_BEAN_NAME)) {
|
||||
AbstractBeanDefinition controllerPropertiesPopulator =
|
||||
BeanDefinitionBuilder.genericBeanDefinition(GraphControllerPropertiesPopulator.class)
|
||||
@@ -98,4 +113,22 @@ class IntegrationGraphControllerRegistrar implements ImportBeanDefinitionRegistr
|
||||
|
||||
}
|
||||
|
||||
private static final class IntegrationGraphCorsConfigurer extends WebMvcConfigurerAdapter {
|
||||
|
||||
private final String path;
|
||||
|
||||
private final String[] allowedOrigins;
|
||||
|
||||
private IntegrationGraphCorsConfigurer(String path, String[] allowedOrigins) {
|
||||
this.path = path;
|
||||
this.allowedOrigins = allowedOrigins;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCorsMappings(CorsRegistry registry) {
|
||||
registry.addMapping(this.path).allowedOrigins(this.allowedOrigins).allowedMethods("GET");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user