summaryrefslogtreecommitdiff
path: root/android-gradle-jps
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2013-09-18 10:48:48 -0700
committerTor Norbye <tnorbye@google.com>2013-09-18 12:38:42 -0700
commit5ad8c27bb18ebd6aa2fd9b14cdea8de275852eed (patch)
tree137fb78d803bdf685d35bed3b0d557a773597833 /android-gradle-jps
parentb634f7e7ee349be7eb70033f7fc8b9a32b7ad9b3 (diff)
downloadidea-5ad8c27bb18ebd6aa2fd9b14cdea8de275852eed.tar.gz
Detect <include> tag cycles in layouts
If there are cyclic dependencies in the layouts, detect this during rendering and emit a suitable warning message (displaying the dependency chain) and stop rendering. Before this, you'd just (eventually) get a StackOverflowException with no further details. Also use the new file<->URL conversion utilities in SdkUtils. Change-Id: I0f11dac9d8501e478a809af2338de15cde470f2c
Diffstat (limited to 'android-gradle-jps')
-rw-r--r--android-gradle-jps/src/com/android/tools/idea/jps/output/parser/aapt/AbstractAaptOutputParser.java24
1 files changed, 7 insertions, 17 deletions
diff --git a/android-gradle-jps/src/com/android/tools/idea/jps/output/parser/aapt/AbstractAaptOutputParser.java b/android-gradle-jps/src/com/android/tools/idea/jps/output/parser/aapt/AbstractAaptOutputParser.java
index c4efa3e96d7..06f564ec455 100644
--- a/android-gradle-jps/src/com/android/tools/idea/jps/output/parser/aapt/AbstractAaptOutputParser.java
+++ b/android-gradle-jps/src/com/android/tools/idea/jps/output/parser/aapt/AbstractAaptOutputParser.java
@@ -20,6 +20,7 @@ import com.android.tools.idea.jps.AndroidGradleJps;
import com.android.tools.idea.jps.output.parser.CompilerOutputParser;
import com.android.tools.idea.jps.output.parser.OutputLineReader;
import com.android.tools.idea.jps.output.parser.ParsingFailedException;
+import com.android.utils.SdkUtils;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.Pair;
import com.intellij.util.containers.SoftValueHashMap;
@@ -32,8 +33,6 @@ import org.jetbrains.jps.util.JpsPathUtil;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
-import java.net.URISyntaxException;
-import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -339,21 +338,12 @@ public abstract class AbstractAaptOutputParser implements CompilerOutputParser {
// JpsPathUtil.urlToPath just chops off the prefix; try a little harder
// for example to decode %2D's which are used by the MergedResourceWriter to
// encode --'s in the path, since those are invalid in XML comments
- try {
- URL url = new URL(originalPath);
- try {
- sourceFile = new File(url.toURI());
- }
- catch (IllegalArgumentException e) {
- LOG.warn("Invalid file URL: " + originalPath);
- }
- catch (URISyntaxException e) {
- sourceFile = new File(url.getPath());
- }
- }
- catch (MalformedURLException e) {
- LOG.warn("Invalid file URL: " + originalPath);
- }
+ try {
+ sourceFile = SdkUtils.urlToFile(originalPath);
+ }
+ catch (MalformedURLException e) {
+ LOG.warn("Invalid file URL: " + originalPath);
+ }
}
} else {
sourceFile = new File(sourcePath);