Polishing
This commit is contained in:
parent
799589ec1c
commit
1332482c40
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2017 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.
|
||||
|
|
@ -42,7 +42,7 @@ public class Problem {
|
|||
|
||||
/**
|
||||
* Create a new instance of the {@link Problem} class.
|
||||
* @param message a message detailing the problem
|
||||
* @param message a message detailing the problem
|
||||
* @param location the location within a bean configuration source that triggered the error
|
||||
*/
|
||||
public Problem(String message, Location location) {
|
||||
|
|
@ -51,7 +51,7 @@ public class Problem {
|
|||
|
||||
/**
|
||||
* Create a new instance of the {@link Problem} class.
|
||||
* @param message a message detailing the problem
|
||||
* @param message a message detailing the problem
|
||||
* @param parseState the {@link ParseState} at the time of the error
|
||||
* @param location the location within a bean configuration source that triggered the error
|
||||
*/
|
||||
|
|
@ -61,8 +61,8 @@ public class Problem {
|
|||
|
||||
/**
|
||||
* Create a new instance of the {@link Problem} class.
|
||||
* @param message a message detailing the problem
|
||||
* @param rootCause the underlying expection that caused the error (may be {@code null})
|
||||
* @param message a message detailing the problem
|
||||
* @param rootCause the underlying exception that caused the error (may be {@code null})
|
||||
* @param parseState the {@link ParseState} at the time of the error
|
||||
* @param location the location within a bean configuration source that triggered the error
|
||||
*/
|
||||
|
|
@ -107,7 +107,7 @@ public class Problem {
|
|||
}
|
||||
|
||||
/**
|
||||
* Get the underlying expection that caused the error (may be {@code null}).
|
||||
* Get the underlying exception that caused the error (may be {@code null}).
|
||||
*/
|
||||
public Throwable getRootCause() {
|
||||
return this.rootCause;
|
||||
|
|
|
|||
|
|
@ -1295,8 +1295,8 @@ public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp
|
|||
mbd.setScope(containingBd.getScope());
|
||||
}
|
||||
|
||||
// Only cache the merged bean definition if we're already about to create an
|
||||
// instance of the bean, or at least have already created an instance before.
|
||||
// Cache the merged bean definition for the time being
|
||||
// (it might still get re-merged later on in order to pick up metadata changes)
|
||||
if (containingBd == null && isCacheBeanMetadata()) {
|
||||
this.mergedBeanDefinitions.put(beanName, mbd);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2017 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.
|
||||
|
|
@ -81,7 +81,9 @@ public class ResourceEditor extends PropertyEditorSupport {
|
|||
* @param ignoreUnresolvablePlaceholders whether to ignore unresolvable placeholders
|
||||
* if no corresponding property could be found in the given {@code propertyResolver}
|
||||
*/
|
||||
public ResourceEditor(ResourceLoader resourceLoader, PropertyResolver propertyResolver, boolean ignoreUnresolvablePlaceholders) {
|
||||
public ResourceEditor(ResourceLoader resourceLoader, PropertyResolver propertyResolver,
|
||||
boolean ignoreUnresolvablePlaceholders) {
|
||||
|
||||
Assert.notNull(resourceLoader, "ResourceLoader must not be null");
|
||||
this.resourceLoader = resourceLoader;
|
||||
this.propertyResolver = propertyResolver;
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ import static org.springframework.core.annotation.AnnotationUtils.*;
|
|||
* @author Sam Brannen
|
||||
* @author Chris Beams
|
||||
* @author Phillip Webb
|
||||
* @author Oleg Zhurakousky
|
||||
*/
|
||||
public class AnnotationUtilsTests {
|
||||
|
||||
|
|
@ -90,7 +91,7 @@ public class AnnotationUtilsTests {
|
|||
assertNotNull(findAnnotation(m, Order.class));
|
||||
}
|
||||
|
||||
/** @since 4.2 */
|
||||
// @since 4.2
|
||||
@Test
|
||||
public void findMethodAnnotationWithAnnotationOnMethodInInterface() throws Exception {
|
||||
Method m = Leaf.class.getMethod("fromInterfaceImplementedByRoot");
|
||||
|
|
@ -102,7 +103,7 @@ public class AnnotationUtilsTests {
|
|||
assertNotNull(findAnnotation(m, Order.class));
|
||||
}
|
||||
|
||||
/** @since 4.2 */
|
||||
// @since 4.2
|
||||
@Test
|
||||
public void findMethodAnnotationWithMetaAnnotationOnLeaf() throws Exception {
|
||||
Method m = Leaf.class.getMethod("metaAnnotatedOnLeaf");
|
||||
|
|
@ -111,7 +112,7 @@ public class AnnotationUtilsTests {
|
|||
assertNotNull(findAnnotation(m, Order.class));
|
||||
}
|
||||
|
||||
/** @since 4.2 */
|
||||
// @since 4.2
|
||||
@Test
|
||||
public void findMethodAnnotationWithMetaMetaAnnotationOnLeaf() throws Exception {
|
||||
Method m = Leaf.class.getMethod("metaMetaAnnotatedOnLeaf");
|
||||
|
|
@ -128,7 +129,7 @@ public class AnnotationUtilsTests {
|
|||
assertNotNull(findAnnotation(m, Order.class));
|
||||
}
|
||||
|
||||
/** @since 4.2 */
|
||||
// @since 4.2
|
||||
@Test
|
||||
public void findMethodAnnotationWithMetaAnnotationOnRoot() throws Exception {
|
||||
Method m = Leaf.class.getMethod("metaAnnotatedOnRoot");
|
||||
|
|
@ -258,42 +259,42 @@ public class AnnotationUtilsTests {
|
|||
assertNull("Should not find @Component on MetaCycleAnnotatedClass", component);
|
||||
}
|
||||
|
||||
/** @since 4.2 */
|
||||
// @since 4.2
|
||||
@Test
|
||||
public void findClassAnnotationOnInheritedAnnotationInterface() {
|
||||
Transactional tx = findAnnotation(InheritedAnnotationInterface.class, Transactional.class);
|
||||
assertNotNull("Should find @Transactional on InheritedAnnotationInterface", tx);
|
||||
}
|
||||
|
||||
/** @since 4.2 */
|
||||
// @since 4.2
|
||||
@Test
|
||||
public void findClassAnnotationOnSubInheritedAnnotationInterface() {
|
||||
Transactional tx = findAnnotation(SubInheritedAnnotationInterface.class, Transactional.class);
|
||||
assertNotNull("Should find @Transactional on SubInheritedAnnotationInterface", tx);
|
||||
}
|
||||
|
||||
/** @since 4.2 */
|
||||
// @since 4.2
|
||||
@Test
|
||||
public void findClassAnnotationOnSubSubInheritedAnnotationInterface() {
|
||||
Transactional tx = findAnnotation(SubSubInheritedAnnotationInterface.class, Transactional.class);
|
||||
assertNotNull("Should find @Transactional on SubSubInheritedAnnotationInterface", tx);
|
||||
}
|
||||
|
||||
/** @since 4.2 */
|
||||
// @since 4.2
|
||||
@Test
|
||||
public void findClassAnnotationOnNonInheritedAnnotationInterface() {
|
||||
Order order = findAnnotation(NonInheritedAnnotationInterface.class, Order.class);
|
||||
assertNotNull("Should find @Order on NonInheritedAnnotationInterface", order);
|
||||
}
|
||||
|
||||
/** @since 4.2 */
|
||||
// @since 4.2
|
||||
@Test
|
||||
public void findClassAnnotationOnSubNonInheritedAnnotationInterface() {
|
||||
Order order = findAnnotation(SubNonInheritedAnnotationInterface.class, Order.class);
|
||||
assertNotNull("Should find @Order on SubNonInheritedAnnotationInterface", order);
|
||||
}
|
||||
|
||||
/** @since 4.2 */
|
||||
// @since 4.2
|
||||
@Test
|
||||
public void findClassAnnotationOnSubSubNonInheritedAnnotationInterface() {
|
||||
Order order = findAnnotation(SubSubNonInheritedAnnotationInterface.class, Order.class);
|
||||
|
|
@ -1240,6 +1241,11 @@ public class AnnotationUtilsTests {
|
|||
assertEquals("location: ", "", contextConfig.location());
|
||||
}
|
||||
|
||||
@Test(expected = AnnotationConfigurationException.class)
|
||||
public void synthesizeAnnotationWithAttributeAliasesDifferentValues() throws Exception {
|
||||
getValue(synthesizeAnnotation(ContextConfigMismatch.class.getAnnotation(ContextConfig.class)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void synthesizeAnnotationFromMapWithMinimalAttributesWithAttributeAliases() throws Exception {
|
||||
Map<String, Object> map = Collections.singletonMap("location", "test.xml");
|
||||
|
|
@ -1357,11 +1363,6 @@ public class AnnotationUtilsTests {
|
|||
assertNotNull(synthesizedWebMapping2);
|
||||
|
||||
assertThat(webMappingWithAliases.toString(), is(not(synthesizedWebMapping1.toString())));
|
||||
|
||||
// The unsynthesized annotation for handleMappedWithSamePathAndValueAttributes()
|
||||
// should produce the same toString() results as synthesized annotations for
|
||||
// handleMappedWithPathAttribute()
|
||||
assertToStringForWebMappingWithPathAndValue(webMappingWithPathAndValue);
|
||||
assertToStringForWebMappingWithPathAndValue(synthesizedWebMapping1);
|
||||
assertToStringForWebMappingWithPathAndValue(synthesizedWebMapping2);
|
||||
}
|
||||
|
|
@ -1819,13 +1820,13 @@ public class AnnotationUtilsTests {
|
|||
interface InterfaceWithRepeated {
|
||||
|
||||
@MyRepeatable("A")
|
||||
@MyRepeatableContainer({ @MyRepeatable("B"), @MyRepeatable("C") })
|
||||
@MyRepeatableContainer({@MyRepeatable("B"), @MyRepeatable("C")})
|
||||
@MyRepeatableMeta1
|
||||
void foo();
|
||||
}
|
||||
|
||||
@MyRepeatable("A")
|
||||
@MyRepeatableContainer({ @MyRepeatable("B"), @MyRepeatable("C") })
|
||||
@MyRepeatableContainer({@MyRepeatable("B"), @MyRepeatable("C")})
|
||||
@MyRepeatableMeta1
|
||||
static class MyRepeatableClass {
|
||||
}
|
||||
|
|
@ -1834,7 +1835,7 @@ public class AnnotationUtilsTests {
|
|||
}
|
||||
|
||||
@MyRepeatable("X")
|
||||
@MyRepeatableContainer({ @MyRepeatable("Y"), @MyRepeatable("Z") })
|
||||
@MyRepeatableContainer({@MyRepeatable("Y"), @MyRepeatable("Z")})
|
||||
@MyRepeatableMeta2
|
||||
static class SubMyRepeatableWithAdditionalLocalDeclarationsClass extends MyRepeatableClass {
|
||||
}
|
||||
|
|
@ -1964,7 +1965,7 @@ public class AnnotationUtilsTests {
|
|||
BrokenContextConfig[] value();
|
||||
}
|
||||
|
||||
@Hierarchy({ @ContextConfig("A"), @ContextConfig(location = "B") })
|
||||
@Hierarchy({@ContextConfig("A"), @ContextConfig(location = "B")})
|
||||
static class ConfigHierarchyTestCase {
|
||||
}
|
||||
|
||||
|
|
@ -2316,7 +2317,7 @@ public class AnnotationUtilsTests {
|
|||
Filter[] excludeFilters() default {};
|
||||
}
|
||||
|
||||
@ComponentScan(excludeFilters = { @Filter(pattern = "*Foo"), @Filter(pattern = "*Bar") })
|
||||
@ComponentScan(excludeFilters = {@Filter(pattern = "*Foo"), @Filter(pattern = "*Bar")})
|
||||
static class ComponentScanClass {
|
||||
}
|
||||
|
||||
|
|
@ -2344,4 +2345,8 @@ public class AnnotationUtilsTests {
|
|||
String text();
|
||||
}
|
||||
|
||||
@ContextConfig(value = "foo", location = "bar")
|
||||
interface ContextConfigMismatch {
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -179,12 +179,11 @@ public class FormHttpMessageConverter implements HttpMessageConverter<MultiValue
|
|||
* names. Encoding is based on the encoded-word syntax defined in RFC 2047
|
||||
* and relies on {@code MimeUtility} from "javax.mail".
|
||||
* <p>If not set file names will be encoded as US-ASCII.
|
||||
* @param multipartCharset the charset to use
|
||||
* @since 4.1.1
|
||||
* @see <a href="http://en.wikipedia.org/wiki/MIME#Encoded-Word">Encoded-Word</a>
|
||||
*/
|
||||
public void setMultipartCharset(Charset multipartCharset) {
|
||||
this.multipartCharset = multipartCharset;
|
||||
public void setMultipartCharset(Charset charset) {
|
||||
this.multipartCharset = charset;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -264,6 +264,10 @@ public class DispatcherServlet extends FrameworkServlet {
|
|||
*/
|
||||
private static final String DEFAULT_STRATEGIES_PATH = "DispatcherServlet.properties";
|
||||
|
||||
/**
|
||||
* Common prefix that DispatcherServlet's default strategy attributes start with.
|
||||
*/
|
||||
private static final String DEFAULT_STRATEGIES_PREFIX = "org.springframework.web.servlet";
|
||||
|
||||
/** Additional logger to use when no mapped handler is found for a request. */
|
||||
protected static final Log pageNotFoundLogger = LogFactory.getLog(PAGE_NOT_FOUND_LOG_CATEGORY);
|
||||
|
|
@ -279,7 +283,7 @@ public class DispatcherServlet extends FrameworkServlet {
|
|||
defaultStrategies = PropertiesLoaderUtils.loadProperties(resource);
|
||||
}
|
||||
catch (IOException ex) {
|
||||
throw new IllegalStateException("Could not load 'DispatcherServlet.properties': " + ex.getMessage());
|
||||
throw new IllegalStateException("Could not load '" + DEFAULT_STRATEGIES_PATH + "': " + ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -874,7 +878,7 @@ public class DispatcherServlet extends FrameworkServlet {
|
|||
Enumeration<?> attrNames = request.getAttributeNames();
|
||||
while (attrNames.hasMoreElements()) {
|
||||
String attrName = (String) attrNames.nextElement();
|
||||
if (this.cleanupAfterInclude || attrName.startsWith("org.springframework.web.servlet")) {
|
||||
if (this.cleanupAfterInclude || attrName.startsWith(DEFAULT_STRATEGIES_PREFIX)) {
|
||||
attributesSnapshot.put(attrName, request.getAttribute(attrName));
|
||||
}
|
||||
}
|
||||
|
|
@ -1348,7 +1352,7 @@ public class DispatcherServlet extends FrameworkServlet {
|
|||
Enumeration<?> attrNames = request.getAttributeNames();
|
||||
while (attrNames.hasMoreElements()) {
|
||||
String attrName = (String) attrNames.nextElement();
|
||||
if (this.cleanupAfterInclude || attrName.startsWith("org.springframework.web.servlet")) {
|
||||
if (this.cleanupAfterInclude || attrName.startsWith(DEFAULT_STRATEGIES_PREFIX)) {
|
||||
attrsToCheck.add(attrName);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue