Migrate from deprecated SoyTofu to SoySauce
Also add missing dependency on ow2 which is exposed by this migration.
Change-Id: I144334592c981d3ebd8810aa73171f1076680ee9
diff --git a/WORKSPACE b/WORKSPACE
index 685fce3..2b176f4 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -302,3 +302,35 @@
artifact = "org.eclipse.jetty:jetty-util:" + JETTY_VERSION,
sha1 = "13e6148bfda7ae511f69ae7e5e3ea898bc9b0e33",
)
+
+OW2_VERS = "7.0"
+
+maven_jar(
+ name = "ow2-asm",
+ artifact = "org.ow2.asm:asm:" + OW2_VERS,
+ sha1 = "d74d4ba0dee443f68fb2dcb7fcdb945a2cd89912",
+)
+
+maven_jar(
+ name = "ow2-asm-analysis",
+ artifact = "org.ow2.asm:asm-analysis:" + OW2_VERS,
+ sha1 = "4b310d20d6f1c6b7197a75f1b5d69f169bc8ac1f",
+)
+
+maven_jar(
+ name = "ow2-asm-commons",
+ artifact = "org.ow2.asm:asm-commons:" + OW2_VERS,
+ sha1 = "478006d07b7c561ae3a92ddc1829bca81ae0cdd1",
+)
+
+maven_jar(
+ name = "ow2-asm-tree",
+ artifact = "org.ow2.asm:asm-tree:" + OW2_VERS,
+ sha1 = "29bc62dcb85573af6e62e5b2d735ef65966c4180",
+)
+
+maven_jar(
+ name = "ow2-asm-util",
+ artifact = "org.ow2.asm:asm-util:" + OW2_VERS,
+ sha1 = "18d4d07010c24405129a6dbb0e92057f8779fb9d",
+)
diff --git a/java/com/google/gitiles/BaseServlet.java b/java/com/google/gitiles/BaseServlet.java
index 6a2e5eb..91c66bb 100644
--- a/java/com/google/gitiles/BaseServlet.java
+++ b/java/com/google/gitiles/BaseServlet.java
@@ -204,7 +204,7 @@
protected void renderHtml(
HttpServletRequest req, HttpServletResponse res, String templateName, Map<String, ?> soyData)
throws IOException {
- renderer.render(req, res, templateName, startHtmlResponse(req, res, soyData));
+ renderer.renderHtml(req, res, templateName, startHtmlResponse(req, res, soyData));
}
/**
@@ -227,7 +227,8 @@
HttpServletRequest req, HttpServletResponse res, String templateName, Map<String, ?> soyData)
throws IOException {
req.setAttribute(STREAMING_ATTRIBUTE, true);
- return renderer.renderStreaming(res, false, templateName, startHtmlResponse(req, res, soyData));
+ return renderer.renderHtmlStreaming(
+ res, false, templateName, startHtmlResponse(req, res, soyData));
}
/**
@@ -259,7 +260,8 @@
res.setHeader(HttpHeaders.CONTENT_ENCODING, "gzip");
gzip = true;
}
- return renderer.renderStreaming(res, gzip, templateName, startHtmlResponse(req, res, soyData));
+ return renderer.renderHtmlStreaming(
+ res, gzip, templateName, startHtmlResponse(req, res, soyData));
}
private Map<String, ?> startHtmlResponse(
diff --git a/java/com/google/gitiles/DebugRenderer.java b/java/com/google/gitiles/DebugRenderer.java
index 791067b..5e35e57 100644
--- a/java/com/google/gitiles/DebugRenderer.java
+++ b/java/com/google/gitiles/DebugRenderer.java
@@ -21,7 +21,7 @@
import com.google.common.collect.Streams;
import com.google.common.hash.HashCode;
import com.google.template.soy.SoyFileSet;
-import com.google.template.soy.tofu.SoyTofu;
+import com.google.template.soy.jbcsrc.api.SoySauce;
import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
@@ -47,7 +47,7 @@
}
@Override
- protected SoyTofu getTofu() {
+ protected SoySauce getSauce() {
SoyFileSet.Builder builder = SoyFileSet.builder().setCompileTimeGlobals(globals);
for (URL template : templates.values()) {
try {
@@ -57,6 +57,6 @@
}
builder.add(template);
}
- return builder.build().compileToTofu();
+ return builder.build().compileTemplates();
}
}
diff --git a/java/com/google/gitiles/DefaultErrorHandlingFilter.java b/java/com/google/gitiles/DefaultErrorHandlingFilter.java
index 89086aa..ec52bb9 100644
--- a/java/com/google/gitiles/DefaultErrorHandlingFilter.java
+++ b/java/com/google/gitiles/DefaultErrorHandlingFilter.java
@@ -103,7 +103,7 @@
protected void renderHtml(
HttpServletRequest req, HttpServletResponse res, String templateName, Map<String, ?> soyData)
throws IOException {
- renderer.render(req, res, templateName, startHtmlResponse(req, res, soyData));
+ renderer.renderHtml(req, res, templateName, startHtmlResponse(req, res, soyData));
}
private Map<String, ?> startHtmlResponse(
diff --git a/java/com/google/gitiles/DefaultRenderer.java b/java/com/google/gitiles/DefaultRenderer.java
index 297350e..0307862 100644
--- a/java/com/google/gitiles/DefaultRenderer.java
+++ b/java/com/google/gitiles/DefaultRenderer.java
@@ -18,13 +18,13 @@
import com.google.common.collect.ImmutableMap;
import com.google.common.io.Resources;
import com.google.template.soy.SoyFileSet;
-import com.google.template.soy.tofu.SoyTofu;
+import com.google.template.soy.jbcsrc.api.SoySauce;
import java.net.URL;
import java.util.Map;
/** Renderer that precompiles Soy and uses static precompiled CSS. */
public class DefaultRenderer extends Renderer {
- private final SoyTofu tofu;
+ private final SoySauce sauce;
DefaultRenderer() {
this("", ImmutableList.<URL>of(), "");
@@ -49,11 +49,11 @@
for (URL template : templates.values()) {
builder.add(template);
}
- tofu = builder.build().compileToTofu();
+ sauce = builder.build().compileTemplates();
}
@Override
- protected SoyTofu getTofu() {
- return tofu;
+ protected SoySauce getSauce() {
+ return sauce;
}
}
diff --git a/java/com/google/gitiles/HtmlDiffFormatter.java b/java/com/google/gitiles/HtmlDiffFormatter.java
index 44d2c18..1467d42 100644
--- a/java/com/google/gitiles/HtmlDiffFormatter.java
+++ b/java/com/google/gitiles/HtmlDiffFormatter.java
@@ -111,7 +111,9 @@
renderer
.newRenderer("gitiles.diffHeader")
.setData(ImmutableMap.of("firstParts", parts, "rest", rest, "fileIndex", fileIndex))
- .render()
+ .renderHtml()
+ .get()
+ .toString()
.getBytes(UTF_8));
}
diff --git a/java/com/google/gitiles/LogSoyData.java b/java/com/google/gitiles/LogSoyData.java
index 96ef6ae..dc782ab 100644
--- a/java/com/google/gitiles/LogSoyData.java
+++ b/java/com/google/gitiles/LogSoyData.java
@@ -22,7 +22,8 @@
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.google.gitiles.CommitData.Field;
-import com.google.template.soy.tofu.SoyTofu;
+import com.google.template.soy.data.LoggingAdvisingAppendable;
+import com.google.template.soy.jbcsrc.api.SoySauce;
import java.io.IOException;
import java.io.Writer;
import java.util.Map;
@@ -74,35 +75,43 @@
variant = firstNonNull(config.getString("logFormat", pretty, "variant"), pretty);
}
+ private void renderHtml(SoySauce.Renderer renderer, LoggingAdvisingAppendable out)
+ throws IOException {
+ if (!renderer.renderHtml(out).result().isDone()) {
+ throw new IOException("failed to render HTML");
+ }
+ }
+
public void renderStreaming(
Paginator paginator,
@Nullable String revision,
Renderer renderer,
- Writer out,
+ Writer writer,
DateFormatter df,
FooterBehavior footerBehavior)
throws IOException {
- renderer
- .newRenderer("gitiles.logEntriesHeader")
- .setData(toHeaderSoyData(paginator, revision))
- .render(out);
- out.flush();
+ LoggingAdvisingAppendable out = LoggingAdvisingAppendable.delegating(writer);
+ renderHtml(
+ renderer
+ .newRenderer("gitiles.logEntriesHeader")
+ .setData(toHeaderSoyData(paginator, revision)),
+ out);
- SoyTofu.Renderer entryRenderer = renderer.newRenderer("gitiles.logEntryWrapper");
+ SoySauce.Renderer entryRenderer = renderer.newRenderer("gitiles.logEntryWrapper");
boolean renderedEntries = false;
for (RevCommit c : paginator) {
- entryRenderer.setData(toEntrySoyData(paginator, c, df)).render(out);
- out.flush();
+ renderHtml(entryRenderer.setData(toEntrySoyData(paginator, c, df)), out);
renderedEntries = true;
}
if (!renderedEntries) {
- renderer.newRenderer("gitiles.emptyLog").render(out);
+ renderHtml(renderer.newRenderer("gitiles.emptyLog"), out);
}
- renderer
- .newRenderer("gitiles.logEntriesFooter")
- .setData(toFooterSoyData(paginator, revision, footerBehavior))
- .render(out);
+ renderHtml(
+ renderer
+ .newRenderer("gitiles.logEntriesFooter")
+ .setData(toFooterSoyData(paginator, revision, footerBehavior)),
+ out);
}
private Map<String, Object> toHeaderSoyData(Paginator paginator, @Nullable String revision) {
diff --git a/java/com/google/gitiles/Renderer.java b/java/com/google/gitiles/Renderer.java
index bc85290..dbd5590 100644
--- a/java/com/google/gitiles/Renderer.java
+++ b/java/com/google/gitiles/Renderer.java
@@ -29,7 +29,7 @@
import com.google.common.html.types.LegacyConversions;
import com.google.common.io.ByteStreams;
import com.google.common.net.HttpHeaders;
-import com.google.template.soy.tofu.SoyTofu;
+import com.google.template.soy.jbcsrc.api.SoySauce;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -147,16 +147,17 @@
return h.hash();
}
- public String render(String templateName, Map<String, ?> soyData) {
- return newRenderer(templateName).setData(soyData).render();
+ public String renderHtml(String templateName, Map<String, ?> soyData) {
+ return newRenderer(templateName).setData(soyData).renderHtml().get().toString();
}
- void render(
+ void renderHtml(
HttpServletRequest req, HttpServletResponse res, String templateName, Map<String, ?> soyData)
throws IOException {
res.setContentType("text/html");
res.setCharacterEncoding("UTF-8");
- byte[] data = newRenderer(templateName).setData(soyData).render().getBytes(UTF_8);
+ byte[] data =
+ newRenderer(templateName).setData(soyData).renderHtml().get().toString().getBytes(UTF_8);
if (BaseServlet.acceptsGzipEncoding(req)) {
res.addHeader(HttpHeaders.VARY, HttpHeaders.ACCEPT_ENCODING);
res.setHeader(HttpHeaders.CONTENT_ENCODING, "gzip");
@@ -166,15 +167,15 @@
res.getOutputStream().write(data);
}
- OutputStream renderStreaming(HttpServletResponse res, String templateName, Map<String, ?> soyData)
- throws IOException {
- return renderStreaming(res, false, templateName, soyData);
+ OutputStream renderHtmlStreaming(
+ HttpServletResponse res, String templateName, Map<String, ?> soyData) throws IOException {
+ return renderHtmlStreaming(res, false, templateName, soyData);
}
- OutputStream renderStreaming(
+ OutputStream renderHtmlStreaming(
HttpServletResponse res, boolean gzip, String templateName, Map<String, ?> soyData)
throws IOException {
- String html = newRenderer(templateName).setData(soyData).render();
+ String html = newRenderer(templateName).setData(soyData).renderHtml().get().toString();
int id = html.indexOf(PLACEHOLDER);
checkArgument(id >= 0, "Template must contain %s", PLACEHOLDER);
@@ -211,17 +212,17 @@
};
}
- SoyTofu.Renderer newRenderer(String templateName) {
+ SoySauce.Renderer newRenderer(String templateName) {
ImmutableMap.Builder<String, Object> staticUrls = ImmutableMap.builder();
for (String key : STATIC_URL_GLOBALS.keySet()) {
staticUrls.put(
key.replaceFirst("^gitiles\\.", ""),
LegacyConversions.riskilyAssumeTrustedResourceUrl(globals.get(key)));
}
- return getTofu()
- .newRenderer(templateName)
- .setIjData(ImmutableMap.of("staticUrls", staticUrls.build()));
+ return getSauce()
+ .renderTemplate(templateName)
+ .setIj(ImmutableMap.of("staticUrls", staticUrls.build()));
}
- protected abstract SoyTofu getTofu();
+ protected abstract SoySauce getSauce();
}
diff --git a/lib/BUILD b/lib/BUILD
index ab56df4..a8d6b51 100644
--- a/lib/BUILD
+++ b/lib/BUILD
@@ -21,4 +21,9 @@
"guava",
"guava-failureaccess",
"prettify",
+ "ow2-asm",
+ "ow2-asm-analysis",
+ "ow2-asm-commons",
+ "ow2-asm-tree",
+ "ow2-asm-util",
]]
diff --git a/lib/soy/BUILD b/lib/soy/BUILD
index 5666b8c..edef66a 100644
--- a/lib/soy/BUILD
+++ b/lib/soy/BUILD
@@ -10,6 +10,11 @@
runtime_deps = [
"@html-types//jar",
"@icu4j//jar",
+ "@ow2-asm-analysis//jar",
+ "@ow2-asm-commons//jar",
+ "@ow2-asm-tree//jar",
+ "@ow2-asm-util//jar",
+ "@ow2-asm//jar",
"@protobuf//jar",
],
)