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. * Java 1.8.
*/ */
EIGHT(8, "1.8", "java.util.function.Function"), 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");
private final int value; private final int value;
@ -143,7 +133,7 @@ public @interface ConditionalOnJava {
return candidate; 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.BeanFactoryUtils;
import org.springframework.beans.factory.ListableBeanFactory; import org.springframework.beans.factory.ListableBeanFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; 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.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.jackson.JsonComponentModule; import org.springframework.boot.jackson.JsonComponentModule;
@ -148,7 +146,6 @@ public class JacksonAutoConfiguration {
} }
@Configuration @Configuration
@ConditionalOnJava(JavaVersion.EIGHT)
@ConditionalOnClass(ParameterNamesModule.class) @ConditionalOnClass(ParameterNamesModule.class)
static class ParameterNamesModuleConfiguration { 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.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; 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.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
@ -245,7 +244,6 @@ public class ThymeleafAutoConfiguration {
} }
@Configuration @Configuration
@ConditionalOnJava(ConditionalOnJava.JavaVersion.EIGHT)
@ConditionalOnClass(Java8TimeDialect.class) @ConditionalOnClass(Java8TimeDialect.class)
protected static class ThymeleafJava8TimeDialect { 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.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; 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.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration; import org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration;
@ -64,7 +62,6 @@ public class WebSocketAutoConfiguration {
@Bean @Bean
@ConditionalOnMissingBean(name = "websocketContainerCustomizer") @ConditionalOnMissingBean(name = "websocketContainerCustomizer")
@ConditionalOnJava(JavaVersion.SEVEN)
public TomcatWebSocketContainerCustomizer websocketContainerCustomizer() { public TomcatWebSocketContainerCustomizer websocketContainerCustomizer() {
return new TomcatWebSocketContainerCustomizer(); return new TomcatWebSocketContainerCustomizer();
} }

View File

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