Fix thread safety issue when getting api-versions.xml resource
I245f05cf2ebb5e6430e5396e5cfe5b590e92f57b got reverted because
of a thread safety issue caused by the usage of
getResourceAsStream(). This CL fixes that issue by using
getResource(resource).openStream() instead.
Bug: 137929327
Bug: 156605931
Test: existing + postsubmit should pass consistently
Change-Id: I750adc3f8c05e337346bbfa97ae2461e5a703e9d
diff --git a/compiler/src/main/java/android/databinding/tool/reflection/SdkUtil.java b/compiler/src/main/java/android/databinding/tool/reflection/SdkUtil.java
index d9a82d6..5782991 100644
--- a/compiler/src/main/java/android/databinding/tool/reflection/SdkUtil.java
+++ b/compiler/src/main/java/android/databinding/tool/reflection/SdkUtil.java
@@ -112,7 +112,9 @@
InputStream inputStream = null;
try {
if (apiFile == null || !apiFile.exists()) {
- inputStream = getClass().getClassLoader().getResourceAsStream("api-versions.xml");
+ // Use getResource().openStream() instead of getResourceAsStream() to avoid
+ // concurrency issue (see http://issuetracker.google.com/137929327 for details)
+ inputStream = getClass().getClassLoader().getResource("api-versions.xml").openStream();
} else {
inputStream = FileUtils.openInputStream(apiFile);
}