diff options
author | Tor Norbye <tnorbye@google.com> | 2013-09-18 10:48:48 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2013-09-18 12:38:42 -0700 |
commit | 5ad8c27bb18ebd6aa2fd9b14cdea8de275852eed (patch) | |
tree | 137fb78d803bdf685d35bed3b0d557a773597833 /android-gradle-jps | |
parent | b634f7e7ee349be7eb70033f7fc8b9a32b7ad9b3 (diff) | |
download | idea-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.java | 24 |
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); |