Browse Source

Merge branch '2.0.x'

pull/14252/head
Phillip Webb 8 years ago
parent
commit
174f53e1cf
  1. 62
      spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/BeanTypeRegistry.java
  2. 1
      spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/condition/ConditionalOnBeanTests.java
  3. 9
      spring-boot-project/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/ZipInflaterInputStream.java
  4. 42
      spring-boot-project/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/NoSuchMethodFailureAnalyzer.java
  5. 4
      spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/undertow/UndertowServletWebServerFactory.java
  6. 1
      spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/servlet/support/SpringBootServletInitializer.java

62
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/BeanTypeRegistry.java

@ -20,7 +20,6 @@ import java.lang.annotation.Annotation; @@ -20,7 +20,6 @@ import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
@ -145,6 +144,17 @@ final class BeanTypeRegistry implements SmartInitializingSingleton { @@ -145,6 +144,17 @@ final class BeanTypeRegistry implements SmartInitializingSingleton {
this.beanDefinitions.clear();
}
private void updateTypesIfNecessary() {
this.beanFactory.getBeanNamesIterator().forEachRemaining((name) -> {
if (!this.beanTypes.containsKey(name)) {
addBeanType(name);
}
else {
updateBeanType(name);
}
});
}
private void addBeanType(String name) {
if (this.beanFactory.containsSingleton(name)) {
this.beanTypes.put(name, this.beanFactory.getType(name));
@ -161,13 +171,17 @@ final class BeanTypeRegistry implements SmartInitializingSingleton { @@ -161,13 +171,17 @@ final class BeanTypeRegistry implements SmartInitializingSingleton {
}
}
private RootBeanDefinition getBeanDefinition(String name) {
try {
return (RootBeanDefinition) this.beanFactory.getMergedBeanDefinition(name);
private void updateBeanType(String name) {
if (this.beanFactory.isAlias(name) || this.beanFactory.containsSingleton(name)) {
return;
}
catch (BeanDefinitionStoreException ex) {
logIgnoredError("unresolvable metadata in bean definition", name, ex);
return null;
RootBeanDefinition beanDefinition = getBeanDefinition(name);
if (beanDefinition == null) {
return;
}
RootBeanDefinition previous = this.beanDefinitions.put(name, beanDefinition);
if (previous != null && !beanDefinition.equals(previous)) {
addBeanTypeForNonAliasDefinition(name, beanDefinition);
}
}
@ -196,6 +210,16 @@ final class BeanTypeRegistry implements SmartInitializingSingleton { @@ -196,6 +210,16 @@ final class BeanTypeRegistry implements SmartInitializingSingleton {
}
}
private RootBeanDefinition getBeanDefinition(String name) {
try {
return (RootBeanDefinition) this.beanFactory.getMergedBeanDefinition(name);
}
catch (BeanDefinitionStoreException ex) {
logIgnoredError("unresolvable metadata in bean definition", name, ex);
return null;
}
}
private void logIgnoredError(String message, String name, Exception ex) {
if (logger.isDebugEnabled()) {
logger.debug("Ignoring " + message + " '" + name + "'", ex);
@ -207,30 +231,6 @@ final class BeanTypeRegistry implements SmartInitializingSingleton { @@ -207,30 +231,6 @@ final class BeanTypeRegistry implements SmartInitializingSingleton {
&& !this.beanFactory.containsSingleton(factoryBeanName));
}
private void updateTypesIfNecessary() {
Iterator<String> names = this.beanFactory.getBeanNamesIterator();
while (names.hasNext()) {
String name = names.next();
if (!this.beanTypes.containsKey(name)) {
addBeanType(name);
}
else {
if (!this.beanFactory.isAlias(name)
&& !this.beanFactory.containsSingleton(name)) {
RootBeanDefinition beanDefinition = getBeanDefinition(name);
if (beanDefinition != null) {
RootBeanDefinition existingDefinition = this.beanDefinitions
.put(name, beanDefinition);
if (existingDefinition != null
&& !beanDefinition.equals(existingDefinition)) {
addBeanTypeForNonAliasDefinition(name, beanDefinition);
}
}
}
}
}
}
/**
* Attempt to guess the type that a {@link FactoryBean} will return based on the
* generics in its method signature.

1
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/condition/ConditionalOnBeanTests.java

@ -347,7 +347,6 @@ public class ConditionalOnBeanTests { @@ -347,7 +347,6 @@ public class ConditionalOnBeanTests {
public static class ConsumingConfiguration {
ConsumingConfiguration(String testBean) {
}
}

9
spring-boot-project/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/ZipInflaterInputStream.java

@ -30,19 +30,16 @@ import java.util.zip.InflaterInputStream; @@ -30,19 +30,16 @@ import java.util.zip.InflaterInputStream;
*/
class ZipInflaterInputStream extends InflaterInputStream {
private final Inflater inflater;
private int available;
private boolean extraBytesWritten;
private int available;
ZipInflaterInputStream(InputStream inputStream, int size) {
this(inputStream, new Inflater(true), size);
}
private ZipInflaterInputStream(InputStream inputStream, Inflater inflater, int size) {
super(inputStream, inflater, getInflaterBufferSize(size));
this.inflater = inflater;
super(inputStream, new Inflater(true), getInflaterBufferSize(size));
this.available = size;
}
@ -66,7 +63,7 @@ class ZipInflaterInputStream extends InflaterInputStream { @@ -66,7 +63,7 @@ class ZipInflaterInputStream extends InflaterInputStream {
@Override
public void close() throws IOException {
super.close();
this.inflater.end();
this.inf.end();
}
@Override

42
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/NoSuchMethodFailureAnalyzer.java

@ -48,24 +48,8 @@ class NoSuchMethodFailureAnalyzer extends AbstractFailureAnalyzer<NoSuchMethodEr @@ -48,24 +48,8 @@ class NoSuchMethodFailureAnalyzer extends AbstractFailureAnalyzer<NoSuchMethodEr
if (actual == null) {
return null;
}
StringWriter description = new StringWriter();
PrintWriter writer = new PrintWriter(description);
writer.print("An attempt was made to call the method ");
writer.print(cause.getMessage());
writer.print(" but it does not exist. Its class, ");
writer.print(className);
writer.println(", is available from the following locations:");
writer.println();
for (URL candidate : candidates) {
writer.print(" ");
writer.println(candidate);
}
writer.println();
writer.println("It was loaded from the following location:");
writer.println();
writer.print(" ");
writer.println(actual);
return new FailureAnalysis(description.toString(),
String description = getDescription(cause, className, candidates, actual);
return new FailureAnalysis(description,
"Correct the classpath of your application so that it contains a single,"
+ " compatible version of " + className,
cause);
@ -105,4 +89,26 @@ class NoSuchMethodFailureAnalyzer extends AbstractFailureAnalyzer<NoSuchMethodEr @@ -105,4 +89,26 @@ class NoSuchMethodFailureAnalyzer extends AbstractFailureAnalyzer<NoSuchMethodEr
}
}
private String getDescription(NoSuchMethodError cause, String className,
List<URL> candidates, URL actual) {
StringWriter description = new StringWriter();
PrintWriter writer = new PrintWriter(description);
writer.print("An attempt was made to call the method ");
writer.print(cause.getMessage());
writer.print(" but it does not exist. Its class, ");
writer.print(className);
writer.println(", is available from the following locations:");
writer.println();
for (URL candidate : candidates) {
writer.print(" ");
writer.println(candidate);
}
writer.println();
writer.println("It was loaded from the following location:");
writer.println();
writer.print(" ");
writer.println(actual);
return description.toString();
}
}

4
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/undertow/UndertowServletWebServerFactory.java

@ -319,8 +319,8 @@ public class UndertowServletWebServerFactory extends AbstractServletWebServerFac @@ -319,8 +319,8 @@ public class UndertowServletWebServerFactory extends AbstractServletWebServerFac
private AccessLogHandler createAccessLogHandler(HttpHandler handler,
AccessLogReceiver accessLogReceiver) {
createAccessLogDirectoryIfNecessary();
String formatString = ((this.accessLogPattern != null) ? this.accessLogPattern
: "common");
String formatString = (this.accessLogPattern != null) ? this.accessLogPattern
: "common";
return new AccessLogHandler(handler, accessLogReceiver, formatString,
Undertow.class.getClassLoader());
}

1
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/servlet/support/SpringBootServletInitializer.java

@ -196,7 +196,6 @@ public abstract class SpringBootServletInitializer implements WebApplicationInit @@ -196,7 +196,6 @@ public abstract class SpringBootServletInitializer implements WebApplicationInit
((ConfigurableWebEnvironment) environment)
.initPropertySources(this.servletContext, null);
}
}
@Override

Loading…
Cancel
Save