Fix new Sonar smells
This commit is contained in:
@@ -28,7 +28,6 @@ import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.beans.factory.BeanDefinitionStoreException;
|
||||
import org.springframework.beans.factory.FactoryBean;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.beans.factory.config.BeanDefinitionHolder;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.beans.factory.config.EmbeddedValueResolver;
|
||||
@@ -57,7 +56,7 @@ import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* The {@link ImportBeanDefinitionRegistrar} to parse {@link MessagingGateway} and its {@code service-interface}
|
||||
* and to register {@link BeanDefinition} {@link GatewayProxyFactoryBean}.
|
||||
* and to register bean definition for {@link GatewayProxyFactoryBean}.
|
||||
*
|
||||
* @author Artem Bilan
|
||||
* @author Gary Russell
|
||||
@@ -88,7 +87,7 @@ public class MessagingGatewayRegistrar implements ImportBeanDefinitionRegistrar
|
||||
}
|
||||
}
|
||||
|
||||
public BeanDefinitionHolder gatewayProxyBeanDefinition(Map<String, Object> gatewayAttributes,
|
||||
public BeanDefinitionHolder gatewayProxyBeanDefinition(Map<String, Object> gatewayAttributes, // NOSONAR - complexity
|
||||
BeanDefinitionRegistry registry) {
|
||||
|
||||
String defaultPayloadExpression = (String) gatewayAttributes.get("defaultPayloadExpression");
|
||||
@@ -116,7 +115,6 @@ public class MessagingGatewayRegistrar implements ImportBeanDefinitionRegistrar
|
||||
EmbeddedValueResolver embeddedValueResolver = new EmbeddedValueResolver(beanFactory);
|
||||
Class<?> serviceInterface = getServiceInterface((String) gatewayAttributes.get("serviceInterface"), beanFactory);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
AbstractBeanDefinition beanDefinition = new RootBeanDefinition(GatewayProxyFactoryBean.class,
|
||||
() -> {
|
||||
GatewayProxyFactoryBean proxyFactoryBean = new GatewayProxyFactoryBean(serviceInterface);
|
||||
@@ -152,6 +150,7 @@ public class MessagingGatewayRegistrar implements ImportBeanDefinitionRegistrar
|
||||
proxyFactoryBean.setGlobalMethodMetadata(globalMethodMetadata);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String, AbstractBeanDefinition> methodDefinitions =
|
||||
(Map<String, AbstractBeanDefinition>) gatewayAttributes.get("methods");
|
||||
|
||||
@@ -160,7 +159,8 @@ public class MessagingGatewayRegistrar implements ImportBeanDefinitionRegistrar
|
||||
methodDefinitions.entrySet()
|
||||
.stream()
|
||||
.collect(Collectors.toMap(Entry::getKey,
|
||||
entry -> (GatewayMethodMetadata) entry.getValue().getInstanceSupplier().get()));
|
||||
entry -> (GatewayMethodMetadata) entry.getValue()
|
||||
.getInstanceSupplier().get()));
|
||||
|
||||
proxyFactoryBean.setMethodMetadataMap(methodMetadataMap);
|
||||
}
|
||||
@@ -223,7 +223,9 @@ public class MessagingGatewayRegistrar implements ImportBeanDefinitionRegistrar
|
||||
|
||||
if (hasDefaultPayloadExpression) {
|
||||
String actualPayloadExpression = embeddedValueResolver.resolveStringValue(defaultPayloadExpression);
|
||||
gatewayMethodMetadata.setPayloadExpression(EXPRESSION_PARSER.parseExpression(actualPayloadExpression));
|
||||
if (actualPayloadExpression != null) {
|
||||
gatewayMethodMetadata.setPayloadExpression(EXPRESSION_PARSER.parseExpression(actualPayloadExpression));
|
||||
}
|
||||
}
|
||||
|
||||
if (hasDefaultHeaders) {
|
||||
@@ -238,12 +240,7 @@ public class MessagingGatewayRegistrar implements ImportBeanDefinitionRegistrar
|
||||
"is required on a gateway's header.");
|
||||
}
|
||||
|
||||
Expression expression =
|
||||
hasValue
|
||||
? new LiteralExpression(embeddedValueResolver.resolveStringValue(headerValue))
|
||||
: EXPRESSION_PARSER.parseExpression(
|
||||
embeddedValueResolver.resolveStringValue(headerExpression));
|
||||
|
||||
Expression expression = buildHeaderExpression(embeddedValueResolver, headerValue, headerExpression);
|
||||
headerExpressions.put((String) header.get("name"), expression);
|
||||
}
|
||||
gatewayMethodMetadata.setHeaderExpressions(headerExpressions);
|
||||
@@ -251,6 +248,19 @@ public class MessagingGatewayRegistrar implements ImportBeanDefinitionRegistrar
|
||||
return gatewayMethodMetadata;
|
||||
}
|
||||
|
||||
private static Expression buildHeaderExpression(EmbeddedValueResolver embeddedValueResolver, String headerValue,
|
||||
String headerExpression) {
|
||||
|
||||
if (StringUtils.hasText(headerValue)) {
|
||||
String resolvedValue = embeddedValueResolver.resolveStringValue(headerValue);
|
||||
return resolvedValue != null ? new LiteralExpression(resolvedValue) : null;
|
||||
}
|
||||
else {
|
||||
String resolvedValue = embeddedValueResolver.resolveStringValue(headerExpression);
|
||||
return resolvedValue != null ? EXPRESSION_PARSER.parseExpression(resolvedValue) : null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO until SPR-11710 will be resolved.
|
||||
* Captures the meta-annotation attribute values, in order.
|
||||
|
||||
@@ -176,8 +176,10 @@ public class GatewayParser implements BeanDefinitionParser {
|
||||
"'payload-expression' is not allowed when a 'mapper' is provided");
|
||||
|
||||
if (StringUtils.hasText(payloadExpression)) {
|
||||
gatewayMethodMetadata.setPayloadExpression(
|
||||
EXPRESSION_PARSER.parseExpression(embeddedValueResolver.resolveStringValue(payloadExpression)));
|
||||
String expressionString = embeddedValueResolver.resolveStringValue(payloadExpression);
|
||||
if (expressionString != null) {
|
||||
gatewayMethodMetadata.setPayloadExpression(EXPRESSION_PARSER.parseExpression(expressionString));
|
||||
}
|
||||
}
|
||||
|
||||
List<Element> invocationHeaders = DomUtils.getChildElementsByTagName(methodElement, "header");
|
||||
@@ -188,11 +190,7 @@ public class GatewayParser implements BeanDefinitionParser {
|
||||
for (Element headerElement : invocationHeaders) {
|
||||
String headerValue = headerElement.getAttribute("value");
|
||||
String headerExpression = headerElement.getAttribute("expression");
|
||||
Expression expression =
|
||||
StringUtils.hasText(headerValue)
|
||||
? new LiteralExpression(embeddedValueResolver.resolveStringValue(headerValue))
|
||||
: EXPRESSION_PARSER.parseExpression(
|
||||
embeddedValueResolver.resolveStringValue(headerExpression));
|
||||
Expression expression = buildHeaderExpression(embeddedValueResolver, headerValue, headerExpression);
|
||||
|
||||
headerExpressions.put(headerElement.getAttribute(AbstractBeanDefinitionParser.NAME_ATTRIBUTE),
|
||||
expression);
|
||||
@@ -202,5 +200,18 @@ public class GatewayParser implements BeanDefinitionParser {
|
||||
return gatewayMethodMetadata;
|
||||
}
|
||||
|
||||
private static Expression buildHeaderExpression(EmbeddedValueResolver embeddedValueResolver, String headerValue,
|
||||
String headerExpression) {
|
||||
|
||||
if (StringUtils.hasText(headerValue)) {
|
||||
String resolvedValue = embeddedValueResolver.resolveStringValue(headerValue);
|
||||
return resolvedValue != null ? new LiteralExpression(resolvedValue) : null;
|
||||
}
|
||||
else {
|
||||
String resolvedValue = embeddedValueResolver.resolveStringValue(headerExpression);
|
||||
return resolvedValue != null ? EXPRESSION_PARSER.parseExpression(resolvedValue) : null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
* Copyright 2002-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -54,10 +54,11 @@ public class GatewayMethodMetadata {
|
||||
return this.payloadExpression;
|
||||
}
|
||||
|
||||
public void setPayloadExpression(Expression payloadExpression) {
|
||||
public void setPayloadExpression(@Nullable Expression payloadExpression) {
|
||||
this.payloadExpression = payloadExpression;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Map<String, Expression> getHeaderExpressions() {
|
||||
return this.headerExpressions;
|
||||
}
|
||||
@@ -85,19 +86,21 @@ public class GatewayMethodMetadata {
|
||||
this.replyChannelName = replyChannelName;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public String getRequestTimeout() {
|
||||
return this.requestTimeout;
|
||||
}
|
||||
|
||||
public void setRequestTimeout(String requestTimeout) {
|
||||
public void setRequestTimeout(@Nullable String requestTimeout) {
|
||||
this.requestTimeout = requestTimeout;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public String getReplyTimeout() {
|
||||
return this.replyTimeout;
|
||||
}
|
||||
|
||||
public void setReplyTimeout(String replyTimeout) {
|
||||
public void setReplyTimeout(@Nullable String replyTimeout) {
|
||||
this.replyTimeout = replyTimeout;
|
||||
}
|
||||
|
||||
|
||||
@@ -80,40 +80,51 @@ public class IntegrationGraphControllerRegistrar implements ImportBeanDefinition
|
||||
String path = (String) annotationAttributes.get("value");
|
||||
String[] allowedOrigins = (String[]) annotationAttributes.get("allowedOrigins");
|
||||
if (allowedOrigins != null && allowedOrigins.length > 0) {
|
||||
AbstractBeanDefinition controllerCorsConfigurer = null;
|
||||
if (HttpContextUtils.WEB_MVC_PRESENT) {
|
||||
controllerCorsConfigurer = webMvcControllerCorsConfigurerBean(path, allowedOrigins);
|
||||
}
|
||||
else if (HttpContextUtils.WEB_FLUX_PRESENT) {
|
||||
controllerCorsConfigurer = webFluxControllerCorsConfigurerBean(path, allowedOrigins);
|
||||
}
|
||||
|
||||
if (controllerCorsConfigurer != null) {
|
||||
BeanDefinitionReaderUtils.registerWithGeneratedName(controllerCorsConfigurer, registry);
|
||||
}
|
||||
else {
|
||||
LOGGER.warn("Nor Spring MVC, neither WebFlux is present to configure CORS origins " +
|
||||
"for Integration Graph Controller.");
|
||||
}
|
||||
registerControlerCorsConfigurer(registry, path, allowedOrigins);
|
||||
}
|
||||
|
||||
if (!registry.containsBeanDefinition(HttpContextUtils.GRAPH_CONTROLLER_BEAN_NAME)) {
|
||||
Map<String, Object> properties = annotationAttributes;
|
||||
AbstractBeanDefinition controllerPropertiesPopulator =
|
||||
BeanDefinitionBuilder.genericBeanDefinition(GraphControllerPropertiesPopulator.class,
|
||||
() -> new GraphControllerPropertiesPopulator(properties))
|
||||
.setRole(BeanDefinition.ROLE_INFRASTRUCTURE)
|
||||
.getBeanDefinition();
|
||||
BeanDefinitionReaderUtils.registerWithGeneratedName(controllerPropertiesPopulator, registry);
|
||||
registerIntegrationGraphController(registry, annotationAttributes);
|
||||
}
|
||||
}
|
||||
|
||||
BeanDefinition graphController =
|
||||
new RootBeanDefinition(IntegrationGraphController.class, () ->
|
||||
new IntegrationGraphController(
|
||||
((BeanFactory) registry)
|
||||
.getBean(IntegrationContextUtils.INTEGRATION_GRAPH_SERVER_BEAN_NAME,
|
||||
IntegrationGraphServer.class)));
|
||||
private static void registerIntegrationGraphController(BeanDefinitionRegistry registry,
|
||||
Map<String, Object> properties) {
|
||||
|
||||
registry.registerBeanDefinition(HttpContextUtils.GRAPH_CONTROLLER_BEAN_NAME, graphController);
|
||||
AbstractBeanDefinition controllerPropertiesPopulator =
|
||||
BeanDefinitionBuilder.genericBeanDefinition(GraphControllerPropertiesPopulator.class,
|
||||
() -> new GraphControllerPropertiesPopulator(properties))
|
||||
.setRole(BeanDefinition.ROLE_INFRASTRUCTURE)
|
||||
.getBeanDefinition();
|
||||
BeanDefinitionReaderUtils.registerWithGeneratedName(controllerPropertiesPopulator, registry);
|
||||
|
||||
BeanDefinition graphController =
|
||||
new RootBeanDefinition(IntegrationGraphController.class, () ->
|
||||
new IntegrationGraphController(
|
||||
((BeanFactory) registry)
|
||||
.getBean(IntegrationContextUtils.INTEGRATION_GRAPH_SERVER_BEAN_NAME,
|
||||
IntegrationGraphServer.class)));
|
||||
|
||||
registry.registerBeanDefinition(HttpContextUtils.GRAPH_CONTROLLER_BEAN_NAME, graphController);
|
||||
}
|
||||
|
||||
private static void registerControlerCorsConfigurer(BeanDefinitionRegistry registry, String path,
|
||||
String[] allowedOrigins) {
|
||||
|
||||
AbstractBeanDefinition controllerCorsConfigurer = null;
|
||||
if (HttpContextUtils.WEB_MVC_PRESENT) {
|
||||
controllerCorsConfigurer = webMvcControllerCorsConfigurerBean(path, allowedOrigins);
|
||||
}
|
||||
else if (HttpContextUtils.WEB_FLUX_PRESENT) {
|
||||
controllerCorsConfigurer = webFluxControllerCorsConfigurerBean(path, allowedOrigins);
|
||||
}
|
||||
|
||||
if (controllerCorsConfigurer != null) {
|
||||
BeanDefinitionReaderUtils.registerWithGeneratedName(controllerCorsConfigurer, registry);
|
||||
}
|
||||
else {
|
||||
LOGGER.warn("Nor Spring MVC, neither WebFlux is present to configure CORS origins " +
|
||||
"for Integration Graph Controller.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user