X-Git-Url: https://juplo.de/gitweb/?p=maven-thymeleaf-skin;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fthymeleaf%2FImportVariablesAttrProcessor.java;h=63963faa32f7ed32db26af71d90153815b77575e;hp=b4c3b306d30dc35f67186cc9599335537a3684c9;hb=bdb1a080e3a4c02849ff5d0ce9e78ab376393afe;hpb=a7077e8eb0dade62969e5aa09e339b2dc2f58b86 diff --git a/src/main/java/de/juplo/thymeleaf/ImportVariablesAttrProcessor.java b/src/main/java/de/juplo/thymeleaf/ImportVariablesAttrProcessor.java index b4c3b30..63963fa 100644 --- a/src/main/java/de/juplo/thymeleaf/ImportVariablesAttrProcessor.java +++ b/src/main/java/de/juplo/thymeleaf/ImportVariablesAttrProcessor.java @@ -9,7 +9,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.io.InputStream; import java.time.format.DateTimeFormatter; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Locale; @@ -23,6 +23,7 @@ import org.thymeleaf.Arguments; import org.thymeleaf.Configuration; import org.thymeleaf.TemplateProcessingParameters; import org.thymeleaf.context.IContext; +import org.thymeleaf.context.VariablesMap; import org.thymeleaf.dom.Element; import org.thymeleaf.processor.ProcessorResult; import org.thymeleaf.processor.attr.AbstractAttrProcessor; @@ -62,7 +63,7 @@ public class ImportVariablesAttrProcessor extends AbstractAttrProcessor public ImportVariablesAttrProcessor() { - super("crumb"); + super("variables"); } @@ -80,8 +81,25 @@ public class ImportVariablesAttrProcessor extends AbstractAttrProcessor new TemplateProcessingParameters( config, templateName, - (IContext)null // << We will not execute the template, hence we need no context - ); + new IContext() // << We will not execute the template, hence we need no context + { + @Override + public VariablesMap getVariables() + { + return new VariablesMap<>(); + } + + @Override + public Locale getLocale() + { + return Locale.getDefault(); + } + + @Override + public void addContextExecutionInfo(String templateName) + { + } + }); for (ITemplateResolver t_resolver : config.getTemplateResolvers()) { @@ -91,7 +109,8 @@ public class ImportVariablesAttrProcessor extends AbstractAttrProcessor if (!"JSON".equals(resolution.getTemplateMode())) continue; IResourceResolver r_resolver = resolution.getResourceResolver(); - InputStream is = r_resolver.getResourceAsStream(params, templateName); + InputStream is = + r_resolver.getResourceAsStream(params, resolution.getResourceName()); if (is == null) continue; @@ -121,7 +140,7 @@ public class ImportVariablesAttrProcessor extends AbstractAttrProcessor token = parser.nextToken(); if (token == null) fail(parser, "unexpected EOF"); - if (!JsonToken.END_OBJECT.equals(token)) + if (JsonToken.END_OBJECT.equals(token)) { LOG.warn("found empty object for {}", templateName); break; @@ -133,6 +152,7 @@ public class ImportVariablesAttrProcessor extends AbstractAttrProcessor fail(parser, "expected a field-name"); String var_name = parser.getText(); + parser.nextToken(); Object var_value = convert(parser); LOG.debug( @@ -173,7 +193,7 @@ public class ImportVariablesAttrProcessor extends AbstractAttrProcessor static Object convert(JsonParser parser) throws IOException { - JsonToken token = parser.nextToken(); + JsonToken token = parser.getCurrentToken(); if (token == null) fail(parser, "unexpected EOF"); @@ -199,14 +219,17 @@ public class ImportVariablesAttrProcessor extends AbstractAttrProcessor if (token == null) fail(parser, "unexpected EOF"); - Map map = new HashMap<>(); + Map map = new LinkedHashMap<>(); while (!JsonToken.END_OBJECT.equals(token)) { if (!JsonToken.FIELD_NAME.equals(token)) fail(parser, "expected a field-name"); - map.put(parser.getText(), convert(parser)); + String name = parser.getText(); + parser.nextToken(); + Object value = convert(parser); + map.put(name, value); token = parser.nextToken(); if (token == null)