Skip to content

Commit 32e9cd7

Browse files
authored
Merge pull request quarkusio#35905 from mkouba/issue-27872
Qute: improve RESTEasy classic/reactive support
2 parents 3bfd85a + 85cf6ca commit 32e9cd7

File tree

2 files changed

+25
-2
lines changed
  • extensions
    • resteasy-classic/resteasy-qute/runtime/src/main/java/io/quarkus/resteasy/qute/runtime
    • resteasy-reactive/quarkus-resteasy-reactive-qute/runtime/src/main/java/io/quarkus/resteasy/reactive/qute/runtime

2 files changed

+25
-2
lines changed

extensions/resteasy-classic/resteasy-qute/runtime/src/main/java/io/quarkus/resteasy/qute/runtime/TemplateResponseFilter.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import io.quarkus.arc.Arc;
1919
import io.quarkus.qute.Engine;
20+
import io.quarkus.qute.Template;
2021
import io.quarkus.qute.TemplateInstance;
2122
import io.quarkus.qute.Variant;
2223

@@ -34,10 +35,22 @@ public void filter(ContainerRequestContext requestContext, ContainerResponseCont
3435

3536
MediaType mediaType;
3637
TemplateInstance instance = (TemplateInstance) entity;
38+
39+
List<Variant> quteVariants = List.of();
3740
Object variantsAttr = instance.getAttribute(TemplateInstance.VARIANTS);
3841
if (variantsAttr != null) {
42+
quteVariants = (List<Variant>) variantsAttr;
43+
} else {
44+
// If no variants are available then try to use the template variant
45+
Template template = instance.getTemplate();
46+
if (template.getVariant().isPresent()) {
47+
quteVariants = List.of(template.getVariant().get());
48+
}
49+
}
50+
51+
if (!quteVariants.isEmpty()) {
3952
List<jakarta.ws.rs.core.Variant> variants = new ArrayList<>();
40-
for (Variant variant : (List<Variant>) variantsAttr) {
53+
for (Variant variant : quteVariants) {
4154
variants.add(new jakarta.ws.rs.core.Variant(MediaType.valueOf(variant.getMediaType()), variant.getLocale(),
4255
variant.getEncoding()));
4356
}

extensions/resteasy-reactive/quarkus-resteasy-reactive-qute/runtime/src/main/java/io/quarkus/resteasy/reactive/qute/runtime/Util.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import jakarta.ws.rs.core.Request;
1010

1111
import io.quarkus.qute.Engine;
12+
import io.quarkus.qute.Template;
1213
import io.quarkus.qute.TemplateException;
1314
import io.quarkus.qute.TemplateInstance;
1415
import io.quarkus.qute.Variant;
@@ -33,9 +34,18 @@ static Uni<String> toUni(TemplateInstance instance, Engine engine) {
3334
@SuppressWarnings("unchecked")
3435
static MediaType setSelectedVariant(TemplateInstance result,
3536
Request request, List<Locale> acceptableLanguages) {
37+
List<Variant> quteVariants = List.of();
3638
Object variantsAttr = result.getAttribute(TemplateInstance.VARIANTS);
3739
if (variantsAttr != null) {
38-
List<Variant> quteVariants = (List<Variant>) variantsAttr;
40+
quteVariants = (List<Variant>) variantsAttr;
41+
} else {
42+
// If no variants are available then try to use the template variant
43+
Template template = result.getTemplate();
44+
if (template.getVariant().isPresent()) {
45+
quteVariants = List.of(template.getVariant().get());
46+
}
47+
}
48+
if (!quteVariants.isEmpty()) {
3949
List<jakarta.ws.rs.core.Variant> jaxRsVariants = new ArrayList<>(quteVariants.size());
4050
for (Variant variant : quteVariants) {
4151
jaxRsVariants.add(new jakarta.ws.rs.core.Variant(MediaType.valueOf(variant.getMediaType()), variant.getLocale(),

0 commit comments

Comments
 (0)