Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(72)

Side by Side Diff: third_party/robolectric/template_processor/src/org/chromium/testing/robolectric/template/ProcessRobolectricTemplate.java

Issue 2200413004: Pass template files explicitly to Robolectric template processor. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Pass template files explicitly to Robolectric template processor. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.testing.robolectric.template; 5 package org.chromium.testing.robolectric.template;
6 6
7 import org.apache.velocity.Template; 7 import org.apache.velocity.Template;
8 import org.apache.velocity.VelocityContext; 8 import org.apache.velocity.VelocityContext;
9 import org.apache.velocity.app.Velocity; 9 import org.apache.velocity.app.Velocity;
10 import org.apache.velocity.exception.VelocityException; 10 import org.apache.velocity.exception.VelocityException;
(...skipping 16 matching lines...) Expand all
27 27
28 /** 28 /**
29 * Class to process Robolectric template (*.vm) files using Apache Velocity. 29 * Class to process Robolectric template (*.vm) files using Apache Velocity.
30 */ 30 */
31 public final class ProcessRobolectricTemplate { 31 public final class ProcessRobolectricTemplate {
32 32
33 private ProcessRobolectricTemplate() { 33 private ProcessRobolectricTemplate() {
34 } 34 }
35 35
36 public static void main(String[] args) { 36 public static void main(String[] args) {
37
37 final ProcessTemplateArgParser parser = ProcessTemplateArgParser.parse(a rgs); 38 final ProcessTemplateArgParser parser = ProcessTemplateArgParser.parse(a rgs);
38 39
39 Velocity.setProperty(RuntimeConstants.RESOURCE_LOADER, "file"); 40 Velocity.setProperty(RuntimeConstants.RESOURCE_LOADER, "file");
40 Velocity.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, 41 Velocity.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH,
41 parser.getBaseTemplateDir().toString()); 42 parser.getBaseTemplateDir().toString());
42 Velocity.init(); 43 Velocity.init();
43 44
44 final VelocityContext context = new VelocityContext(); 45 final VelocityContext context = new VelocityContext();
45 final int api = parser.getApiLevel(); 46 final int api = parser.getApiLevel();
46 context.put("api", api); 47 context.put("api", api);
47 if (api >= 21) { 48 if (api >= 21) {
48 context.put("ptrClass", "long"); 49 context.put("ptrClass", "long");
49 context.put("ptrClassBoxed", "Long"); 50 context.put("ptrClassBoxed", "Long");
50 } else { 51 } else {
51 context.put("ptrClass", "int"); 52 context.put("ptrClass", "int");
52 context.put("ptrClassBoxed", "Integer"); 53 context.put("ptrClassBoxed", "Integer");
53 } 54 }
54
55 try { 55 try {
56 final PathMatcher templatePathMatcher = 56 for(TemplateFileInfo templateFileInfo: parser.getTemplateFileInfoLis t()) {
57 FileSystems.getDefault().getPathMatcher("glob:" + "**/*.vm") ; 57 processTemplate(context, templateFileInfo.getTemplateFile(),
58 Files.walkFileTree(parser.getBaseTemplateDir(), new SimpleFileVisito r<Path>() { 58 templateFileInfo.getOutputFile(), api);
mikecase (-- gone --) 2016/08/03 20:04:27 This walkFileTree line isnt working on the WebRTC
jbudorick 2016/08/03 22:24:03 Java version?
mikecase (-- gone --) 2016/08/03 22:29:55 Maybe. Also, they mentioned they set up some symli
59 @Override 59 }
60 public FileVisitResult visitFile(
61 Path path, BasicFileAttributes attrs) throws IOException {
62 if (templatePathMatcher.matches(path)) {
63 processTemplate(context, path, parser.getBaseTemplateDir (), parser.getOutputDir(), api);
64 }
65 return FileVisitResult.CONTINUE;
66 }
67 });
68 } catch (IOException e) { 60 } catch (IOException e) {
69 System.err.println("Error processing template files for Robolectric! " + e.toString()); 61 System.err.println("Error processing template files for Robolectric! " + e.toString());
70 } 62 }
71 } 63 }
72 64
73 private static void processTemplate(VelocityContext context, Path templateFi le, Path baseTemplateDir, Path outputDir, int api_level) throws IOException { 65 private static void processTemplate(VelocityContext context, Path templateFi le, Path outputFile, int api_level) throws IOException {
jbudorick 2016/08/03 22:24:03 line length
mikecase (-- gone --) 2016/08/03 22:29:55 Done
74 final StringWriter stringWriter = new StringWriter(); 66 final StringWriter stringWriter = new StringWriter();
75 Template template = Velocity.getTemplate(baseTemplateDir.relativize(temp lateFile).toString(), "UTF-8"); 67 Template template = Velocity.getTemplate(templateFile.toString(), "UTF-8 ");
76 template.merge(context, stringWriter); 68 template.merge(context, stringWriter);
77
78 String templateFilename = templateFile.getFileName().toString();
79 String processedFilename = "" + api_level + File.separator + templateFil ename.replace(".vm", "");
80
81 String relativeOutputFile = templateFile.toString().replace(baseTemplate Dir.toString(), "").replace(templateFilename, processedFilename);
82
83 if (relativeOutputFile.startsWith("/")) {
84 relativeOutputFile = relativeOutputFile.substring(1);
85 }
86 Path outputFile = outputDir.resolve(relativeOutputFile);
87 if (!Files.exists(outputFile.getParent())) { 69 if (!Files.exists(outputFile.getParent())) {
88 Files.createDirectories(outputFile.getParent()); 70 Files.createDirectories(outputFile.getParent());
89 } 71 }
90 Files.write(outputFile, stringWriter.toString().getBytes("UTF-8")); 72 Files.write(outputFile, stringWriter.toString().getBytes("UTF-8"));
91 } 73 }
92 } 74 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698