From bccdefdf3024daa386598a528d6df61da92e39c8 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Thu, 11 Jun 2015 18:01:00 +0200 Subject: [PATCH] Polishing --- .../aop/interceptor/AsyncExecutionAspectSupport.java | 2 +- .../config/ExecutorBeanDefinitionParserTests.java | 8 +++++--- .../jms/connection/CachedMessageProducer.java | 4 +++- .../jms/connection/CachingConnectionFactory.java | 4 +++- .../org/springframework/jms/core/JmsTemplate.java | 3 ++- .../listener/AbstractMessageListenerContainer.java | 2 ++ .../request/async/NoSupportAsyncWebRequest.java | 4 +++- .../async/StandardServletAsyncWebRequest.java | 12 +++++++----- .../web/multipart/commons/CommonsMultipartFile.java | 10 +++++----- 9 files changed, 31 insertions(+), 18 deletions(-) diff --git a/spring-aop/src/main/java/org/springframework/aop/interceptor/AsyncExecutionAspectSupport.java b/spring-aop/src/main/java/org/springframework/aop/interceptor/AsyncExecutionAspectSupport.java index ebd59e5fc99..83230f7461b 100644 --- a/spring-aop/src/main/java/org/springframework/aop/interceptor/AsyncExecutionAspectSupport.java +++ b/spring-aop/src/main/java/org/springframework/aop/interceptor/AsyncExecutionAspectSupport.java @@ -155,7 +155,7 @@ public abstract class AsyncExecutionAspectSupport implements BeanFactoryAware { /** * Handles a fatal error thrown while asynchronously invoking the specified * {@link Method}. - *

If the return type of the method is a {@link java.util.concurrent.Future} object, the original + *

If the return type of the method is a {@link Future} object, the original * exception can be propagated by just throwing it at the higher level. However, * for all other cases, the exception will not be transmitted back to the client. * In that later case, the current {@link AsyncUncaughtExceptionHandler} will be diff --git a/spring-context/src/test/java/org/springframework/scheduling/config/ExecutorBeanDefinitionParserTests.java b/spring-context/src/test/java/org/springframework/scheduling/config/ExecutorBeanDefinitionParserTests.java index 29a8cc68a25..9777e559e13 100644 --- a/spring-context/src/test/java/org/springframework/scheduling/config/ExecutorBeanDefinitionParserTests.java +++ b/spring-context/src/test/java/org/springframework/scheduling/config/ExecutorBeanDefinitionParserTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2015 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. @@ -48,21 +48,23 @@ public class ExecutorBeanDefinitionParserTests { "executorContext.xml", ExecutorBeanDefinitionParserTests.class); } + @Test public void defaultExecutor() throws Exception { - Object executor = this.context.getBean("default"); + ThreadPoolTaskExecutor executor = this.context.getBean("default", ThreadPoolTaskExecutor.class); assertEquals(1, getCorePoolSize(executor)); assertEquals(Integer.MAX_VALUE, getMaxPoolSize(executor)); assertEquals(Integer.MAX_VALUE, getQueueCapacity(executor)); assertEquals(60, getKeepAliveSeconds(executor)); assertEquals(false, getAllowCoreThreadTimeOut(executor)); + FutureTask task = new FutureTask(new Callable() { @Override public String call() throws Exception { return "foo"; } }); - ((ThreadPoolTaskExecutor)executor).execute(task); + executor.execute(task); assertEquals("foo", task.get()); } diff --git a/spring-jms/src/main/java/org/springframework/jms/connection/CachedMessageProducer.java b/spring-jms/src/main/java/org/springframework/jms/connection/CachedMessageProducer.java index 6d234c2a8a4..3d7e0fb5f17 100644 --- a/spring-jms/src/main/java/org/springframework/jms/connection/CachedMessageProducer.java +++ b/spring-jms/src/main/java/org/springframework/jms/connection/CachedMessageProducer.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2015 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. @@ -41,6 +41,8 @@ import org.springframework.util.ReflectionUtils; */ class CachedMessageProducer implements MessageProducer, QueueSender, TopicPublisher { + // Various JMS 2.0 MessageProducer methods, if available + private static final Method setDeliveryDelayMethod = ClassUtils.getMethodIfAvailable(MessageProducer.class, "setDeliveryDelay", long.class); diff --git a/spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java b/spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java index 8c4d8f592fc..2708e0d772c 100644 --- a/spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java +++ b/spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2015 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. @@ -78,9 +78,11 @@ import org.springframework.util.ReflectionUtils; */ public class CachingConnectionFactory extends SingleConnectionFactory { + /** The JMS 2.0 Session.createSharedConsumer method, if available */ private static final Method createSharedConsumerMethod = ClassUtils.getMethodIfAvailable( Session.class, "createSharedConsumer", Topic.class, String.class, String.class); + /** The JMS 2.0 Session.createSharedDurableConsumer method, if available */ private static final Method createSharedDurableConsumerMethod = ClassUtils.getMethodIfAvailable( Session.class, "createSharedDurableConsumer", Topic.class, String.class, String.class); diff --git a/spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java b/spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java index 8ae419c502a..3013d7ef84e 100644 --- a/spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java +++ b/spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2015 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. @@ -101,6 +101,7 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations public static final long RECEIVE_TIMEOUT_INDEFINITE_WAIT = 0; + /** The JMS 2.0 MessageProducer.setDeliveryDelay method, if available */ private static final Method setDeliveryDelayMethod = ClassUtils.getMethodIfAvailable(MessageProducer.class, "setDeliveryDelay", long.class); diff --git a/spring-jms/src/main/java/org/springframework/jms/listener/AbstractMessageListenerContainer.java b/spring-jms/src/main/java/org/springframework/jms/listener/AbstractMessageListenerContainer.java index 514c12be156..6642e4fcdfc 100644 --- a/spring-jms/src/main/java/org/springframework/jms/listener/AbstractMessageListenerContainer.java +++ b/spring-jms/src/main/java/org/springframework/jms/listener/AbstractMessageListenerContainer.java @@ -134,9 +134,11 @@ import org.springframework.util.ReflectionUtils; public abstract class AbstractMessageListenerContainer extends AbstractJmsListeningContainer implements MessageListenerContainer { + /** The JMS 2.0 Session.createSharedConsumer method, if available */ private static final Method createSharedConsumerMethod = ClassUtils.getMethodIfAvailable( Session.class, "createSharedConsumer", Topic.class, String.class, String.class); + /** The JMS 2.0 Session.createSharedDurableConsumer method, if available */ private static final Method createSharedDurableConsumerMethod = ClassUtils.getMethodIfAvailable( Session.class, "createSharedDurableConsumer", Topic.class, String.class, String.class); diff --git a/spring-web/src/main/java/org/springframework/web/context/request/async/NoSupportAsyncWebRequest.java b/spring-web/src/main/java/org/springframework/web/context/request/async/NoSupportAsyncWebRequest.java index 5fa0f94a799..c9797cd53b8 100644 --- a/spring-web/src/main/java/org/springframework/web/context/request/async/NoSupportAsyncWebRequest.java +++ b/spring-web/src/main/java/org/springframework/web/context/request/async/NoSupportAsyncWebRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2015 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. @@ -33,6 +33,7 @@ public class NoSupportAsyncWebRequest extends ServletWebRequest implements Async super(request, response); } + @Override public void addCompletionHandler(Runnable runnable) { // ignored @@ -53,6 +54,7 @@ public class NoSupportAsyncWebRequest extends ServletWebRequest implements Async return false; } + // Not supported @Override diff --git a/spring-web/src/main/java/org/springframework/web/context/request/async/StandardServletAsyncWebRequest.java b/spring-web/src/main/java/org/springframework/web/context/request/async/StandardServletAsyncWebRequest.java index ff94a752170..a8878e998cc 100644 --- a/spring-web/src/main/java/org/springframework/web/context/request/async/StandardServletAsyncWebRequest.java +++ b/spring-web/src/main/java/org/springframework/web/context/request/async/StandardServletAsyncWebRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2015 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. @@ -35,7 +35,7 @@ import org.springframework.web.context.request.ServletWebRequest; *

The servlet and all filters involved in an async request must have async * support enabled using the Servlet API or by adding an * {@code true} element to servlet and filter - * declarations in web.xml + * declarations in {@code web.xml}. * * @author Rossen Stoyanchev * @since 3.2 @@ -62,9 +62,9 @@ public class StandardServletAsyncWebRequest extends ServletWebRequest implements super(request, response); } + /** - * {@inheritDoc} - *

In Servlet 3 async processing, the timeout period begins after the + * In Servlet 3 async processing, the timeout period begins after the * container processing thread has exited. */ @Override @@ -85,7 +85,7 @@ public class StandardServletAsyncWebRequest extends ServletWebRequest implements @Override public boolean isAsyncStarted() { - return ((this.asyncContext != null) && getRequest().isAsyncStarted()); + return (this.asyncContext != null && getRequest().isAsyncStarted()); } /** @@ -106,6 +106,7 @@ public class StandardServletAsyncWebRequest extends ServletWebRequest implements "or by adding \"true\" to servlet and " + "filter declarations in web.xml."); Assert.state(!isAsyncComplete(), "Async processing has already completed"); + if (isAsyncStarted()) { return; } @@ -122,6 +123,7 @@ public class StandardServletAsyncWebRequest extends ServletWebRequest implements this.asyncContext.dispatch(); } + // --------------------------------------------------------------------- // Implementation of AsyncListener methods // --------------------------------------------------------------------- diff --git a/spring-web/src/main/java/org/springframework/web/multipart/commons/CommonsMultipartFile.java b/spring-web/src/main/java/org/springframework/web/multipart/commons/CommonsMultipartFile.java index 82a384b27b9..aea5769344f 100644 --- a/spring-web/src/main/java/org/springframework/web/multipart/commons/CommonsMultipartFile.java +++ b/spring-web/src/main/java/org/springframework/web/multipart/commons/CommonsMultipartFile.java @@ -57,6 +57,7 @@ public class CommonsMultipartFile implements MultipartFile, Serializable { this.size = this.fileItem.getSize(); } + /** * Return the underlying {@code org.apache.commons.fileupload.FileItem} * instance. There is hardly any need to access this. @@ -65,7 +66,6 @@ public class CommonsMultipartFile implements MultipartFile, Serializable { return this.fileItem; } - @Override public String getName() { return this.fileItem.getFieldName(); @@ -78,18 +78,18 @@ public class CommonsMultipartFile implements MultipartFile, Serializable { // Should never happen. return ""; } - // check for Unix-style path + // Check for Unix-style path int pos = filename.lastIndexOf("/"); if (pos == -1) { - // check for Windows-style path + // Check for Windows-style path pos = filename.lastIndexOf("\\"); } if (pos != -1) { - // any sort of path separator found + // Any sort of path separator found... return filename.substring(pos + 1); } else { - // plain name + // A plain name return filename; } }