diff options
author | corysmith <corysmith@google.com> | 2017-05-16 20:18:46 +0200 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2017-05-17 15:20:55 +0200 |
commit | e04253eb9e673634751b29029a5aca0f19e2c753 (patch) | |
tree | 001922687265215be3c0bd800fe9bc783e477aaf /src/tools/android/java/com/google/devtools/build/android/AndroidResourceClassWriter.java | |
parent | ba0e2b2930bbda02bfb4a81eb579716709a14809 (diff) |
Use one writer for generating R.java source files
RELNOTES: None
PiperOrigin-RevId: 156205544
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/AndroidResourceClassWriter.java')
-rw-r--r-- | src/tools/android/java/com/google/devtools/build/android/AndroidResourceClassWriter.java | 45 |
1 files changed, 7 insertions, 38 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceClassWriter.java b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceClassWriter.java index 2fcbe8e93c..b64f9774f6 100644 --- a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceClassWriter.java +++ b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceClassWriter.java @@ -13,21 +13,16 @@ // limitations under the License. package com.google.devtools.build.android; -import static java.nio.charset.StandardCharsets.UTF_8; - -import com.android.SdkConstants; import com.android.resources.ResourceType; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Optional; import com.google.devtools.build.android.AndroidFrameworkAttrIdProvider.AttrLookupException; -import com.google.devtools.build.android.resources.FieldInitializer; +import com.google.devtools.build.android.resources.FieldInitializers; import com.google.devtools.build.android.resources.RClassGenerator; -import java.io.BufferedWriter; +import com.google.devtools.build.android.resources.RSourceGenerator; import java.io.Flushable; import java.io.IOException; -import java.nio.file.Files; import java.nio.file.Path; -import java.util.List; import java.util.Map; /** @@ -93,7 +88,7 @@ public class AndroidResourceClassWriter implements Flushable, AndroidResourceSym @Override public void flush() throws IOException { try { - Map<ResourceType, List<FieldInitializer>> initializers = generator.build(); + FieldInitializers initializers = generator.build(); if (includeClassFile) { writeAsClass(initializers); } @@ -103,39 +98,13 @@ public class AndroidResourceClassWriter implements Flushable, AndroidResourceSym } catch (AttrLookupException e) { throw new IOException(e); } - } - private void writeAsJava(Map<ResourceType, List<FieldInitializer>> initializers) - throws IOException { - String packageDir = packageName.replace('.', '/'); - Path packagePath = outputBasePath.resolve(packageDir); - Path rJavaPath = packagePath.resolve(SdkConstants.FN_RESOURCE_CLASS); - Files.createDirectories(rJavaPath.getParent()); - try (BufferedWriter writer = Files.newBufferedWriter(rJavaPath, UTF_8)) { - writer.write("/* AUTO-GENERATED FILE. DO NOT MODIFY.\n"); - writer.write(" *\n"); - writer.write(" * This class was automatically generated by the\n"); - writer.write(" * bazel tool from the resource data it found. It\n"); - writer.write(" * should not be modified by hand.\n"); - writer.write(" */\n"); - writer.write(String.format("package %s;\n", packageName)); - writer.write("public final class R {\n"); - for (ResourceType type : initializers.keySet()) { - writer.write(String.format(" public static final class %s {\n", type.getName())); - for (FieldInitializer field : initializers.get(type)) { - field.writeInitSource(writer); - } - writer.write(" }\n"); - } - writer.write("}"); - } + private void writeAsJava(FieldInitializers initializers) throws IOException { + RSourceGenerator.with(outputBasePath, initializers, false /* finalFields */).write(packageName); } - private void writeAsClass(Map<ResourceType, List<FieldInitializer>> initializers) - throws IOException { - RClassGenerator rClassGenerator = - new RClassGenerator(outputBasePath, initializers, false /* finalFields */); - rClassGenerator.write(packageName); + private void writeAsClass(FieldInitializers initializers) throws IOException { + RClassGenerator.with(outputBasePath, initializers, false /* finalFields */).write(packageName); } } |