Skip to content

Commit 2b0779e

Browse files
authored
Web Bundler 2.0 and / data mapping (#685)
1 parent d736997 commit 2b0779e

File tree

8 files changed

+56
-31
lines changed

8 files changed

+56
-31
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
<quarkus-qute-web.version>3.4.4</quarkus-qute-web.version>
4242
<asciidoctorj.version>3.0.1</asciidoctorj.version>
4343
<asciidoctorj-diagram.version>3.1.0</asciidoctorj-diagram.version>
44-
<quarkus-web-bundler.version>2.0.0.CR7</quarkus-web-bundler.version>
44+
<quarkus-web-bundler.version>2.0.0</quarkus-web-bundler.version>
4545
<asciidoc-java.version>1.2.12</asciidoc-java.version>
4646
<jandex.version>3.5.3</jandex.version>
4747
<jsoup.version>1.21.2</jsoup.version>

roq-data/deployment/src/main/java/io/quarkiverse/roq/data/deployment/RoqDataBeanProcessor.java

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -51,37 +51,37 @@ void generateSyntheticBeans(RoqDataConfig config,
5151

5252
var mapOfFolders = new HashMap<String, TreeMap<String, Object>>();
5353
for (RoqDataJsonBuildItem roqData : roqDataJsonBuildItems) {
54-
if (roqData.getName().contains("_")) {
55-
// Subfolder case
54+
if (roqData.getName().contains("/")) {
55+
// Subfolder grouping case
5656
// Test that there is only one level of subfolder
57-
long count = roqData.getName().chars().filter(c -> c == '_').count();
58-
if (count > 1) {
59-
LOG.info("Unsupported more than one subfolder %s".formatted(roqData.getName()));
57+
long count = roqData.getName().chars().filter(c -> c == '/').count();
58+
if (count == 1) {
59+
var fileName = roqData.getName();
60+
var key = fileName.substring(fileName.indexOf("/") + 1);
61+
var folderName = fileName.substring(0, fileName.lastIndexOf('/'));
62+
mapOfFolders.computeIfAbsent(folderName, ignored -> new TreeMap<>()).put(key, roqData.getData());
63+
} else if (count > 1) {
64+
LOG.debugf(
65+
"Deeply nested data files are not processed as grouped structure: %s (only one level of nesting is supported)",
66+
roqData.getName());
6067
}
61-
62-
var fileName = roqData.getName();
63-
var key = fileName.substring(fileName.indexOf("_") + 1);
64-
65-
var folderName = fileName.substring(0, fileName.lastIndexOf('_'));
66-
mapOfFolders.computeIfAbsent(folderName, ignored -> new TreeMap<>()).put(key, roqData.getData());
68+
}
69+
// Let's still add the file name mapping
70+
final Class<?> cl;
71+
if (roqData.getData() instanceof JsonObject) {
72+
cl = JsonObject.class;
73+
} else if (roqData.getData() instanceof JsonArray) {
74+
cl = JsonArray.class;
6775
} else {
68-
// Files at the root of data folder
69-
final Class<?> cl;
70-
if (roqData.getData() instanceof JsonObject) {
71-
cl = JsonObject.class;
72-
} else if (roqData.getData() instanceof JsonArray) {
73-
cl = JsonArray.class;
74-
} else {
75-
throw new IllegalStateException("Unsupported Json data bean type for %s".formatted(roqData.getName()));
76-
}
77-
beansProducer.produce(SyntheticBeanBuildItem.configure(cl)
78-
.scope(ApplicationScoped.class)
79-
.named(roqData.getName())
80-
.runtimeValue(recorder.createRoqDataJson(roqData.getData()))
81-
.unremovable()
82-
.done());
83-
beans.add(" - %s[name=%s]*".formatted(cl.getName(), roqData.getName()));
76+
throw new IllegalStateException("Unsupported Json data bean type for %s".formatted(roqData.getName()));
8477
}
78+
beansProducer.produce(SyntheticBeanBuildItem.configure(cl)
79+
.scope(ApplicationScoped.class)
80+
.named(roqData.getName())
81+
.runtimeValue(recorder.createRoqDataJson(roqData.getData()))
82+
.unremovable()
83+
.done());
84+
beans.add(" - %s[name=%s]*".formatted(cl.getName(), roqData.getName()));
8585
}
8686

8787
for (RoqDataBeanBuildItem beanBuildItem : dataBeanBuildItems) {

roq-data/deployment/src/main/java/io/quarkiverse/roq/data/deployment/RoqDataReaderProcessor.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package io.quarkiverse.roq.data.deployment;
22

3+
import static io.quarkiverse.roq.util.PathUtils.removeExtension;
4+
import static io.quarkiverse.roq.util.PathUtils.toUnixPath;
5+
36
import java.io.IOException;
47
import java.io.UncheckedIOException;
58
import java.nio.file.Files;
@@ -226,7 +229,7 @@ private static Consumer<Path> addRoqDataBuildItem(
226229
Path rootDir,
227230
Map<String, RoqDataBuildItem> items) {
228231
return file -> {
229-
var name = rootDir.relativize(file).toString().replaceAll("\\..*", "").replaceAll("/", "_");
232+
var name = toUnixPath(removeExtension(rootDir.relativize(file).toString()));
230233
if (items.containsKey(name)) {
231234
throw new DataConflictException("Multiple data files found for the name: '%s'.".formatted(name));
232235
}

roq-data/deployment/src/test/java/io/quarkiverse/roq/data/test/RoqDataInjectableBeanLookingCustomLocationTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,18 @@ public class RoqDataInjectableBeanLookingCustomLocationTest {
2727
@Named("bar")
2828
JsonObject bar;
2929

30+
@Inject
31+
@Named("dir/bar")
32+
JsonObject dirBar;
33+
34+
@Inject
35+
@Named("dir/foo")
36+
JsonObject dirFoo;
37+
38+
@Inject
39+
@Named("dir")
40+
JsonObject dir;
41+
3042
@Inject
3143
@Named("baz")
3244
JsonObject baz;
@@ -51,4 +63,12 @@ public void baz() {
5163
Assertions.assertEquals("Super Heroes from Yml custom", fromYml);
5264
}
5365

66+
@Test
67+
public void dir() {
68+
Assertions.assertEquals("Super Heroes Foo from Yml in dir", dirFoo.getString("name"));
69+
Assertions.assertEquals("Super Heroes Bar from Yaml in dir", dirBar.getString("name"));
70+
Assertions.assertEquals("Super Heroes Foo from Yml in dir", dir.getJsonObject("foo").getString("name"));
71+
Assertions.assertEquals("Super Heroes Bar from Yaml in dir", dir.getJsonObject("bar").getString("name"));
72+
}
73+
5474
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
name: Super Heroes Bar from Yaml in dir
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
name: Super Heroes Foo from Yml in dir

roq-theme/resume/deployment/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<dependencies>
1515
<dependency>
1616
<groupId>io.quarkiverse.web-bundler</groupId>
17-
<artifactId>quarkus-web-bundler-tailwind-css-deployment</artifactId>
17+
<artifactId>quarkus-web-bundler-tailwindcss-deployment</artifactId>
1818
<version>${quarkus-web-bundler.version}</version>
1919
</dependency>
2020
<dependency>

roq-theme/resume/runtime/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<dependencies>
1515
<dependency>
1616
<groupId>io.quarkiverse.web-bundler</groupId>
17-
<artifactId>quarkus-web-bundler-tailwind-css</artifactId>
17+
<artifactId>quarkus-web-bundler-tailwindcss</artifactId>
1818
<version>${quarkus-web-bundler.version}</version>
1919
</dependency>
2020
<dependency>

0 commit comments

Comments
 (0)