Skip to content

Commit efaadb4

Browse files
committed
validating managed beans for workflows and activities
1 parent 75015dc commit efaadb4

File tree

10 files changed

+70
-48
lines changed

10 files changed

+70
-48
lines changed

dapr-spring/dapr-spring-boot-autoconfigure/src/main/java/io/dapr/spring/boot/autoconfigure/client/DaprClientAutoConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,14 @@ DaprClient daprClient(DaprClientBuilder daprClientBuilder) {
6666
@Bean
6767
@ConditionalOnMissingBean
6868
DaprWorkflowClient daprWorkflowClient(DaprConnectionDetails daprConnectionDetails) {
69-
final Properties properties = createPropertiesFromConnectionDetails(daprConnectionDetails);
69+
Properties properties = createPropertiesFromConnectionDetails(daprConnectionDetails);
7070
return new DaprWorkflowClient(properties);
7171
}
7272

7373
@Bean
7474
@ConditionalOnMissingBean
7575
WorkflowRuntimeBuilder daprWorkflowRuntimeBuilder(DaprConnectionDetails daprConnectionDetails) {
76-
final Properties properties = createPropertiesFromConnectionDetails(daprConnectionDetails);
76+
Properties properties = createPropertiesFromConnectionDetails(daprConnectionDetails);
7777
return new WorkflowRuntimeBuilder(properties);
7878
}
7979

dapr-spring/dapr-spring-boot-autoconfigure/src/test/java/io/dapr/spring/boot/autoconfigure/client/DaprWorkflowsRegistrationTests.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.dapr.spring.boot.autoconfigure.client.workflows.TestActivity;
44
import io.dapr.spring.boot.autoconfigure.client.workflows.TestWorkflow;
55
import io.dapr.workflows.client.DaprWorkflowClient;
6+
import io.dapr.workflows.runtime.WorkflowRuntimeBuilder;
67
import org.junit.jupiter.api.Test;
78
import org.springframework.beans.factory.annotation.Autowired;
89
import org.springframework.boot.test.context.SpringBootTest;
@@ -15,9 +16,29 @@ public class DaprWorkflowsRegistrationTests {
1516
@Autowired
1617
private DaprWorkflowClient daprWorkflowClient;
1718

19+
@Autowired
20+
private WorkflowRuntimeBuilder workflowRuntimeBuilder;
21+
22+
@Autowired
23+
private TestActivity testActivity;
24+
25+
@Autowired
26+
private TestWorkflow testWorkflow;
27+
1828
@Test
19-
public void doThat(){
29+
public void testWorkflowInjection(){
30+
31+
//I cannot test here if the client works, as it needs the runtime
2032
assertNotNull(daprWorkflowClient);
21-
33+
34+
//@TODO: there is no way to assert the runtime and its registered workflows and activities
35+
assertNotNull(workflowRuntimeBuilder);
36+
37+
//Check that both Activities and Workflows are managed beans
38+
assertNotNull(testActivity);
39+
assertNotNull(testWorkflow);
40+
assertNotNull(testActivity.getRestTemplate());
41+
assertNotNull(testWorkflow.getRestTemplate());
42+
2243
}
2344
}

dapr-spring/dapr-spring-boot-autoconfigure/src/test/java/io/dapr/spring/boot/autoconfigure/client/WorkflowTestApplication.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,22 @@
33
import io.dapr.spring.workflows.config.EnableDaprWorkflows;
44
import org.springframework.boot.SpringApplication;
55
import org.springframework.boot.autoconfigure.SpringBootApplication;
6+
import org.springframework.context.annotation.Bean;
7+
import org.springframework.context.annotation.Configuration;
8+
import org.springframework.web.client.RestTemplate;
69

710
@SpringBootApplication
811
@EnableDaprWorkflows
912
public class WorkflowTestApplication {
1013
public static void main(String[] args) {
1114
SpringApplication.run(WorkflowTestApplication.class, args);
15+
}
1216

17+
@Configuration
18+
static class Config {
19+
@Bean
20+
RestTemplate restTemplate(){
21+
return new RestTemplate();
22+
}
1323
}
1424
}

dapr-spring/dapr-spring-boot-autoconfigure/src/test/java/io/dapr/spring/boot/autoconfigure/client/workflows/TestActivity.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,20 @@
22

33
import io.dapr.workflows.runtime.WorkflowActivity;
44
import io.dapr.workflows.runtime.WorkflowActivityContext;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.web.client.RestTemplate;
57

68
public class TestActivity implements WorkflowActivity {
9+
10+
@Autowired
11+
private RestTemplate restTemplate;
12+
713
@Override
814
public Object run(WorkflowActivityContext ctx) {
9-
return null;
15+
return "OK";
16+
}
17+
18+
public RestTemplate getRestTemplate() {
19+
return restTemplate;
1020
}
1121
}

dapr-spring/dapr-spring-boot-autoconfigure/src/test/java/io/dapr/spring/boot/autoconfigure/client/workflows/TestWorkflow.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,22 @@
22

33
import io.dapr.workflows.Workflow;
44
import io.dapr.workflows.WorkflowStub;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.web.client.RestTemplate;
57

68
public class TestWorkflow extends Workflow {
79

10+
@Autowired
11+
private RestTemplate restTemplate;
12+
813
@Override
914
public WorkflowStub create() {
10-
return null;
15+
return ctx -> {
16+
ctx.callActivity(TestActivity.class.getName(), null).await();
17+
};
18+
}
19+
20+
public RestTemplate getRestTemplate() {
21+
return restTemplate;
1122
}
1223
}

dapr-spring/dapr-spring-workflows/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</parent>
1111

1212
<artifactId>dapr-spring-workflows</artifactId>
13-
<name>dapr-spring-workflow</name>
13+
<name>dapr-spring-workflows</name>
1414
<description>Dapr Spring Workflows</description>
1515
<packaging>jar</packaging>
1616

dapr-spring/dapr-spring-workflows/src/main/java/io/dapr/spring/workflows/Operation.java

Lines changed: 0 additions & 17 deletions
This file was deleted.

dapr-spring/dapr-spring-workflows/src/main/java/io/dapr/spring/workflows/Workflow.java

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,34 +10,32 @@
1010
import org.springframework.beans.factory.annotation.Autowired;
1111
import org.springframework.context.ApplicationContext;
1212
import org.springframework.context.ApplicationContextAware;
13-
import org.springframework.context.annotation.Bean;
14-
import org.springframework.context.annotation.ComponentScan;
1513
import org.springframework.context.annotation.Configuration;
16-
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
1714

1815
import java.util.Map;
1916

2017
@Configuration
21-
@ComponentScan("io.dapr.spring.workflows.config")
22-
public class DaprWorkflowsConfig implements ApplicationContextAware {
23-
private static final Logger LOGGER = LoggerFactory.getLogger(DaprWorkflowsConfig.class);
24-
@Autowired
18+
public class DaprWorkflowsConfiguration implements ApplicationContextAware {
19+
private static final Logger LOGGER = LoggerFactory.getLogger(DaprWorkflowsConfiguration.class);
20+
2521
private WorkflowRuntimeBuilder workflowRuntimeBuilder;
2622

27-
private static ApplicationContext context;
23+
public DaprWorkflowsConfiguration(WorkflowRuntimeBuilder workflowRuntimeBuilder) {
24+
this.workflowRuntimeBuilder = workflowRuntimeBuilder;
25+
}
2826

2927
/**
3028
* Register workflows and activities to the workflowRuntimeBuilder.
3129
*/
32-
public void registerWorkflowsAndActivities() {
30+
public void registerWorkflowsAndActivities(ApplicationContext applicationContext) {
3331
LOGGER.info("Registering Dapr Workflows and Activities");
34-
Map<String, Workflow> workflowBeans = context.getBeansOfType(Workflow.class);
32+
Map<String, Workflow> workflowBeans = applicationContext.getBeansOfType(Workflow.class);
3533
for (Workflow w : workflowBeans.values()) {
3634
LOGGER.info("Dapr Workflow: '{}' registered", w.getClass().getName());
3735
workflowRuntimeBuilder.registerWorkflow(w.getClass());
3836
}
3937

40-
Map<String, WorkflowActivity> workflowActivitiesBeans = context.getBeansOfType(WorkflowActivity.class);
38+
Map<String, WorkflowActivity> workflowActivitiesBeans = applicationContext.getBeansOfType(WorkflowActivity.class);
4139
for (WorkflowActivity a : workflowActivitiesBeans.values()) {
4240
LOGGER.info("Dapr Workflow Activity: '{}' registered", a.getClass().getName());
4341
workflowRuntimeBuilder.registerActivity(a.getClass());
@@ -51,7 +49,6 @@ public void registerWorkflowsAndActivities() {
5149

5250
@Override
5351
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
54-
context = applicationContext;
55-
registerWorkflowsAndActivities();
52+
registerWorkflowsAndActivities(applicationContext);
5653
}
5754
}

dapr-spring/dapr-spring-workflows/src/main/java/io/dapr/spring/workflows/config/EnableDaprWorkflows.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@
1111

1212
@Retention(RUNTIME)
1313
@Target(TYPE)
14-
@Import(DaprWorkflowsConfig.class)
14+
@Import(DaprWorkflowsConfiguration.class)
1515
public @interface EnableDaprWorkflows {
1616
}

0 commit comments

Comments
 (0)