aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-05-19 17:46:26 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-05-19 18:05:23 +0000
commitd3cccae7b663d5defea2943509b0d9d245279830 (patch)
treefda1f7666033ee03ba3b01409ab20ad1b211a7e5 /src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java
parent5d54cec0b27ba9aef183b46a354af061860eff23 (diff)
*** Reason for rollback *** Breaks Bazel due to internal patch for Round qualifier. *** Original change description *** * Adds handling for anydpi and watch, two unsupported qualifiers in FolderConfiguration. * Handles resources nested in directories. * Makes the resource processing resilient to invalid qualifiers. -- MOS_MIGRATED_REVID=122747030
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java24
1 files changed, 6 insertions, 18 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java b/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java
index 4e78428b88..0ec40d8aa3 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java
+++ b/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java
@@ -21,7 +21,6 @@ import com.google.common.collect.Iterables;
import com.google.devtools.build.android.xml.StyleableXmlResourceValue;
import com.android.ide.common.res2.MergingException;
-import com.android.resources.ResourceFolderType;
import java.io.IOException;
import java.nio.file.FileVisitOption;
@@ -38,7 +37,6 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
import java.util.Set;
-import java.util.logging.Logger;
import javax.annotation.concurrent.Immutable;
import javax.annotation.concurrent.NotThreadSafe;
@@ -54,7 +52,6 @@ import javax.xml.stream.XMLStreamException;
*/
@Immutable
public class ParsedAndroidData {
- private static final Logger logger = Logger.getLogger(ParsedAndroidData.class.getCanonicalName());
@NotThreadSafe
static class Builder {
@@ -245,7 +242,7 @@ public class ParsedAndroidData {
private final KeyValueConsumer<DataKey, DataResource> overwritingConsumer;
private final KeyValueConsumer<DataKey, DataResource> combiningResources;
private final List<Exception> errors;
- private ResourceFolderType folderType;
+ private boolean inValuesSubtree;
private FullyQualifiedName.Factory fqnFactory;
private final XMLInputFactory xmlInputFactory = XMLInputFactory.newFactory();
@@ -279,28 +276,19 @@ public class ParsedAndroidData {
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
throws IOException {
final String[] dirNameAndQualifiers = dir.getFileName().toString().split("-");
- folderType = ResourceFolderType.getTypeByName(dirNameAndQualifiers[0]);
- if (folderType == null) {
- return FileVisitResult.CONTINUE;
- }
- try {
- fqnFactory = FullyQualifiedName.Factory.fromDirectoryName(dirNameAndQualifiers);
- return FileVisitResult.CONTINUE;
- } catch (IllegalArgumentException e) {
- logger.warning(
- String.format("%s is an invalid resource directory due to %s", dir, e.getMessage()));
- return FileVisitResult.SKIP_SUBTREE;
- }
+ inValuesSubtree = "values".equals(dirNameAndQualifiers[0]);
+ fqnFactory = FullyQualifiedName.Factory.fromDirectoryName(dirNameAndQualifiers);
+ return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException {
try {
if (!Files.isDirectory(path) && !path.getFileName().toString().startsWith(".")) {
- if (folderType == ResourceFolderType.VALUES) {
+ if (inValuesSubtree) {
DataResourceXml.parse(
xmlInputFactory, path, fqnFactory, overwritingConsumer, combiningResources);
- } else if (folderType != null) {
+ } else {
String rawFqn = deriveRawFullyQualifiedName(path);
FullyQualifiedName key = fqnFactory.parse(rawFqn);
overwritingConsumer.consume(key, DataValueFile.of(path));