diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlProcessor.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlProcessor.java index 75149c09f435b511b95df47cff71b68798b39635..40413554f543422b413f51ce80b57a0f9a1ab60d 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlProcessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2019 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. @@ -156,8 +156,7 @@ public abstract class YamlProcessor { if (logger.isDebugEnabled()) { logger.debug("Loading from YAML: " + resource); } - Reader reader = new UnicodeReader(resource.getInputStream()); - try { + try (Reader reader = new UnicodeReader(resource.getInputStream())) { for (Object object : yaml.loadAll(reader)) { if (object != null && process(asMap(object), callback)) { count++; @@ -171,9 +170,6 @@ public abstract class YamlProcessor { " from YAML resource: " + resource); } } - finally { - reader.close(); - } } catch (IOException ex) { handleProcessError(resource, ex); diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java index 84b748b0b0b3ff8dbf995492c6089c80c5312e3b..b4bf8f8d9076169d044f7af04c88ded1d64b3cda 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2019 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. @@ -663,7 +663,7 @@ public abstract class AbstractBeanDefinition extends BeanMetadataAttributeAccess * Return whether this bean has the specified qualifier. */ public boolean hasQualifier(String typeName) { - return this.qualifiers.keySet().contains(typeName); + return this.qualifiers.containsKey(typeName); } /** diff --git a/spring-context/src/main/java/org/springframework/context/annotation/DeferredImportSelector.java b/spring-context/src/main/java/org/springframework/context/annotation/DeferredImportSelector.java index 3eab155304b0074c1820da691ec31c6f98e23275..e043dcc191db74483af6b7f3adffffca400333d5 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/DeferredImportSelector.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/DeferredImportSelector.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2019 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. @@ -40,8 +40,10 @@ import org.springframework.lang.Nullable; public interface DeferredImportSelector extends ImportSelector { /** - * Return a specific import group or {@code null} if no grouping is required. - * @return the import group class or {@code null} + * Return a specific import group. + *

The default implementations return {@code null} for no grouping required. + * @return the import group class, or {@code null} if none + * @since 5.0 */ @Nullable default Class getImportGroup() { @@ -61,11 +63,12 @@ public interface DeferredImportSelector extends ImportSelector { void process(AnnotationMetadata metadata, DeferredImportSelector selector); /** - * Return the {@link Entry entries} of which class(es) should be imported for this - * group. + * Return the {@link Entry entries} of which class(es) should be imported + * for this group. */ Iterable selectImports(); + /** * An entry that holds the {@link AnnotationMetadata} of the importing * {@link Configuration} class and the class name to import. @@ -97,16 +100,16 @@ public interface DeferredImportSelector extends ImportSelector { } @Override - public boolean equals(Object o) { - if (this == o) { + public boolean equals(Object other) { + if (this == other) { return true; } - if (o == null || getClass() != o.getClass()) { + if (other == null || getClass() != other.getClass()) { return false; } - Entry entry = (Entry) o; - return Objects.equals(this.metadata, entry.metadata) && - Objects.equals(this.importClassName, entry.importClassName); + Entry entry = (Entry) other; + return (Objects.equals(this.metadata, entry.metadata) && + Objects.equals(this.importClassName, entry.importClassName)); } @Override diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ImportBeanDefinitionRegistrar.java b/spring-context/src/main/java/org/springframework/context/annotation/ImportBeanDefinitionRegistrar.java index 1dce3d41140e2df5abf188c5c26a5efd2b7f4991..49af978b0d58be5d8c515c8af75ce0a73ce543df 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ImportBeanDefinitionRegistrar.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ImportBeanDefinitionRegistrar.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2019 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. @@ -58,7 +58,6 @@ public interface ImportBeanDefinitionRegistrar { * @param importingClassMetadata annotation metadata of the importing class * @param registry current bean definition registry */ - public void registerBeanDefinitions( - AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry); + void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry); } diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ImportSelector.java b/spring-context/src/main/java/org/springframework/context/annotation/ImportSelector.java index c684426f22c3c3d07ec731d7a293d1b8afb8c3d9..973fca6fed8991e76753016e3e4b39b9cadd02ad 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ImportSelector.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ImportSelector.java @@ -20,12 +20,12 @@ import org.springframework.core.type.AnnotationMetadata; /** * Interface to be implemented by types that determine which @{@link Configuration} - * class(es) should be imported based on a given selection criteria, usually one or more - * annotation attributes. + * class(es) should be imported based on a given selection criteria, usually one or + * more annotation attributes. * *

An {@link ImportSelector} may implement any of the following - * {@link org.springframework.beans.factory.Aware Aware} interfaces, and their respective - * methods will be called prior to {@link #selectImports}: + * {@link org.springframework.beans.factory.Aware Aware} interfaces, + * and their respective methods will be called prior to {@link #selectImports}: *

* - *

ImportSelectors are usually processed in the same way as regular {@code @Import} - * annotations, however, it is also possible to defer selection of imports until all - * {@code @Configuration} classes have been processed (see {@link DeferredImportSelector} - * for details). + *

{@code ImportSelector} implementations are usually processed in the same way + * as regular {@code @Import} annotations, however, it is also possible to defer + * selection of imports until all {@code @Configuration} classes have been processed + * (see {@link DeferredImportSelector} for details). * * @author Chris Beams * @since 3.1 diff --git a/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java b/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java index 25831f3a6b5eeef6c754e258a3eedd8d5f14e0c9..211c246c4f48cd2acf3328ccb50fea93de6d5bd0 100644 --- a/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java +++ b/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java @@ -92,24 +92,24 @@ import org.springframework.util.ReflectionUtils; * to detect special beans defined in its internal bean factory: * Therefore, this class automatically registers * {@link org.springframework.beans.factory.config.BeanFactoryPostProcessor BeanFactoryPostProcessors}, - * {@link org.springframework.beans.factory.config.BeanPostProcessor BeanPostProcessors} + * {@link org.springframework.beans.factory.config.BeanPostProcessor BeanPostProcessors}, * and {@link org.springframework.context.ApplicationListener ApplicationListeners} * which are defined as beans in the context. * *

A {@link org.springframework.context.MessageSource} may also be supplied * as a bean in the context, with the name "messageSource"; otherwise, message * resolution is delegated to the parent context. Furthermore, a multicaster - * for application events can be supplied as "applicationEventMulticaster" bean + * for application events can be supplied as an "applicationEventMulticaster" bean * of type {@link org.springframework.context.event.ApplicationEventMulticaster} * in the context; otherwise, a default multicaster of type * {@link org.springframework.context.event.SimpleApplicationEventMulticaster} will be used. * - *

Implements resource loading through extending + *

Implements resource loading by extending * {@link org.springframework.core.io.DefaultResourceLoader}. * Consequently treats non-URL resource paths as class path resources * (supporting full class path resource names that include the package path, * e.g. "mypackage/myresource.dat"), unless the {@link #getResourceByPath} - * method is overwritten in a subclass. + * method is overridden in a subclass. * * @author Rod Johnson * @author Juergen Hoeller @@ -390,7 +390,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader else { applicationEvent = new PayloadApplicationEvent<>(this, event); if (eventType == null) { - eventType = ((PayloadApplicationEvent) applicationEvent).getResolvableType(); + eventType = ((PayloadApplicationEvent) applicationEvent).getResolvableType(); } } @@ -713,7 +713,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader } /** - * Instantiate and invoke all registered BeanPostProcessor beans, + * Instantiate and register all BeanPostProcessor beans, * respecting explicit order if given. *

Must be called before any instantiation of application beans. */ diff --git a/spring-core/src/main/java/org/springframework/util/ObjectUtils.java b/spring-core/src/main/java/org/springframework/util/ObjectUtils.java index 2511858a9792a479fb9c4ed044f5b5245db7c1e3..07267e30e098deac410e4efac99d62afa63f5d01 100644 --- a/spring-core/src/main/java/org/springframework/util/ObjectUtils.java +++ b/spring-core/src/main/java/org/springframework/util/ObjectUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2019 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. @@ -639,7 +639,7 @@ public abstract class ObjectUtils { /** * Determine the class name for the given object. - *

Returns {@code "null"} if {@code obj} is {@code null}. + *

Returns a {@code "null"} String if {@code obj} is {@code null}. * @param obj the object to introspect (may be {@code null}) * @return the corresponding class name */ @@ -650,7 +650,7 @@ public abstract class ObjectUtils { /** * Return a String representation of the specified Object. *

Builds a String representation of the contents in case of an array. - * Returns {@code "null"} if {@code obj} is {@code null}. + * Returns a {@code "null"} String if {@code obj} is {@code null}. * @param obj the object to build a String representation for * @return a String representation of {@code obj} */ @@ -696,8 +696,8 @@ public abstract class ObjectUtils { * Return a String representation of the contents of the specified array. *

The String representation consists of a list of the array's elements, * enclosed in curly braces ({@code "{}"}). Adjacent elements are separated - * by the characters {@code ", "} (a comma followed by a space). Returns - * {@code "null"} if {@code array} is {@code null}. + * by the characters {@code ", "} (a comma followed by a space). + * Returns a {@code "null"} String if {@code array} is {@code null}. * @param array the array to build a String representation for * @return a String representation of {@code array} */ @@ -727,8 +727,8 @@ public abstract class ObjectUtils { * Return a String representation of the contents of the specified array. *

The String representation consists of a list of the array's elements, * enclosed in curly braces ({@code "{}"}). Adjacent elements are separated - * by the characters {@code ", "} (a comma followed by a space). Returns - * {@code "null"} if {@code array} is {@code null}. + * by the characters {@code ", "} (a comma followed by a space). + * Returns a {@code "null"} String if {@code array} is {@code null}. * @param array the array to build a String representation for * @return a String representation of {@code array} */ @@ -759,8 +759,8 @@ public abstract class ObjectUtils { * Return a String representation of the contents of the specified array. *

The String representation consists of a list of the array's elements, * enclosed in curly braces ({@code "{}"}). Adjacent elements are separated - * by the characters {@code ", "} (a comma followed by a space). Returns - * {@code "null"} if {@code array} is {@code null}. + * by the characters {@code ", "} (a comma followed by a space). + * Returns a {@code "null"} String if {@code array} is {@code null}. * @param array the array to build a String representation for * @return a String representation of {@code array} */ @@ -790,8 +790,8 @@ public abstract class ObjectUtils { * Return a String representation of the contents of the specified array. *

The String representation consists of a list of the array's elements, * enclosed in curly braces ({@code "{}"}). Adjacent elements are separated - * by the characters {@code ", "} (a comma followed by a space). Returns - * {@code "null"} if {@code array} is {@code null}. + * by the characters {@code ", "} (a comma followed by a space). + * Returns a {@code "null"} String if {@code array} is {@code null}. * @param array the array to build a String representation for * @return a String representation of {@code array} */ @@ -821,8 +821,8 @@ public abstract class ObjectUtils { * Return a String representation of the contents of the specified array. *

The String representation consists of a list of the array's elements, * enclosed in curly braces ({@code "{}"}). Adjacent elements are separated - * by the characters {@code ", "} (a comma followed by a space). Returns - * {@code "null"} if {@code array} is {@code null}. + * by the characters {@code ", "} (a comma followed by a space). + * Returns a {@code "null"} String if {@code array} is {@code null}. * @param array the array to build a String representation for * @return a String representation of {@code array} */ @@ -853,8 +853,8 @@ public abstract class ObjectUtils { * Return a String representation of the contents of the specified array. *

The String representation consists of a list of the array's elements, * enclosed in curly braces ({@code "{}"}). Adjacent elements are separated - * by the characters {@code ", "} (a comma followed by a space). Returns - * {@code "null"} if {@code array} is {@code null}. + * by the characters {@code ", "} (a comma followed by a space). + * Returns a {@code "null"} String if {@code array} is {@code null}. * @param array the array to build a String representation for * @return a String representation of {@code array} */ @@ -885,8 +885,8 @@ public abstract class ObjectUtils { * Return a String representation of the contents of the specified array. *

The String representation consists of a list of the array's elements, * enclosed in curly braces ({@code "{}"}). Adjacent elements are separated - * by the characters {@code ", "} (a comma followed by a space). Returns - * {@code "null"} if {@code array} is {@code null}. + * by the characters {@code ", "} (a comma followed by a space). + * Returns a {@code "null"} String if {@code array} is {@code null}. * @param array the array to build a String representation for * @return a String representation of {@code array} */ @@ -916,8 +916,8 @@ public abstract class ObjectUtils { * Return a String representation of the contents of the specified array. *

The String representation consists of a list of the array's elements, * enclosed in curly braces ({@code "{}"}). Adjacent elements are separated - * by the characters {@code ", "} (a comma followed by a space). Returns - * {@code "null"} if {@code array} is {@code null}. + * by the characters {@code ", "} (a comma followed by a space). + * Returns a {@code "null"} String if {@code array} is {@code null}. * @param array the array to build a String representation for * @return a String representation of {@code array} */ @@ -947,8 +947,8 @@ public abstract class ObjectUtils { * Return a String representation of the contents of the specified array. *

The String representation consists of a list of the array's elements, * enclosed in curly braces ({@code "{}"}). Adjacent elements are separated - * by the characters {@code ", "} (a comma followed by a space). Returns - * {@code "null"} if {@code array} is {@code null}. + * by the characters {@code ", "} (a comma followed by a space). + * Returns a {@code "null"} String if {@code array} is {@code null}. * @param array the array to build a String representation for * @return a String representation of {@code array} */ diff --git a/spring-jms/src/main/java/org/springframework/jms/config/MethodJmsListenerEndpoint.java b/spring-jms/src/main/java/org/springframework/jms/config/MethodJmsListenerEndpoint.java index 5bdbec6f6c82db64893867ccf70ded8eba94eebc..ffe8d071ac9c9ba1ffa56d244dedaa79fb31e562 100644 --- a/spring-jms/src/main/java/org/springframework/jms/config/MethodJmsListenerEndpoint.java +++ b/spring-jms/src/main/java/org/springframework/jms/config/MethodJmsListenerEndpoint.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2019 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. @@ -147,8 +147,11 @@ public class MethodJmsListenerEndpoint extends AbstractJmsListenerEndpoint imple Assert.state(this.messageHandlerMethodFactory != null, "Could not create message listener - MessageHandlerMethodFactory not set"); MessagingMessageListenerAdapter messageListener = createMessageListenerInstance(); + Object bean = getBean(); + Method method = getMethod(); + Assert.state(bean != null && method != null, "No bean+method set on endpoint"); InvocableHandlerMethod invocableHandlerMethod = - this.messageHandlerMethodFactory.createInvocableHandlerMethod(getBean(), getMethod()); + this.messageHandlerMethodFactory.createInvocableHandlerMethod(bean, method); messageListener.setHandlerMethod(invocableHandlerMethod); String responseDestination = getDefaultResponseDestination(); if (StringUtils.hasText(responseDestination)) { diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/MethodArgumentNotValidException.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/MethodArgumentNotValidException.java index 9a724478f3c8933ff723fc75a710e05e5574b1e0..8671d1765bb3c1e67d416b8058070883078a4432 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/MethodArgumentNotValidException.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/MethodArgumentNotValidException.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2019 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. @@ -34,6 +34,7 @@ import org.springframework.validation.ObjectError; @SuppressWarnings("serial") public class MethodArgumentNotValidException extends MethodArgumentResolutionException { + @Nullable private final BindingResult bindingResult; diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/config/AbstractMessageBrokerConfiguration.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/config/AbstractMessageBrokerConfiguration.java index b1a6a6f41bc112c9745db103eb8aefae893c4f5f..1ef5c4e2860955dfbd7085cbf61ef0bbf5617d41 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/config/AbstractMessageBrokerConfiguration.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/config/AbstractMessageBrokerConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2019 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. @@ -67,18 +67,20 @@ import org.springframework.validation.Validator; * protocols such as STOMP. * *

{@link #clientInboundChannel()} and {@link #clientOutboundChannel()} deliver - * messages to and from remote clients to several message handlers such as + * messages to and from remote clients to several message handlers such as the + * following. *

- * while {@link #brokerChannel()} delivers messages from within the application to the + * + *

{@link #brokerChannel()} delivers messages from within the application to the * the respective message handlers. {@link #brokerMessagingTemplate()} can be injected * into any application component to send messages. * - *

Subclasses are responsible for the part of the configuration that feed messages + *

Subclasses are responsible for the parts of the configuration that feed messages * to and from the client inbound/outbound channels (e.g. STOMP over WebSocket). * * @author Rossen Stoyanchev @@ -403,7 +405,7 @@ public abstract class AbstractMessageBrokerConfiguration implements ApplicationC * Override this method to add custom message converters. * @param messageConverters the list to add converters to, initially empty * @return {@code true} if default message converters should be added to list, - * {@code false} if no more converters should be added. + * {@code false} if no more converters should be added */ protected boolean configureMessageConverters(List messageConverters) { return true; @@ -448,9 +450,8 @@ public abstract class AbstractMessageBrokerConfiguration implements ApplicationC protected abstract SimpUserRegistry createLocalUserRegistry(@Nullable Integer order); /** - * Return a {@link org.springframework.validation.Validator - * org.springframework.validation.Validators} instance for validating - * {@code @Payload} method arguments. + * Return an {@link org.springframework.validation.Validator} instance for + * validating {@code @Payload} method arguments. *

In order, this method tries to get a Validator instance: *