Skip to content

Commit cb4bd53

Browse files
committed
Appĺying Codestart to Quarkus Dapr Extension
1 parent 5f00102 commit cb4bd53

10 files changed

Lines changed: 176 additions & 2 deletions

File tree

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,4 @@ jobs:
4949

5050
- name: Build with Native
5151
if: success()
52-
run: mvn -Dnative -Dquarkus.native.container-build=true -B verify --file pom.xml
52+
run: mvn -Dnative -Dquarkus.native.container-build=true -B install --file pom.xml

integration-tests/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@
2828
<artifactId>rest-assured</artifactId>
2929
<scope>test</scope>
3030
</dependency>
31+
<dependency>
32+
<groupId>io.quarkus</groupId>
33+
<artifactId>quarkus-devtools-testing</artifactId>
34+
<scope>test</scope>
35+
</dependency>
3136
</dependencies>
3237
<build>
3338
<plugins>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package codestarts;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.junit.jupiter.api.extension.RegisterExtension;
5+
6+
import io.quarkus.devtools.codestarts.quarkus.QuarkusCodestartCatalog;
7+
import io.quarkus.devtools.testing.codestarts.QuarkusCodestartTest;
8+
9+
public class QuarkusDaprCodestartsTest {
10+
11+
@RegisterExtension
12+
public static QuarkusCodestartTest codestartTest = QuarkusCodestartTest.builder()
13+
.languages(QuarkusCodestartCatalog.Language.JAVA)
14+
.setupStandaloneExtensionTest("io.quarkiverse.dapr:quarkus-dapr")
15+
.build();
16+
17+
@Test
18+
void testContent() throws Throwable {
19+
codestartTest.checkGeneratedSource("org.acme.DaprResource");
20+
}
21+
22+
@Test
23+
void testFile() throws Throwable {
24+
codestartTest
25+
.assertThatGeneratedFile(QuarkusCodestartCatalog.Language.JAVA,
26+
"src/main/java/ilove/quark/us/DaprResource.java")
27+
.content()
28+
.contains("@Path");
29+
}
30+
31+
@Test
32+
void buildAllProjects() throws Throwable {
33+
codestartTest.buildAllProjects();
34+
}
35+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package ilove.quark.us;
2+
3+
import io.dapr.Topic;
4+
import io.dapr.client.domain.CloudEvent;
5+
import io.dapr.client.domain.State;
6+
import io.quarkiverse.dapr.core.SyncDaprClient;
7+
import jakarta.inject.Inject;
8+
import jakarta.ws.rs.GET;
9+
import jakarta.ws.rs.POST;
10+
import jakarta.ws.rs.Path;
11+
import jakarta.ws.rs.core.Response;
12+
import java.util.Map;
13+
import java.util.UUID;
14+
15+
@Path("/dapr")
16+
public class DaprResource {
17+
18+
@Inject
19+
SyncDaprClient client;
20+
21+
@POST
22+
@Path("/state")
23+
public Response saveState() {
24+
client.saveState("kvstore", "identity", UUID.randomUUID().toString());
25+
return Response.ok().build();
26+
}
27+
28+
@GET
29+
@Path("/state")
30+
public Response getState() {
31+
State<String> state = client.getState("kvstore", "identity", String.class);
32+
return Response.ok(Map.of("identity", state.getValue())).build();
33+
}
34+
35+
@POST
36+
@Path("/pub")
37+
public void pub() {
38+
client.publishEvent("pubsub", "topicName", "Hello from Quarkus!");
39+
}
40+
41+
@POST
42+
@Topic(name = "topicName")
43+
@Path("/sub")
44+
public void sub(CloudEvent<String> event) {
45+
System.out.println("Received event: " + event.getData());
46+
}
47+
}

runtime/pom.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,26 @@
7575
</annotationProcessorPaths>
7676
</configuration>
7777
</plugin>
78+
<plugin>
79+
<artifactId>maven-jar-plugin</artifactId>
80+
<executions>
81+
<execution>
82+
<id>generate-codestart-jar</id>
83+
<phase>generate-resources</phase>
84+
<goals>
85+
<goal>jar</goal>
86+
</goals>
87+
<configuration>
88+
<classesDirectory>${project.basedir}/src/main</classesDirectory>
89+
<includes>
90+
<include>codestarts/**</include>
91+
</includes>
92+
<classifier>codestarts</classifier>
93+
<skipIfEmpty>true</skipIfEmpty>
94+
</configuration>
95+
</execution>
96+
</executions>
97+
</plugin>
7898
</plugins>
7999
</build>
80100
</project>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
name: quarkus-dapr-codestart
2+
ref: quarkus-dapr
3+
type: code
4+
tags: extension-codestart
5+
metadata:
6+
title: Dapr Extension Codestart
7+
description: This codestart generates a Quarkus Dapr Extension
8+
related-guide-section: https://docs.quarkiverse.io/quarkus-dapr/dev/index.html
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package org.acme;
2+
3+
import io.dapr.Topic;
4+
import io.dapr.client.domain.CloudEvent;
5+
import io.dapr.client.domain.State;
6+
import io.quarkiverse.dapr.core.SyncDaprClient;
7+
import jakarta.inject.Inject;
8+
import jakarta.ws.rs.GET;
9+
import jakarta.ws.rs.POST;
10+
import jakarta.ws.rs.Path;
11+
import jakarta.ws.rs.core.Response;
12+
import java.util.Map;
13+
import java.util.UUID;
14+
15+
@Path("/dapr")
16+
public class DaprResource {
17+
18+
@Inject
19+
SyncDaprClient client;
20+
21+
@POST
22+
@Path("/state")
23+
public Response saveState() {
24+
client.saveState("kvstore", "identity", UUID.randomUUID().toString());
25+
return Response.ok().build();
26+
}
27+
28+
@GET
29+
@Path("/state")
30+
public Response getState() {
31+
State<String> state = client.getState("kvstore", "identity", String.class);
32+
return Response.ok(Map.of("identity", state.getValue())).build();
33+
}
34+
35+
@POST
36+
@Path("/pub")
37+
public void pub() {
38+
client.publishEvent("pubsub", "topicName", "Hello from Quarkus!");
39+
}
40+
41+
@POST
42+
@Topic(name = "topicName")
43+
@Path("/sub")
44+
public void sub(CloudEvent<String> event) {
45+
System.out.println("Received event: " + event.getData());
46+
}
47+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{#include readme-header /}

runtime/src/main/resources/META-INF/quarkus-extension.yaml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
name: Dapr
2-
description: Dapr SDK
2+
description: Dapr for Quarkus
3+
artifact: ${project.groupId}:${project.artifactId}:${project.version}
34
metadata:
45
keywords:
56
- dapr
@@ -9,3 +10,8 @@ metadata:
910
categories:
1011
- "miscellaneous"
1112
status: "preview"
13+
codestart:
14+
name: "quarkus-dapr"
15+
languages:
16+
- "java"
17+
artifact: "io.quarkiverse.dapr:quarkus-dapr:codestarts:jar:${project.version}"
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
quarkus:
2+
dapr:
3+
devservices:
4+
enabled: true
5+
default-pub-sub: pubsub

0 commit comments

Comments
 (0)