Update ConditionalOnJava and its usage now that Boot requires Java 8

Closes gh-6982
This commit is contained in:
Andy Wilkinson 2016-11-01 14:18:33 +00:00
parent 8026b2e7a0
commit 05732613dd
5 changed files with 20 additions and 48 deletions

View File

@ -86,17 +86,7 @@ public @interface ConditionalOnJava {
/**
* Java 1.8.
*/
EIGHT(8, "1.8", "java.util.function.Function"),
/**
* Java 1.7.
*/
SEVEN(7, "1.7", "java.nio.file.Files"),
/**
* Java 1.6.
*/
SIX(6, "1.6", "java.util.ServiceLoader");
EIGHT(8, "1.8", "java.util.function.Function");
private final int value;
@ -143,7 +133,7 @@ public @interface ConditionalOnJava {
return candidate;
}
}
return SIX;
return EIGHT;
}
}

View File

@ -43,8 +43,6 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.BeanFactoryUtils;
import org.springframework.beans.factory.ListableBeanFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnJava;
import org.springframework.boot.autoconfigure.condition.ConditionalOnJava.JavaVersion;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.jackson.JsonComponentModule;
@ -148,7 +146,6 @@ public class JacksonAutoConfiguration {
}
@Configuration
@ConditionalOnJava(JavaVersion.EIGHT)
@ConditionalOnClass(ParameterNamesModule.class)
static class ParameterNamesModuleConfiguration {

View File

@ -37,7 +37,6 @@ import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnJava;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
@ -245,7 +244,6 @@ public class ThymeleafAutoConfiguration {
}
@Configuration
@ConditionalOnJava(ConditionalOnJava.JavaVersion.EIGHT)
@ConditionalOnClass(Java8TimeDialect.class)
protected static class ThymeleafJava8TimeDialect {

View File

@ -24,8 +24,6 @@ import org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainer
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnJava;
import org.springframework.boot.autoconfigure.condition.ConditionalOnJava.JavaVersion;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration;
@ -64,7 +62,6 @@ public class WebSocketAutoConfiguration {
@Bean
@ConditionalOnMissingBean(name = "websocketContainerCustomizer")
@ConditionalOnJava(JavaVersion.SEVEN)
public TomcatWebSocketContainerCustomizer websocketContainerCustomizer() {
return new TomcatWebSocketContainerCustomizer();
}

View File

@ -56,40 +56,40 @@ public class ConditionalOnJavaTests {
@Test
public void doesNotMatchIfLowerIsRequired() {
registerAndRefresh(Java5Required.class);
registerAndRefresh(Java7Required.class);
assertPresent(false);
}
@Test
public void matchesIfVersionIsInRange() {
registerAndRefresh(Java6Required.class);
registerAndRefresh(Java8Required.class);
assertPresent(true);
}
@Test
public void boundsTests() throws Exception {
testBounds(Range.EQUAL_OR_NEWER, JavaVersion.SEVEN, JavaVersion.SIX, true);
testBounds(Range.EQUAL_OR_NEWER, JavaVersion.SEVEN, JavaVersion.SEVEN, true);
testBounds(Range.EQUAL_OR_NEWER, JavaVersion.SEVEN, JavaVersion.EIGHT, false);
testBounds(Range.OLDER_THAN, JavaVersion.SEVEN, JavaVersion.SIX, false);
testBounds(Range.OLDER_THAN, JavaVersion.SEVEN, JavaVersion.SEVEN, false);
testBounds(Range.OLDER_THAN, JavaVersion.SEVEN, JavaVersion.EIGHT, true);
testBounds(Range.EQUAL_OR_NEWER, JavaVersion.NINE, JavaVersion.EIGHT, true);
testBounds(Range.EQUAL_OR_NEWER, JavaVersion.EIGHT, JavaVersion.EIGHT, true);
testBounds(Range.EQUAL_OR_NEWER, JavaVersion.EIGHT, JavaVersion.NINE, false);
testBounds(Range.OLDER_THAN, JavaVersion.NINE, JavaVersion.EIGHT, false);
testBounds(Range.OLDER_THAN, JavaVersion.EIGHT, JavaVersion.EIGHT, false);
testBounds(Range.OLDER_THAN, JavaVersion.EIGHT, JavaVersion.NINE, true);
}
@Test
public void equalOrNewerMessage() throws Exception {
ConditionOutcome outcome = this.condition.getMatchOutcome(Range.EQUAL_OR_NEWER,
JavaVersion.SEVEN, JavaVersion.SIX);
JavaVersion.NINE, JavaVersion.EIGHT);
assertThat(outcome.getMessage())
.isEqualTo("@ConditionalOnJava (1.6 or newer) found 1.7");
.isEqualTo("@ConditionalOnJava (1.8 or newer) found 1.9");
}
@Test
public void olderThanMessage() throws Exception {
ConditionOutcome outcome = this.condition.getMatchOutcome(Range.OLDER_THAN,
JavaVersion.SEVEN, JavaVersion.SIX);
JavaVersion.NINE, JavaVersion.EIGHT);
assertThat(outcome.getMessage())
.isEqualTo("@ConditionalOnJava (older than 1.6) found 1.7");
.isEqualTo("@ConditionalOnJava (older than 1.8) found 1.9");
}
@Test
@ -98,19 +98,9 @@ public class ConditionalOnJavaTests {
}
@Test
public void java7IsDetected() throws Exception {
assertThat(getJavaVersion(Function.class)).isEqualTo("1.7");
}
@Test
public void java6IsDetected() throws Exception {
assertThat(getJavaVersion(Function.class, Files.class)).isEqualTo("1.6");
}
@Test
public void java6IsTheFallback() throws Exception {
public void java8IsTheFallback() throws Exception {
assertThat(getJavaVersion(Function.class, Files.class, ServiceLoader.class))
.isEqualTo("1.6");
.isEqualTo("1.8");
}
private String getJavaVersion(Class<?>... hiddenClasses) throws Exception {
@ -181,8 +171,8 @@ public class ConditionalOnJavaTests {
}
@Configuration
@ConditionalOnJava(range = Range.OLDER_THAN, value = JavaVersion.SIX)
static class Java5Required {
@ConditionalOnJava(range = Range.OLDER_THAN, value = JavaVersion.EIGHT)
static class Java7Required {
@Bean
String foo() {
return "foo";
@ -190,8 +180,8 @@ public class ConditionalOnJavaTests {
}
@Configuration
@ConditionalOnJava(JavaVersion.SIX)
static class Java6Required {
@ConditionalOnJava(JavaVersion.EIGHT)
static class Java8Required {
@Bean
String foo() {
return "foo";