GH-434 Added generic FunctionInvoker for AWS
- Added generic FunctionInvoker capable of handling the request generically without requiring user to implemen specific AWS request handler Resolves #434
This commit is contained in:
@@ -79,6 +79,25 @@ public class BeanFactoryAwareFunctionRegistryMultiInOutTests {
|
||||
System.out.println(result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMultiInputWithPojoConversion() {
|
||||
FunctionCatalog catalog = this.configureCatalog();
|
||||
Function<Tuple2<Flux<CartEvent>, Flux<CheckoutEvent>>, Flux<OrderEvent>> multiInputFunction =
|
||||
catalog.lookup("thomas", "application/json");
|
||||
CartEvent carEvent = new CartEvent();
|
||||
carEvent.setCarEvent("carEvent");
|
||||
Flux<CartEvent> carEventStream = Flux.just(carEvent);
|
||||
|
||||
CheckoutEvent checkoutEvent = new CheckoutEvent();
|
||||
checkoutEvent.setCheckoutEvent("checkoutEvent");
|
||||
Flux<CheckoutEvent> checkoutEventStream = Flux.just(checkoutEvent);
|
||||
|
||||
Tuple2<Flux<CartEvent>, Flux<CheckoutEvent>> streams = Tuples.of(carEventStream, checkoutEventStream);
|
||||
|
||||
List<OrderEvent> result = multiInputFunction.apply(streams).collectList().block();
|
||||
System.out.println(result);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@Test
|
||||
@Ignore
|
||||
@@ -380,6 +399,56 @@ public class BeanFactoryAwareFunctionRegistryMultiInOutTests {
|
||||
return new Flux[] { repeated, sum };
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Function<Tuple2<Flux<CartEvent>, Flux<CheckoutEvent>>, Flux<OrderEvent>> thomas() {
|
||||
return tuple -> {
|
||||
Flux<CartEvent> cartEventStream = tuple.getT1();
|
||||
Flux<CheckoutEvent> checkoutEventStream = tuple.getT2();
|
||||
|
||||
return Flux.zip(cartEventStream, checkoutEventStream, (cartEvent, checkoutEvent) -> {
|
||||
OrderEvent oe = new OrderEvent();
|
||||
oe.setOrderEvent(cartEvent.toString() + "- " + checkoutEvent.toString());
|
||||
return oe;
|
||||
});
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public static class CartEvent {
|
||||
private String carEvent;
|
||||
|
||||
public String getCarEvent() {
|
||||
return carEvent;
|
||||
}
|
||||
|
||||
public void setCarEvent(String carEvent) {
|
||||
this.carEvent = carEvent;
|
||||
}
|
||||
}
|
||||
|
||||
public static class CheckoutEvent {
|
||||
private String checkoutEvent;
|
||||
|
||||
public String getCheckoutEvent() {
|
||||
return checkoutEvent;
|
||||
}
|
||||
|
||||
public void setCheckoutEvent(String checkoutEvent) {
|
||||
this.checkoutEvent = checkoutEvent;
|
||||
}
|
||||
}
|
||||
|
||||
public static class OrderEvent {
|
||||
private String orderEvent;
|
||||
|
||||
public String getOrderEvent() {
|
||||
return orderEvent;
|
||||
}
|
||||
|
||||
public void setOrderEvent(String orderEvent) {
|
||||
this.orderEvent = orderEvent;
|
||||
}
|
||||
}
|
||||
|
||||
public static class Person {
|
||||
|
||||
@@ -66,7 +66,7 @@ public class BeanFactoryAwarePojoFunctionRegistryTests {
|
||||
assertThat(f2message.apply(MessageBuilder.withPayload("message").build())).isEqualTo("MESSAGE");
|
||||
|
||||
Function<Message<String>, Message<byte[]>> f2messageReturned = catalog.lookup("myFunction", "application/json");
|
||||
assertThat(new String(f2messageReturned.apply(MessageBuilder.withPayload("message").build()).getPayload())).isEqualTo("\"MESSAGE\"");
|
||||
assertThat(new String(f2messageReturned.apply(MessageBuilder.withPayload("message").build()).getPayload())).isEqualTo("MESSAGE");
|
||||
|
||||
Function<Flux<String>, Flux<String>> f3 = catalog.lookup("myFunction");
|
||||
assertThat(f3.apply(Flux.just("foo")).blockFirst()).isEqualTo("FOO");
|
||||
@@ -89,7 +89,7 @@ public class BeanFactoryAwarePojoFunctionRegistryTests {
|
||||
assertThat(f2message.apply(MessageBuilder.withPayload("message").build())).isEqualTo("MESSAGE");
|
||||
|
||||
Function<Message<String>, Message<byte[]>> f2messageReturned = catalog.lookup("myFunctionLike", "application/json");
|
||||
assertThat(new String(f2messageReturned.apply(MessageBuilder.withPayload("message").build()).getPayload())).isEqualTo("\"MESSAGE\"");
|
||||
assertThat(new String(f2messageReturned.apply(MessageBuilder.withPayload("message").build()).getPayload())).isEqualTo("MESSAGE");
|
||||
|
||||
Function<Flux<String>, Flux<String>> f3 = catalog.lookup("myFunctionLike");
|
||||
assertThat(f3.apply(Flux.just("foo")).blockFirst()).isEqualTo("FOO");
|
||||
|
||||
Reference in New Issue
Block a user