Merge pull request #7279 from mkouba/issue-6870

Qute - fix built-in template extension method for Map
This commit is contained in:
George Gastaldi
2020-02-19 22:39:07 -03:00
committed by GitHub
3 changed files with 41 additions and 4 deletions

View File

@@ -0,0 +1,37 @@
package io.quarkus.qute.deployment;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.Map;
import java.util.TreeMap;
import javax.inject.Inject;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
import io.quarkus.qute.Template;
import io.quarkus.test.QuarkusUnitTest;
public class TreeMapDataTest {
@RegisterExtension
static final QuarkusUnitTest config = new QuarkusUnitTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
.addAsResource(new StringAsset("{map.get(1)}:{map.entrySet.iterator.next.value}"), "templates/map.html"));
@Inject
Template map;
@Test
public void testTreeMap() {
Map<Integer, String> treeMap = new TreeMap<>(Integer::compare);
treeMap.put(2, "bar");
treeMap.put(1, "foo");
assertEquals("foo:foo", map.data("map", treeMap).render());
}
}

View File

@@ -14,16 +14,14 @@ public class BuiltinTemplateExtensions {
@SuppressWarnings({ "rawtypes", "unchecked" })
@TemplateExtension(matchName = ANY)
static Object map(Map map, String name) {
Object val = map.get(name);
if (val != null) {
return val;
}
switch (name) {
case "keys":
case "keySet":
return map.keySet();
case "values":
return map.values();
case "entrySet":
return map.entrySet();
case "size":
return map.size();
case "empty":

View File

@@ -199,6 +199,8 @@ public final class ValueResolvers {
return CompletableFuture.completedFuture(map.keySet());
case "values":
return CompletableFuture.completedFuture(map.values());
case "entrySet":
return CompletableFuture.completedFuture(map.entrySet());
case "size":
return CompletableFuture.completedFuture(map.size());
case "empty":