Skip to content

Commit de662cf

Browse files
committed
update sample to use Spring DI for ExportHistory sample instead of static fields
1 parent 203bd7a commit de662cf

2 files changed

Lines changed: 31 additions & 21 deletions

File tree

samples/src/main/java/io/durabletask/samples/ExportHistorySample.java

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,54 +3,66 @@
33
package io.durabletask.samples;
44

55
import com.microsoft.durabletask.*;
6+
import com.microsoft.durabletask.exporthistory.client.ExportHistoryClient;
7+
import com.microsoft.durabletask.exporthistory.client.ExportHistoryClients;
68
import com.microsoft.durabletask.exporthistory.client.ExportHistoryWorkers;
79
import com.microsoft.durabletask.exporthistory.options.ExportHistoryStorageOptions;
810

911
import org.springframework.boot.SpringApplication;
1012
import org.springframework.boot.autoconfigure.SpringBootApplication;
13+
import org.springframework.context.annotation.Bean;
1114

1215
/**
1316
* Export History sample — Spring Boot web app with REST endpoints for managing export jobs.
1417
* <p>
1518
* Java equivalent of the .NET ExportHistoryWebApp sample.
1619
* <p>
1720
* Run: ./gradlew runExportHistorySample
18-
* API: http://localhost:8080/export-jobs
21+
* API: http://localhost:5009/export-jobs
1922
* <p>
2023
* Requires DTS emulator and Azurite (or Azure Storage).
2124
*/
2225
@SpringBootApplication
2326
public class ExportHistorySample {
2427

25-
// Shared instances — set in main(), read by controller
26-
static DurableTaskClient client;
27-
static ExportHistoryStorageOptions storageOptions;
28-
2928
public static void main(String[] args) {
30-
// Config
29+
System.out.println("Export History Web App starting...");
30+
System.out.println("REST API: http://localhost:5009/export-jobs");
31+
32+
// Use port 5009 to avoid conflict with DTS emulator on 8080
33+
System.setProperty("server.port", "5009");
34+
SpringApplication.run(ExportHistorySample.class, args);
35+
}
36+
37+
@Bean
38+
public ExportHistoryStorageOptions storageOptions() {
3139
String connStr = env("EXPORT_HISTORY_STORAGE_CONNECTION_STRING", "UseDevelopmentStorage=true");
3240
String container = env("EXPORT_HISTORY_CONTAINER_NAME", "export-history");
33-
34-
storageOptions = ExportHistoryStorageOptions.newBuilder()
41+
return ExportHistoryStorageOptions.newBuilder()
3542
.connectionString(connStr)
3643
.containerName(container)
3744
.build();
45+
}
3846

39-
// Client
40-
client = SampleUtils.newClientBuilder().build();
47+
@Bean
48+
public DurableTaskClient durableTaskClient() {
49+
return SampleUtils.newClientBuilder().build();
50+
}
4151

42-
// Worker — registers export history entity, orchestrators, activities
52+
@Bean(destroyMethod = "stop")
53+
public DurableTaskGrpcWorker durableTaskWorker(
54+
DurableTaskClient client, ExportHistoryStorageOptions storageOptions) {
4355
DurableTaskGrpcWorkerBuilder workerBuilder = SampleUtils.newWorkerBuilder();
4456
ExportHistoryWorkers.register(workerBuilder, client, storageOptions);
4557
DurableTaskGrpcWorker worker = workerBuilder.build();
4658
worker.start();
59+
return worker;
60+
}
4761

48-
System.out.println("Export History Web App started.");
49-
System.out.println("REST API: http://localhost:5009/export-jobs");
50-
51-
// Use port 5009 to avoid conflict with DTS emulator on 8080
52-
System.setProperty("server.port", "5009");
53-
SpringApplication.run(ExportHistorySample.class, args);
62+
@Bean
63+
public ExportHistoryClient exportHistoryClient(
64+
DurableTaskClient client, ExportHistoryStorageOptions storageOptions) {
65+
return ExportHistoryClients.create(client, storageOptions);
5466
}
5567

5668
private static String env(String name, String defaultValue) {

samples/src/main/java/io/durabletask/samples/ExportJobController.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
package io.durabletask.samples;
44

55
import com.microsoft.durabletask.exporthistory.client.ExportHistoryClient;
6-
import com.microsoft.durabletask.exporthistory.client.ExportHistoryClients;
76
import com.microsoft.durabletask.exporthistory.client.ExportHistoryJobClient;
87
import com.microsoft.durabletask.exporthistory.exception.ExportJobNotFoundException;
98
import com.microsoft.durabletask.exporthistory.models.*;
@@ -32,9 +31,8 @@ public class ExportJobController {
3231
private static final Logger logger = Logger.getLogger(ExportJobController.class.getName());
3332
private final ExportHistoryClient exportClient;
3433

35-
public ExportJobController() {
36-
this.exportClient = ExportHistoryClients.create(
37-
ExportHistorySample.client, ExportHistorySample.storageOptions);
34+
public ExportJobController(ExportHistoryClient exportClient) {
35+
this.exportClient = exportClient;
3836
}
3937

4038
@PostMapping

0 commit comments

Comments
 (0)