Skip to content

Commit abaacd0

Browse files
committed
[Fix #211] Adding Uni and Multi converter
Signed-off-by: fjtirado <ftirados@redhat.com>
1 parent 9fdee42 commit abaacd0

File tree

7 files changed

+90
-0
lines changed

7 files changed

+90
-0
lines changed

core/deployment/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@
2929
<groupId>io.quarkus</groupId>
3030
<artifactId>quarkus-jackson-deployment</artifactId>
3131
</dependency>
32+
<dependency>
33+
<groupId>io.serverlessworkflow</groupId>
34+
<artifactId>serverlessworkflow-experimental-lambda</artifactId>
35+
</dependency>
3236
<dependency>
3337
<groupId>io.quarkus</groupId>
3438
<artifactId>quarkus-rest-client-jackson-deployment</artifactId>

core/deployment/src/main/java/io/quarkiverse/flow/deployment/FlowNativeProcessor.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.quarkiverse.flow.deployment;
22

3+
import io.quarkiverse.flow.converters.Multi2CompletableFuture;
4+
import io.quarkiverse.flow.converters.Uni2CompletableFuture;
35
import io.quarkiverse.flow.providers.MetadataPropagationRequestDecorator;
46
import io.quarkus.deployment.annotations.BuildProducer;
57
import io.quarkus.deployment.annotations.BuildStep;
@@ -9,6 +11,7 @@
911
import io.serverlessworkflow.impl.events.EventPublisher;
1012
import io.serverlessworkflow.impl.events.InMemoryEvents;
1113
import io.serverlessworkflow.impl.executors.TaskExecutorFactory;
14+
import io.serverlessworkflow.impl.executors.func.DataTypeConverter;
1215
import io.serverlessworkflow.impl.executors.func.JavaTaskExecutorFactory;
1316
import io.serverlessworkflow.impl.executors.http.HttpRequestDecorator;
1417
import io.serverlessworkflow.impl.expressions.ExpressionFactory;
@@ -41,6 +44,8 @@ void registerSDKServiceProviders(BuildProducer<ServiceProviderBuildItem> sp) {
4144
JacksonModelFactory.class.getName()));
4245
sp.produce(new ServiceProviderBuildItem(HttpRequestDecorator.class.getName(),
4346
MetadataPropagationRequestDecorator.class.getName()));
47+
sp.produce(new ServiceProviderBuildItem(DataTypeConverter.class.getName(),
48+
Uni2CompletableFuture.class.getName(), Multi2CompletableFuture.class.getName()));
4449
}
4550

4651
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package io.quarkiverse.flow.it;
2+
3+
import jakarta.enterprise.context.ApplicationScoped;
4+
5+
import io.quarkiverse.flow.Flow;
6+
import io.serverlessworkflow.api.types.Workflow;
7+
import io.serverlessworkflow.fluent.func.FuncWorkflowBuilder;
8+
import io.smallrye.mutiny.Uni;
9+
10+
@ApplicationScoped
11+
public class UniWorkflow extends Flow {
12+
13+
public Workflow descriptor() {
14+
return FuncWorkflowBuilder.workflow("uniTest")
15+
.tasks(tasks -> tasks.function(f -> f.function(t -> Uni.createFrom().item("Javierito"))))
16+
.build();
17+
}
18+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.quarkiverse.flow.it;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import jakarta.inject.Inject;
6+
7+
import org.junit.jupiter.api.Test;
8+
9+
import io.quarkus.test.junit.QuarkusTest;
10+
11+
@QuarkusTest
12+
public class UniWorkflowTest {
13+
14+
@Inject
15+
UniWorkflow def;
16+
17+
@Test
18+
void testUni() {
19+
assertThat(def.startInstance().await().indefinitely().as(String.class).orElseThrow()).isEqualTo("Javierito");
20+
}
21+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package io.quarkiverse.flow.converters;
2+
3+
import java.util.concurrent.CompletableFuture;
4+
5+
import io.serverlessworkflow.impl.executors.func.DataTypeConverter;
6+
import io.smallrye.mutiny.Multi;
7+
8+
@SuppressWarnings("rawtypes")
9+
public class Multi2CompletableFuture implements DataTypeConverter<Multi, CompletableFuture> {
10+
11+
@Override
12+
public CompletableFuture apply(Multi t) {
13+
return t.toUni().subscribeAsCompletionStage();
14+
}
15+
16+
@Override
17+
public Class<Multi> sourceType() {
18+
return Multi.class;
19+
}
20+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package io.quarkiverse.flow.converters;
2+
3+
import java.util.concurrent.CompletableFuture;
4+
5+
import io.serverlessworkflow.impl.executors.func.DataTypeConverter;
6+
import io.smallrye.mutiny.Uni;
7+
8+
@SuppressWarnings("rawtypes")
9+
public class Uni2CompletableFuture implements DataTypeConverter<Uni, CompletableFuture> {
10+
11+
@Override
12+
public CompletableFuture apply(Uni t) {
13+
return t.subscribeAsCompletionStage();
14+
}
15+
16+
@Override
17+
public Class<Uni> sourceType() {
18+
return Uni.class;
19+
}
20+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
io.quarkiverse.flow.converters.Uni2CompletableFuture
2+
io.quarkiverse.flow.converters.Multi2CompletableFuture

0 commit comments

Comments
 (0)