summaryrefslogtreecommitdiff
path: root/gradlePlugin
diff options
context:
space:
mode:
authorYigit Boyar <yboyar@google.com>2015-09-25 14:48:56 -0700
committerYigit Boyar <yboyar@google.com>2015-09-25 14:53:26 -0700
commit890b4850c628f04eb75397e427ba7074e4f9c386 (patch)
treebed1e00e186ced57fa3074c8df0d74417c777abf /gradlePlugin
parentd58bb64076c5fdd12a082c595eb858fa9d32d6ae (diff)
downloaddata-binding-890b4850c628f04eb75397e427ba7074e4f9c386.tar.gz
Add support for gradle 1.4.0-beta3
This CL changes how we find original xml file. Previously, it was a comment in the XML file. Now it is another interface we can query (nicer). This CL adds support for it but still keeps the XML reference support. Bug: 24408701 Change-Id: I0ac91b2f81f7264735f11d4ded154a2fd807e776
Diffstat (limited to 'gradlePlugin')
-rw-r--r--gradlePlugin/src/main/java/android/databinding/tool/DataBinderPlugin.java1
-rw-r--r--gradlePlugin/src/main/java/android/databinding/tool/DataBindingProcessLayoutsTask.java21
2 files changed, 22 insertions, 0 deletions
diff --git a/gradlePlugin/src/main/java/android/databinding/tool/DataBinderPlugin.java b/gradlePlugin/src/main/java/android/databinding/tool/DataBinderPlugin.java
index a116dc13..ae010548 100644
--- a/gradlePlugin/src/main/java/android/databinding/tool/DataBinderPlugin.java
+++ b/gradlePlugin/src/main/java/android/databinding/tool/DataBinderPlugin.java
@@ -295,6 +295,7 @@ public class DataBinderPlugin implements Plugin<Project> {
task.setSdkDir(sdkDir);
task.setXmlOutFolder(xmlOutDir);
task.setMinSdk(minSdkVersion.getApiLevel());
+ task.setBlameLogDir(variantData.getScope().getResourceBlameLogDir());
logD("TASK adding dependency on %s for %s", task, processResTask);
processResTask.dependsOn(task);
diff --git a/gradlePlugin/src/main/java/android/databinding/tool/DataBindingProcessLayoutsTask.java b/gradlePlugin/src/main/java/android/databinding/tool/DataBindingProcessLayoutsTask.java
index 320d4dce..1e6906bc 100644
--- a/gradlePlugin/src/main/java/android/databinding/tool/DataBindingProcessLayoutsTask.java
+++ b/gradlePlugin/src/main/java/android/databinding/tool/DataBindingProcessLayoutsTask.java
@@ -15,6 +15,9 @@
*/
package android.databinding.tool;
+import com.android.ide.common.blame.MergingLog;
+import com.android.ide.common.blame.SourceFile;
+
import android.databinding.tool.processing.Scope;
import android.databinding.tool.util.L;
@@ -41,12 +44,26 @@ public class DataBindingProcessLayoutsTask extends DefaultTask {
private File xmlOutFolder;
private int minSdk;
+ private File mBlameLogDir;
@TaskAction
public void processResources()
throws ParserConfigurationException, SAXException, XPathExpressionException,
IOException {
L.d("running process layouts task %s", getName());
+ if (mBlameLogDir != null) {
+ final MergingLog mergingLog = new MergingLog(mBlameLogDir);
+ xmlProcessor.setOriginalFileLookup(new LayoutXmlProcessor.OriginalFileLookup() {
+ @Override
+ public File getOriginalFileFor(File file) {
+ SourceFile input = new SourceFile(file);
+ SourceFile original = mergingLog.find(input);
+ // merged log api returns the file back if original cannot be found.
+ // it is not what we want so we alter the response.
+ return original == input ? null : original.getSourceFile();
+ }
+ });
+ }
xmlProcessor.processResources(minSdk);
Scope.assertNoError();
}
@@ -86,4 +103,8 @@ public class DataBindingProcessLayoutsTask extends DefaultTask {
public void setMinSdk(int minSdk) {
this.minSdk = minSdk;
}
+
+ public void setBlameLogDir(File blameLogDir) {
+ mBlameLogDir = blameLogDir;
+ }
}