More tests for auto detect of start class
This commit is contained in:
@@ -47,6 +47,7 @@ import org.springframework.beans.factory.config.BeanPostProcessor;
|
|||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.loader.JarLauncher;
|
import org.springframework.boot.loader.JarLauncher;
|
||||||
import org.springframework.boot.loader.archive.Archive;
|
import org.springframework.boot.loader.archive.Archive;
|
||||||
|
import org.springframework.boot.loader.archive.ExplodedArchive;
|
||||||
import org.springframework.boot.loader.archive.JarFileArchive;
|
import org.springframework.boot.loader.archive.JarFileArchive;
|
||||||
import org.springframework.cloud.deployer.resource.support.DelegatingResourceLoader;
|
import org.springframework.cloud.deployer.resource.support.DelegatingResourceLoader;
|
||||||
import org.springframework.cloud.function.context.FunctionRegistration;
|
import org.springframework.cloud.function.context.FunctionRegistration;
|
||||||
@@ -160,7 +161,7 @@ class FunctionCreatorConfiguration {
|
|||||||
|
|
||||||
private class ComputeLauncher extends JarLauncher {
|
private class ComputeLauncher extends JarLauncher {
|
||||||
|
|
||||||
public ComputeLauncher(JarFileArchive archive) {
|
public ComputeLauncher(Archive archive) {
|
||||||
super(archive);
|
super(archive);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,7 +169,8 @@ class FunctionCreatorConfiguration {
|
|||||||
public String getMainClass() throws Exception {
|
public String getMainClass() throws Exception {
|
||||||
try {
|
try {
|
||||||
return super.getMainClass();
|
return super.getMainClass();
|
||||||
} catch (Exception e) {
|
}
|
||||||
|
catch (Exception e) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -252,9 +254,11 @@ class FunctionCreatorConfiguration {
|
|||||||
try {
|
try {
|
||||||
File file = new File(url.toURI());
|
File file = new File(url.toURI());
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
JarFileArchive archive = new JarFileArchive(file);
|
Archive archive = file.getName().endsWith(".jar")
|
||||||
|
? new JarFileArchive(file)
|
||||||
|
: new ExplodedArchive(file);
|
||||||
String main = new ComputeLauncher(archive).getMainClass();
|
String main = new ComputeLauncher(archive).getMainClass();
|
||||||
if (main !=null) {
|
if (main != null) {
|
||||||
return main;
|
return main;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -282,8 +286,13 @@ class FunctionCreatorConfiguration {
|
|||||||
return Collections.singletonList(url);
|
return Collections.singletonList(url);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
JarFileArchive archive = new JarFileArchive(new File(url.toURI()));
|
File file = new File(url.toURI());
|
||||||
return Arrays.asList(new ComputeLauncher(archive).getClassLoaderUrls());
|
if (file.exists()) {
|
||||||
|
JarFileArchive archive = new JarFileArchive(file);
|
||||||
|
return Arrays
|
||||||
|
.asList(new ComputeLauncher(archive).getClassLoaderUrls());
|
||||||
|
}
|
||||||
|
return Collections.singletonList(url);
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
throw new IllegalStateException("Cannot create class loader for " + url,
|
throw new IllegalStateException("Cannot create class loader for " + url,
|
||||||
|
|||||||
@@ -59,6 +59,21 @@ public abstract class FunctionCreatorConfigurationTests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EnableAutoConfiguration
|
||||||
|
@TestPropertySource(properties = {
|
||||||
|
"function.location=app:classpath,file:target/test-classes,file:target/test-classes/app",
|
||||||
|
"function.bean=myDoubler" })
|
||||||
|
public static class SingleFunctionWithAutoMainTests
|
||||||
|
extends FunctionCreatorConfigurationTests {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDouble() {
|
||||||
|
Function<Flux<Integer>, Flux<Integer>> function = catalog
|
||||||
|
.lookup(Function.class, "function0");
|
||||||
|
assertThat(function.apply(Flux.just(2)).blockFirst()).isEqualTo(4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@EnableAutoConfiguration
|
@EnableAutoConfiguration
|
||||||
@TestPropertySource(properties = { "function.location=app:classpath",
|
@TestPropertySource(properties = { "function.location=app:classpath",
|
||||||
"function.bean=org.springframework.cloud.function.test.SpringDoubler" })
|
"function.bean=org.springframework.cloud.function.test.SpringDoubler" })
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
Manifest-Version: 1.0
|
||||||
|
Implementation-Title: function-file-sample
|
||||||
|
Implementation-Version: 1.0.0.M1
|
||||||
|
Archiver-Version: Plexus Archiver
|
||||||
|
Built-By: dsyer
|
||||||
|
Implementation-Vendor-Id: com.example
|
||||||
|
Spring-Boot-Version: 1.5.12.RELEASE
|
||||||
|
Implementation-Vendor: Pivotal Software, Inc.
|
||||||
|
Main-Class: org.springframework.boot.loader.JarLauncher
|
||||||
|
Start-Class: org.springframework.cloud.function.test.FunctionApp
|
||||||
|
Created-By: Apache Maven 3.5.0
|
||||||
|
Build-Jdk: 1.8.0_131
|
||||||
|
Implementation-URL: http://projects.spring.io/spring-boot/function-sam
|
||||||
|
ple/
|
||||||
Reference in New Issue
Block a user