Closed GoogleCodeExporter closed 9 years ago
Can you actually demonstrate this case?
Serializing a RegularImmutableList should call ImmutableList.writeReplace(),
which serializes as an ImmutableList.SerializedForm, which readResolve()s to a
copyOf(Object[]) which should generate a normal RegularImmutableList again.
Original comment by lowas...@google.com
on 2 Oct 2014 at 3:08
I was unable to create a minimal working example, so it's more probably an
issue in the pojo serializer of MapDB. Here is the stacktrace anyway:
java.lang.NullPointerException
at com.google.common.collect.Iterators.forArray(Iterators.java:1042)
at com.google.common.collect.RegularImmutableList.listIterator(RegularImmutableList.java:106)
at com.google.common.collect.ImmutableList.listIterator(ImmutableList.java:344)
at com.google.common.collect.ImmutableList.iterator(ImmutableList.java:340)
at com.google.common.collect.ImmutableList.iterator(ImmutableList.java:61)
at com.google.common.collect.Lists.equalsImpl(Lists.java:918)
at com.google.common.collect.ImmutableList.equals(ImmutableList.java:567)
at org.apache.commons.lang3.builder.EqualsBuilder.append(EqualsBuilder.java:465)
at org.apache.commons.lang3.builder.EqualsBuilder.reflectionAppend(EqualsBuilder.java:411)
at org.apache.commons.lang3.builder.EqualsBuilder.reflectionEquals(EqualsBuilder.java:360)
at org.apache.commons.lang3.builder.EqualsBuilder.reflectionEquals(EqualsBuilder.java:271)
at de.teckpro.fw.valueobject.RechnerValueObject.equals(RechnerValueObject.java:65)
at org.apache.commons.lang3.builder.EqualsBuilder.append(EqualsBuilder.java:465)
at org.apache.commons.lang3.builder.EqualsBuilder.reflectionAppend(EqualsBuilder.java:411)
at org.apache.commons.lang3.builder.EqualsBuilder.reflectionEquals(EqualsBuilder.java:360)
at org.apache.commons.lang3.builder.EqualsBuilder.reflectionEquals(EqualsBuilder.java:271)
at de.teckpro.fw.valueobject.RechnerValueObject.equals(RechnerValueObject.java:65)
at org.apache.commons.lang3.builder.EqualsBuilder.append(EqualsBuilder.java:465)
at org.apache.commons.lang3.builder.EqualsBuilder.append(EqualsBuilder.java:655)
at de.teckpro.aspekt.Cache$CacheKey.equals(Cache.aj:276)
at org.mapdb.Hasher$1.equals(Hasher.java:42)
at org.mapdb.HTreeMap.getInner(HTreeMap.java:452)
at org.mapdb.HTreeMap.getPeek(HTreeMap.java:428)
at org.mapdb.HTreeMap.containsKey(HTreeMap.java:300)
Original comment by gomarkus
on 2 Oct 2014 at 7:43
So it's another library doing the serialization? That sounds like the problem,
if it respects some parts of the standard Java serialization scheme (like
transient) but not others (like writeReplace and readResolve). We do have tests
that check that our collections serialize and deserialize correctly.
Original comment by cgdecker@google.com
on 3 Oct 2014 at 12:51
This issue has been migrated to GitHub.
It can be found at https://github.com/google/guava/issues/<issue id>
Original comment by cgdecker@google.com
on 1 Nov 2014 at 4:08
Original comment by cgdecker@google.com
on 3 Nov 2014 at 9:07
Original issue reported on code.google.com by
gomarkus
on 2 Oct 2014 at 11:55