Polishing
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2016 the original author or authors.
|
* Copyright 2002-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -39,10 +39,16 @@ import org.springframework.lang.Nullable;
|
|||||||
*
|
*
|
||||||
* <p><b>{@code FactoryBean} is a programmatic contract. Implementations are not
|
* <p><b>{@code FactoryBean} is a programmatic contract. Implementations are not
|
||||||
* supposed to rely on annotation-driven injection or other reflective facilities.</b>
|
* supposed to rely on annotation-driven injection or other reflective facilities.</b>
|
||||||
* {@link #getObjectType()} {@link #getObject()} invocations may arrive early in
|
* {@link #getObjectType()} {@link #getObject()} invocations may arrive early in the
|
||||||
* the bootstrap process, even ahead of any post-processor setup. If you need access
|
* bootstrap process, even ahead of any post-processor setup. If you need access to
|
||||||
* other beans, implement {@link BeanFactoryAware} and obtain them programmatically.
|
* other beans, implement {@link BeanFactoryAware} and obtain them programmatically.
|
||||||
*
|
*
|
||||||
|
* <p><b>The container is only responsible for managing the lifecycle of the FactoryBean
|
||||||
|
* instance, not the lifecycle of the objects created by the FactoryBean.</b> Therefore,
|
||||||
|
* a destroy method on an exposed bean object (such as {@link java.io.Closeable#close()}
|
||||||
|
* will <i>not</i> be called automatically. Instead, a FactoryBean should implement
|
||||||
|
* {@link DisposableBean} and delegate any such close call to the underlying object.
|
||||||
|
*
|
||||||
* <p>Finally, FactoryBean objects participate in the containing BeanFactory's
|
* <p>Finally, FactoryBean objects participate in the containing BeanFactory's
|
||||||
* synchronization of bean creation. There is usually no need for internal
|
* synchronization of bean creation. There is usually no need for internal
|
||||||
* synchronization other than for purposes of lazy initialization within the
|
* synchronization other than for purposes of lazy initialization within the
|
||||||
@@ -51,6 +57,7 @@ import org.springframework.lang.Nullable;
|
|||||||
* @author Rod Johnson
|
* @author Rod Johnson
|
||||||
* @author Juergen Hoeller
|
* @author Juergen Hoeller
|
||||||
* @since 08.03.2003
|
* @since 08.03.2003
|
||||||
|
* @param <T> the bean type
|
||||||
* @see org.springframework.beans.factory.BeanFactory
|
* @see org.springframework.beans.factory.BeanFactory
|
||||||
* @see org.springframework.aop.framework.ProxyFactoryBean
|
* @see org.springframework.aop.framework.ProxyFactoryBean
|
||||||
* @see org.springframework.jndi.JndiObjectFactoryBean
|
* @see org.springframework.jndi.JndiObjectFactoryBean
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2017 the original author or authors.
|
* Copyright 2002-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -57,6 +57,19 @@ public class CandidateComponentsIndex {
|
|||||||
this.index = parseIndex(content);
|
this.index = parseIndex(content);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static MultiValueMap<String, Entry> parseIndex(List<Properties> content) {
|
||||||
|
MultiValueMap<String, Entry> index = new LinkedMultiValueMap<>();
|
||||||
|
for (Properties entry : content) {
|
||||||
|
entry.forEach((type, values) -> {
|
||||||
|
String[] stereotypes = ((String) values).split(",");
|
||||||
|
for (String stereotype : stereotypes) {
|
||||||
|
index.add(stereotype, new Entry((String) type));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the candidate types that are associated with the specified stereotype.
|
* Return the candidate types that are associated with the specified stereotype.
|
||||||
@@ -76,21 +89,11 @@ public class CandidateComponentsIndex {
|
|||||||
return Collections.emptySet();
|
return Collections.emptySet();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static MultiValueMap<String, Entry> parseIndex(List<Properties> content) {
|
|
||||||
MultiValueMap<String, Entry> index = new LinkedMultiValueMap<>();
|
|
||||||
for (Properties entry : content) {
|
|
||||||
entry.forEach((type, values) -> {
|
|
||||||
String[] stereotypes = ((String) values).split(",");
|
|
||||||
for (String stereotype : stereotypes) {
|
|
||||||
index.add(stereotype, new Entry((String) type));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class Entry {
|
private static class Entry {
|
||||||
|
|
||||||
private final String type;
|
private final String type;
|
||||||
|
|
||||||
private final String packageName;
|
private final String packageName;
|
||||||
|
|
||||||
Entry(String type) {
|
Entry(String type) {
|
||||||
@@ -106,7 +109,6 @@ public class CandidateComponentsIndex {
|
|||||||
return this.type.startsWith(basePackage);
|
return this.type.startsWith(basePackage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -300,7 +300,7 @@ public class ClassPathScanningCandidateComponentProviderTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithAspectAnnotationOnly() throws Exception {
|
public void testWithAspectAnnotationOnly() {
|
||||||
ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
|
ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
|
||||||
provider.addIncludeFilter(new AnnotationTypeFilter(Aspect.class));
|
provider.addIncludeFilter(new AnnotationTypeFilter(Aspect.class));
|
||||||
Set<BeanDefinition> candidates = provider.findCandidateComponents(TEST_BASE_PACKAGE);
|
Set<BeanDefinition> candidates = provider.findCandidateComponents(TEST_BASE_PACKAGE);
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ public class CandidateComponentsIndexLoaderTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void loadIndexNoEntry() throws IOException {
|
public void loadIndexNoEntry() {
|
||||||
CandidateComponentsIndex index = CandidateComponentsIndexLoader.loadIndex(
|
CandidateComponentsIndex index = CandidateComponentsIndexLoader.loadIndex(
|
||||||
CandidateComponentsTestClassLoader.index(getClass().getClassLoader(),
|
CandidateComponentsTestClassLoader.index(getClass().getClassLoader(),
|
||||||
new ClassPathResource("empty-spring.components", getClass())));
|
new ClassPathResource("empty-spring.components", getClass())));
|
||||||
@@ -100,7 +100,7 @@ public class CandidateComponentsIndexLoaderTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void loadIndexWithException() throws IOException {
|
public void loadIndexWithException() {
|
||||||
final IOException cause = new IOException("test exception");
|
final IOException cause = new IOException("test exception");
|
||||||
this.thrown.expect(IllegalStateException.class);
|
this.thrown.expect(IllegalStateException.class);
|
||||||
this.thrown.expectMessage("Unable to load indexes");
|
this.thrown.expectMessage("Unable to load indexes");
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2018 the original author or authors.
|
* Copyright 2002-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -186,7 +186,7 @@ public class DefaultCorsProcessor implements CorsProcessor {
|
|||||||
/**
|
/**
|
||||||
* Check the HTTP method and determine the methods for the response of a
|
* Check the HTTP method and determine the methods for the response of a
|
||||||
* pre-flight request. The default implementation simply delegates to
|
* pre-flight request. The default implementation simply delegates to
|
||||||
* {@link org.springframework.web.cors.CorsConfiguration#checkOrigin(String)}.
|
* {@link org.springframework.web.cors.CorsConfiguration#checkHttpMethod(HttpMethod)}.
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
protected List<HttpMethod> checkMethods(CorsConfiguration config, @Nullable HttpMethod requestMethod) {
|
protected List<HttpMethod> checkMethods(CorsConfiguration config, @Nullable HttpMethod requestMethod) {
|
||||||
|
|||||||
Reference in New Issue
Block a user