Add FunctionFactoryMetadata interface for type discovery

The compiled functions implement that interface which means you can inspect
the signature of the method that created them and discover its
generic types.
This commit is contained in:
Dave Syer
2017-05-26 10:09:47 +01:00
parent 5a7c95bd97
commit 99c7b995e0
27 changed files with 551 additions and 55 deletions

View File

@@ -36,6 +36,7 @@ import static org.assertj.core.api.Assertions.assertThat;
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT,
properties = {
"spring.cloud.function.compile.test.lambda=com.example.SampleCompiledConsumerTests.Reference::set",
"spring.cloud.function.compile.test.inputType=String",
"spring.cloud.function.compile.test.type=consumer"
})
public class SampleCompiledConsumerTests {

View File

@@ -31,8 +31,10 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Mark Fisher
*/
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT,
properties = "spring.cloud.function.compile.test.lambda=f->f.map(s->s+\"!!!\")")
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, properties = {
"spring.cloud.function.compile.test.lambda=f->f.map(s->s+\"!!!\")",
"spring.cloud.function.compile.test.inputType=Flux<String>",
"spring.cloud.function.compile.test.outputType=Flux<String>" })
public class SampleCompiledFunctionTests {
@LocalServerPort
@@ -41,8 +43,8 @@ public class SampleCompiledFunctionTests {
@Test
public void lowercase() {
assertThat(new TestRestTemplate().postForObject(
"http://localhost:" + port + "/test", "it works",
String.class)).isEqualTo("it works!!!");
"http://localhost:" + port + "/test", "it works", String.class))
.isEqualTo("it works!!!");
}
}