Skip to content

Commit

Permalink
Merge pull request #35905 from mkouba/issue-27872
Browse files Browse the repository at this point in the history
Qute: improve RESTEasy classic/reactive support
  • Loading branch information
mkouba authored Sep 13, 2023
2 parents 3bfd85a + 85cf6ca commit 32e9cd7
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import io.quarkus.arc.Arc;
import io.quarkus.qute.Engine;
import io.quarkus.qute.Template;
import io.quarkus.qute.TemplateInstance;
import io.quarkus.qute.Variant;

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

MediaType mediaType;
TemplateInstance instance = (TemplateInstance) entity;

List<Variant> quteVariants = List.of();
Object variantsAttr = instance.getAttribute(TemplateInstance.VARIANTS);
if (variantsAttr != null) {
quteVariants = (List<Variant>) variantsAttr;
} else {
// If no variants are available then try to use the template variant
Template template = instance.getTemplate();
if (template.getVariant().isPresent()) {
quteVariants = List.of(template.getVariant().get());
}
}

if (!quteVariants.isEmpty()) {
List<jakarta.ws.rs.core.Variant> variants = new ArrayList<>();
for (Variant variant : (List<Variant>) variantsAttr) {
for (Variant variant : quteVariants) {
variants.add(new jakarta.ws.rs.core.Variant(MediaType.valueOf(variant.getMediaType()), variant.getLocale(),
variant.getEncoding()));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import jakarta.ws.rs.core.Request;

import io.quarkus.qute.Engine;
import io.quarkus.qute.Template;
import io.quarkus.qute.TemplateException;
import io.quarkus.qute.TemplateInstance;
import io.quarkus.qute.Variant;
Expand All @@ -33,9 +34,18 @@ static Uni<String> toUni(TemplateInstance instance, Engine engine) {
@SuppressWarnings("unchecked")
static MediaType setSelectedVariant(TemplateInstance result,
Request request, List<Locale> acceptableLanguages) {
List<Variant> quteVariants = List.of();
Object variantsAttr = result.getAttribute(TemplateInstance.VARIANTS);
if (variantsAttr != null) {
List<Variant> quteVariants = (List<Variant>) variantsAttr;
quteVariants = (List<Variant>) variantsAttr;
} else {
// If no variants are available then try to use the template variant
Template template = result.getTemplate();
if (template.getVariant().isPresent()) {
quteVariants = List.of(template.getVariant().get());
}
}
if (!quteVariants.isEmpty()) {
List<jakarta.ws.rs.core.Variant> jaxRsVariants = new ArrayList<>(quteVariants.size());
for (Variant variant : quteVariants) {
jaxRsVariants.add(new jakarta.ws.rs.core.Variant(MediaType.valueOf(variant.getMediaType()), variant.getLocale(),
Expand Down

0 comments on commit 32e9cd7

Please sign in to comment.