summaryrefslogtreecommitdiff
path: root/compiler/src/main/java/android/databinding
diff options
context:
space:
mode:
authorYigit Boyar <yboyar@google.com>2017-12-27 10:32:15 -0800
committerYigit Boyar <yboyar@google.com>2017-12-27 10:32:15 -0800
commit9706a14acfd678f4c3464bf1e78a53771177e7fa (patch)
treecf96ab27750d7909cd91f9680d5ec10e54ee2873 /compiler/src/main/java/android/databinding
parent5892a7f6ef92009d9b9ff126346ce9b091f71a88 (diff)
downloaddata-binding-9706a14acfd678f4c3464bf1e78a53771177e7fa.tar.gz
Ignore serial uid for IntermediateV1
This CL fixes a backward compatibility issue by ignoring the serial id in a class which we forgot to put a serial id. Bug: 71057619 Test: local Change-Id: I345ed2e6296ab6b338809153a38ac16052af2433
Diffstat (limited to 'compiler/src/main/java/android/databinding')
-rw-r--r--compiler/src/main/java/android/databinding/tool/util/GenerationalClassUtil.java22
1 files changed, 21 insertions, 1 deletions
diff --git a/compiler/src/main/java/android/databinding/tool/util/GenerationalClassUtil.java b/compiler/src/main/java/android/databinding/tool/util/GenerationalClassUtil.java
index c4872e40..b6e97c56 100644
--- a/compiler/src/main/java/android/databinding/tool/util/GenerationalClassUtil.java
+++ b/compiler/src/main/java/android/databinding/tool/util/GenerationalClassUtil.java
@@ -16,6 +16,7 @@
package android.databinding.tool.util;
+import android.databinding.annotationprocessor.ProcessExpressions;
import android.databinding.tool.DataBindingBuilder;
import android.databinding.tool.DataBindingCompilerArgs;
@@ -31,6 +32,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+import java.io.ObjectStreamClass;
import java.io.OutputStream;
import java.io.Serializable;
import java.util.ArrayList;
@@ -139,7 +141,7 @@ public class GenerationalClassUtil {
private static Serializable fromInputStream(InputStream inputStream)
throws IOException, ClassNotFoundException {
- ObjectInputStream in = new ObjectInputStream(inputStream);
+ ObjectInputStream in = new IgnoreSerialIdObjectInputStream(inputStream);
return (Serializable) in.readObject();
}
@@ -188,4 +190,22 @@ public class GenerationalClassUtil {
return mExtension;
}
}
+
+ private static class IgnoreSerialIdObjectInputStream extends ObjectInputStream {
+
+ public IgnoreSerialIdObjectInputStream(InputStream in) throws IOException {
+ super(in);
+ }
+
+ @Override
+ protected ObjectStreamClass readClassDescriptor()
+ throws IOException, ClassNotFoundException {
+ ObjectStreamClass original = super.readClassDescriptor();
+ // hack for https://issuetracker.google.com/issues/71057619
+ if (ProcessExpressions.IntermediateV1.class.getName().equals(original.getName())) {
+ return ObjectStreamClass.lookup(ProcessExpressions.IntermediateV1.class);
+ }
+ return original;
+ }
+ }
}