Fix Sonar vulnerabilities for varargs

* Fix smell for static `AmqpInboundGateway.attributesHolder`

* Fix readOnlyHeaders in the `MessageBuilder`
This commit is contained in:
Artem Bilan
2019-05-29 12:45:06 -04:00
committed by Gary Russell
parent 1d08d3bdc2
commit 315f0e711f
18 changed files with 186 additions and 166 deletions

View File

@@ -17,6 +17,7 @@
package org.springframework.integration.channel;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.springframework.integration.core.MessageSelector;
@@ -40,6 +41,7 @@ import org.springframework.util.Assert;
*
* @author Mark Fisher
* @author Gary Russell
* @author Artem Bilan
*/
public class ChannelPurger {
@@ -58,18 +60,18 @@ public class ChannelPurger {
Assert.notNull(channels[0], "channel must not be null");
}
this.selector = selector;
this.channels = channels;
this.channels = Arrays.copyOf(channels, channels.length);
}
public final List<Message<?>> purge() {
List<Message<?>> purgedMessages = new ArrayList<Message<?>>();
List<Message<?>> purgedMessages = new ArrayList<>();
for (QueueChannel channel : this.channels) {
List<Message<?>> results = (this.selector == null) ?
channel.clear() : channel.purge(this.selector);
if (results != null) {
purgedMessages.addAll(results);
}
List<Message<?>> results =
this.selector == null
? channel.clear()
: channel.purge(this.selector);
purgedMessages.addAll(results);
}
return purgedMessages;
}

View File

@@ -97,11 +97,11 @@ public class CacheRequestHandlerAdvice extends AbstractRequestHandlerAdvice
* Create a {@link CacheRequestHandlerAdvice} instance based on the provided name of caches
* and {@link CacheableOperation} as default one.
* This can be overridden by the {@link #setCacheOperations}.
* @param cacheNames the name of caches to use in the advice.
* @param cacheNamesArg the name of caches to use in the advice.
* @see #setCacheOperations
*/
public CacheRequestHandlerAdvice(String... cacheNames) {
this.cacheNames = cacheNames;
public CacheRequestHandlerAdvice(String... cacheNamesArg) {
this.cacheNames = cacheNamesArg != null ? Arrays.copyOf(cacheNamesArg, cacheNamesArg.length) : null;
CacheableOperation.Builder builder = new CacheableOperation.Builder();
builder.setName(toString());
this.cacheOperations.add(builder.build());

View File

@@ -23,6 +23,7 @@ import org.springframework.messaging.Message;
/**
* @author Gary Russell
* @author Artem Bilan
*
* @since 4.0
*
*/
@@ -39,7 +40,7 @@ public class DefaultMessageBuilderFactory implements MessageBuilderFactory {
* @since 4.3.2
*/
public void setReadOnlyHeaders(String... readOnlyHeaders) {
this.readOnlyHeaders = Arrays.copyOf(readOnlyHeaders, readOnlyHeaders.length);
this.readOnlyHeaders = readOnlyHeaders != null ? Arrays.copyOf(readOnlyHeaders, readOnlyHeaders.length) : null;
}
/**

View File

@@ -16,6 +16,7 @@
package org.springframework.integration.support;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -309,7 +310,7 @@ public final class MessageBuilder<T> extends AbstractIntegrationMessageBuilder<T
* @see IntegrationMessageHeaderAccessor#isReadOnly(String)
*/
public MessageBuilder<T> readOnlyHeaders(String... readOnlyHeaders) {
this.readOnlyHeaders = readOnlyHeaders;
this.readOnlyHeaders = readOnlyHeaders != null ? Arrays.copyOf(readOnlyHeaders, readOnlyHeaders.length) : null;
this.headerAccessor.setReadOnlyHeaders(readOnlyHeaders);
return this;
}

View File

@@ -37,6 +37,7 @@ import org.springframework.util.Assert;
*
* @author Gary Russell
* @author Artem Bilan
*
* @since 3.0
*
*/
@@ -76,7 +77,8 @@ public class MapMessageConverter implements MessageConverter, BeanFactoryAware {
* @param headerNames The header names.
*/
public void setHeaderNames(String... headerNames) {
this.headerNames = headerNames;
Assert.notEmpty(headerNames, "at least one header name is required");
this.headerNames = Arrays.copyOf(headerNames, headerNames.length);
}
/**
@@ -116,9 +118,9 @@ public class MapMessageConverter implements MessageConverter, BeanFactoryAware {
@Nullable
@Override
public Object fromMessage(Message<?> message, Class<?> clazz) {
Map<String, Object> map = new HashMap<String, Object>();
Map<String, Object> map = new HashMap<>();
map.put("payload", message.getPayload());
Map<String, Object> headers = new HashMap<String, Object>();
Map<String, Object> headers = new HashMap<>();
for (String headerName : this.headerNames) {
Object header = message.getHeaders().get(headerName);
if (header != null) {

View File

@@ -112,7 +112,8 @@ public final class JacksonJsonUtils {
WhitelistTypeResolverBuilder(String... trustedPackages) {
super(ObjectMapper.DefaultTyping.NON_FINAL);
this.trustedPackages = trustedPackages;
this.trustedPackages =
trustedPackages != null ? Arrays.copyOf(trustedPackages, trustedPackages.length) : null;
init(JsonTypeInfo.Id.CLASS, null)
.inclusion(JsonTypeInfo.As.PROPERTY);

View File

@@ -45,7 +45,7 @@ public class HeaderFilter extends IntegrationObjectSupport implements Transforme
public HeaderFilter(String... headersToRemove) {
Assert.notEmpty(headersToRemove, "At least one header name to remove is required.");
this.headersToRemove = headersToRemove;
this.headersToRemove = Arrays.copyOf(headersToRemove, headersToRemove.length);
}
public void setPatternMatch(boolean patternMatch) {
@@ -75,7 +75,7 @@ public class HeaderFilter extends IntegrationObjectSupport implements Transforme
@Override
public Message<?> transform(Message<?> message) {
AbstractIntegrationMessageBuilder<?> builder = this.getMessageBuilderFactory().fromMessage(message);
AbstractIntegrationMessageBuilder<?> builder = getMessageBuilderFactory().fromMessage(message);
if (this.patternMatch) {
builder.removeHeaders(this.headersToRemove);
}