diff --git a/spring-cloud-function-deployer/src/main/java/org/springframework/cloud/function/deployer/FunctionCreatorConfiguration.java b/spring-cloud-function-deployer/src/main/java/org/springframework/cloud/function/deployer/FunctionCreatorConfiguration.java index 6645b97e4..cfd70a9aa 100644 --- a/spring-cloud-function-deployer/src/main/java/org/springframework/cloud/function/deployer/FunctionCreatorConfiguration.java +++ b/spring-cloud-function-deployer/src/main/java/org/springframework/cloud/function/deployer/FunctionCreatorConfiguration.java @@ -268,7 +268,8 @@ class FunctionCreatorConfiguration { } private ClassLoader getParent() { - ClassLoader loader = getClass().getClassLoader().getParent(); + ClassLoader loader = getClass().getClassLoader(); + loader = loader.getParent(); ClassLoader parent = loader; while (loader.getParent() != null) { // If launched from a fat jar with spring.factories skip this parent level @@ -462,7 +463,8 @@ class FunctionCreatorConfiguration { return super.loadClass(name, resolve); } catch (ClassNotFoundException e) { - if (name.contains(ContextRunner.class.getName())) { + if (name.contains(ContextRunner.class.getName()) + || name.contains(PostConstruct.class.getName())) { // Special case for the ContextRunner. We can re-use the bytes for it, // and the function jar doesn't have to include them since it is only // used here. diff --git a/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/FunctionCreatorConfigurationTests.java b/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/FunctionCreatorConfigurationTests.java index e0ddb51fa..3eaabff38 100644 --- a/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/FunctionCreatorConfigurationTests.java +++ b/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/FunctionCreatorConfigurationTests.java @@ -19,6 +19,8 @@ package org.springframework.cloud.function.deployer; import java.util.function.Function; import java.util.function.Supplier; +import org.junit.Assume; +import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; @@ -26,6 +28,7 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.system.JavaVersion; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.rule.OutputCapture; import org.springframework.cloud.function.context.FunctionCatalog; @@ -79,7 +82,7 @@ public abstract class FunctionCreatorConfigurationTests { @TestPropertySource(properties = { "function.location=app:classpath,file:target/test-classes,file:target/test-classes/app", "function.bean=myDoubler", - "function.main=org.springframework.cloud.function.test.FunctionApp"}) + "function.main=org.springframework.cloud.function.test.FunctionApp" }) public static class SingleFunctionWithMainTests extends FunctionCreatorConfigurationTests { @@ -95,7 +98,7 @@ public abstract class FunctionCreatorConfigurationTests { @TestPropertySource(properties = { "function.location=app:classpath,file:target/test-classes,file:target/test-classes/app", "function.bean=myDoubler", - "function.main=org.springframework.cloud.function.test.FunctionRegistrar"}) + "function.main=org.springframework.cloud.function.test.FunctionRegistrar" }) public static class SingleFunctionWithRegistrarTests extends FunctionCreatorConfigurationTests { @@ -129,6 +132,12 @@ public abstract class FunctionCreatorConfigurationTests { public static class SupplierCompositionTests extends FunctionCreatorConfigurationTests { + @BeforeClass + public static void init() { + Assume.assumeTrue("Java > 8", + JavaVersion.getJavaVersion().isOlderThan(JavaVersion.NINE)); + } + @Test public void testSupplier() { Supplier function = catalog.lookup(Supplier.class, "function0"); @@ -151,6 +160,12 @@ public abstract class FunctionCreatorConfigurationTests { public static class FunctionCompositionTests extends FunctionCreatorConfigurationTests { + @BeforeClass + public static void init() { + Assume.assumeTrue("Java > 8", + JavaVersion.getJavaVersion().isOlderThan(JavaVersion.NINE)); + } + @Test public void testFunction() { Function, Flux> function = catalog @@ -173,6 +188,12 @@ public abstract class FunctionCreatorConfigurationTests { public static class ConsumerCompositionTests extends FunctionCreatorConfigurationTests { + @BeforeClass + public static void init() { + Assume.assumeTrue("Java > 8", + JavaVersion.getJavaVersion().isOlderThan(JavaVersion.NINE)); + } + @Rule public OutputCapture capture = new OutputCapture(); diff --git a/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/SpringFunctionFluxConfigurationTests.java b/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/SpringFunctionFluxConfigurationTests.java index 8da1d6e25..64bc3b7dd 100644 --- a/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/SpringFunctionFluxConfigurationTests.java +++ b/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/SpringFunctionFluxConfigurationTests.java @@ -19,11 +19,13 @@ package org.springframework.cloud.function.deployer; import java.util.function.Function; import org.junit.After; +import org.junit.Assume; import org.junit.Before; import org.junit.Test; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.system.JavaVersion; import org.springframework.cloud.function.context.FunctionCatalog; import static org.assertj.core.api.Assertions.assertThat; @@ -41,6 +43,8 @@ public class SpringFunctionFluxConfigurationTests { @Before public void run() { + Assume.assumeTrue("Java > 8", + JavaVersion.getJavaVersion().isOlderThan(JavaVersion.NINE)); if (bootstrap == null) { bootstrap = new ApplicationBootstrap(); bootstrap.run(SpringFunctionFluxConfigurationTests.class,