From ee50f94c4f8afd7e0cdeeae161ea46403acf2011 Mon Sep 17 00:00:00 2001 From: Tijana Vislavski Gradina Date: Wed, 19 Oct 2022 09:23:30 +0200 Subject: [PATCH] Using precompiled templates with SoySauce (#2839) * Using precompiled templates with SoySauce instead of Tofu runtime interpreter * Use renderHtml() instead of renderText() Co-authored-by: Tobias Rogg <26879902+roggnroll@users.noreply.github.com> Co-authored-by: Tobias Rogg <26879902+roggnroll@users.noreply.github.com> --- java/demo/pom.xml | 80 ++++++++++++------- .../demo/render/ErrorRenderer.java | 1 - .../demo/render/InputFormRenderer.java | 4 - .../demo/render/LibPhoneNumberRenderer.java | 25 +----- .../demo/render/ResultFileRenderer.java | 1 - .../demo/render/ResultRenderer.java | 1 - 6 files changed, 57 insertions(+), 55 deletions(-) diff --git a/java/demo/pom.xml b/java/demo/pom.xml index 6eb04f072..36336955b 100644 --- a/java/demo/pom.xml +++ b/java/demo/pom.xml @@ -20,7 +20,9 @@ 1.8 true true - src/main/resources/com/google/phonenumbers/demo + ${project.basedir}/src/main/resources/com/google/phonenumbers/demo + ${soy.root}/input_form.soy,${soy.root}/result.soy,${soy.root}/result_error.soy,${soy.root}/result_file.soy + ${project.build.directory}/${project.build.finalName}/WEB-INF/lib/ com.google.phonenumbers.demo.template @@ -83,32 +85,6 @@ ${project.build.directory}/${project.build.finalName}/WEB-INF/classes - - org.codehaus.mojo - exec-maven-plugin - 3.1.0 - - - - java - - - - - com.google.template.soy.SoyParseInfoGenerator - - --generateInvocationBuilders - --javaPackage - ${soy.package} - --javaClassNameSource - filename - --srcs - ${soy.root}/input_form.soy,${soy.root}/result.soy,${soy.root}/result_error.soy,${soy.root}/result_file.soy - --outputDirectory - src/main/java/com/google/phonenumbers/demo/template/ - - - com.google.cloud.tools appengine-maven-plugin @@ -124,6 +100,56 @@ org.apache.maven.plugins + + org.codehaus.mojo + exec-maven-plugin + 3.1.0 + + + + soy-parser + + java + + + com.google.template.soy.SoyParseInfoGenerator + + --generateInvocationBuilders + --javaPackage + ${soy.package} + --javaClassNameSource + filename + --srcs + ${soy.srcs} + --outputDirectory + ${project.basedir}/src/main/java/com/google/phonenumbers/demo/template/ + + + + + + soy-compiler + + java + + install + + com.google.template.soy.SoyToJbcSrcCompiler + + --srcs + ${soy.srcs} + --output + ${soy.output.dir}/soy-templates.jar + + + + + org.apache.maven.plugins maven-javadoc-plugin diff --git a/java/demo/src/main/java/com/google/phonenumbers/demo/render/ErrorRenderer.java b/java/demo/src/main/java/com/google/phonenumbers/demo/render/ErrorRenderer.java index ec1d214bc..9cff392b7 100644 --- a/java/demo/src/main/java/com/google/phonenumbers/demo/render/ErrorRenderer.java +++ b/java/demo/src/main/java/com/google/phonenumbers/demo/render/ErrorRenderer.java @@ -30,7 +30,6 @@ public class ErrorRenderer extends LibPhoneNumberRenderer { public ErrorRenderer( String phoneNumber, String defaultCountry, Locale geocodingLocale, String error) { - super("result_error.soy", "com.google.phonenumbers.demo.error"); this.phoneNumber = phoneNumber; this.defaultCountry = defaultCountry; this.geocodingLocale = geocodingLocale; diff --git a/java/demo/src/main/java/com/google/phonenumbers/demo/render/InputFormRenderer.java b/java/demo/src/main/java/com/google/phonenumbers/demo/render/InputFormRenderer.java index 62d980de7..77e388a15 100644 --- a/java/demo/src/main/java/com/google/phonenumbers/demo/render/InputFormRenderer.java +++ b/java/demo/src/main/java/com/google/phonenumbers/demo/render/InputFormRenderer.java @@ -23,10 +23,6 @@ import com.google.phonenumbers.demo.template.InputFormTemplates.InputForm; public class InputFormRenderer extends LibPhoneNumberRenderer { - public InputFormRenderer() { - super("input_form.soy", "com.google.phonenumbers.demo.inputForm"); - } - @Override public String genHtml() { return super.render( diff --git a/java/demo/src/main/java/com/google/phonenumbers/demo/render/LibPhoneNumberRenderer.java b/java/demo/src/main/java/com/google/phonenumbers/demo/render/LibPhoneNumberRenderer.java index f20e29745..79591e427 100644 --- a/java/demo/src/main/java/com/google/phonenumbers/demo/render/LibPhoneNumberRenderer.java +++ b/java/demo/src/main/java/com/google/phonenumbers/demo/render/LibPhoneNumberRenderer.java @@ -18,32 +18,15 @@ package com.google.phonenumbers.demo.render; -import com.google.template.soy.SoyFileSet; import com.google.template.soy.data.SoyTemplate; -import com.google.template.soy.tofu.SoyTofu; -import java.net.URL; +import com.google.template.soy.jbcsrc.api.SoySauce; +import com.google.template.soy.jbcsrc.api.SoySauceBuilder; public abstract class LibPhoneNumberRenderer { - private final String template; - private final String namespace; - - public LibPhoneNumberRenderer(String template, String namespace) { - this.template = template; - this.namespace = namespace; - } - - private URL getResource() { - return LibPhoneNumberRenderer.class.getResource("../" + template); - } String render(T soyTemplate) { - SoyFileSet sfs = SoyFileSet.builder().add(getResource()).build(); - SoyTofu tofu = sfs.compileToTofu(); - // For convenience, create another SoyTofu object that has a - // namespace specified, so you can pass partial template names to - // the newRenderer() method. - SoyTofu simpleTofu = tofu.forNamespace(namespace); - return simpleTofu.newRenderer(soyTemplate).render(); + SoySauce soySauce = new SoySauceBuilder().build(); + return soySauce.newRenderer(soyTemplate).renderHtml().get().toString(); } public abstract String genHtml(); diff --git a/java/demo/src/main/java/com/google/phonenumbers/demo/render/ResultFileRenderer.java b/java/demo/src/main/java/com/google/phonenumbers/demo/render/ResultFileRenderer.java index 125542b28..37fe2dd65 100644 --- a/java/demo/src/main/java/com/google/phonenumbers/demo/render/ResultFileRenderer.java +++ b/java/demo/src/main/java/com/google/phonenumbers/demo/render/ResultFileRenderer.java @@ -31,7 +31,6 @@ public class ResultFileRenderer extends LibPhoneNumberRenderer { private final PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); public ResultFileRenderer(String defaultCountry, String fileContents) { - super("result_file.soy", "com.google.phonenumbers.demo.file"); this.fileContents = fileContents; this.defaultCountry = defaultCountry; } diff --git a/java/demo/src/main/java/com/google/phonenumbers/demo/render/ResultRenderer.java b/java/demo/src/main/java/com/google/phonenumbers/demo/render/ResultRenderer.java index 9c5507e3f..1d28cedf5 100644 --- a/java/demo/src/main/java/com/google/phonenumbers/demo/render/ResultRenderer.java +++ b/java/demo/src/main/java/com/google/phonenumbers/demo/render/ResultRenderer.java @@ -43,7 +43,6 @@ public class ResultRenderer extends LibPhoneNumberRenderer { public ResultRenderer( String phoneNumber, String defaultCountry, Locale geocodingLocale, PhoneNumber number) { - super("result.soy", "com.google.phonenumbers.demo.singleNumber"); this.phoneNumber = phoneNumber; this.defaultCountry = defaultCountry; this.geocodingLocale = geocodingLocale;