diff options
author | Yigit Boyar <yboyar@google.com> | 2017-12-27 10:32:15 -0800 |
---|---|---|
committer | Yigit Boyar <yboyar@google.com> | 2017-12-27 10:32:15 -0800 |
commit | 9706a14acfd678f4c3464bf1e78a53771177e7fa (patch) | |
tree | cf96ab27750d7909cd91f9680d5ec10e54ee2873 /compiler/src/main/java/android/databinding | |
parent | 5892a7f6ef92009d9b9ff126346ce9b091f71a88 (diff) | |
download | data-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.java | 22 |
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; + } + } } |