Hi Tatu,
Long time listener, first time caller! My company is hoping to get a bit
closer to the bleeding edge with jackson, so I figured I'd take a stab at
helping you test it out.
Not sure where you want feedback, so I'm just going to reply for now. I'm
currently on 2.9.10 and trying out 2.11.0.rc1, and so far I've run into a
few issues. I'll keep poking to see if any of the others are worth
surfacing, but so far we have a strange NPE:
java.lang.NullPointerException: null
at
scala.collection.mutable.ArrayOps$ofRef$.length$extension(ArrayOps.scala:204)
at
scala.collection.mutable.ArrayOps$ofRef.length(ArrayOps.scala:204)
at scala.collection.SeqLike.size(SeqLike.scala:108)
at scala.collection.SeqLike.size$(SeqLike.scala:108)
at
scala.collection.mutable.ArrayOps$ofRef.size(ArrayOps.scala:198)
at
scala.collection.IndexedSeqLike.sizeHintIfCheap(IndexedSeqLike.scala:99)
at
scala.collection.IndexedSeqLike.sizeHintIfCheap$(IndexedSeqLike.scala:99)
at
scala.collection.mutable.ArrayOps$ofRef.sizeHintIfCheap(ArrayOps.scala:198)
at
scala.collection.mutable.Builder.sizeHint(Builder.scala:80)
at
scala.collection.mutable.Builder.sizeHint$(Builder.scala:79)
at
scala.collection.mutable.ArrayBuilder.sizeHint(ArrayBuilder.scala:25)
at
scala.collection.TraversableLike.builder$1(TraversableLike.scala:234)
at
scala.collection.TraversableLike.map(TraversableLike.scala:237)
at
scala.collection.TraversableLike.map$(TraversableLike.scala:231)
at
scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:198)
at
com.fasterxml.jackson.module.scala.introspect.ScalaAnnotationIntrospector$ScalaValueInstantiator.<init>(ScalaAnnotationIntrospectorModule.scala:129)
at
com.fasterxml.jackson.module.scala.introspect.ScalaAnnotationIntrospector$.findValueInstantiator(ScalaAnnotationIntrospectorModule.scala:159)
at
com.fasterxml.jackson.databind.deser.BasicDeserializerFactory.findValueInstantiator(BasicDeserializerFactory.java:231)
at
com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.buildBeanDeserializer(BeanDeserializerFactory.java:220)
at
com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:143)
at
com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:414)
at
com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:349)
at
com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:264)
at
com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244)
at
com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142)
at
com.fasterxml.jackson.databind.DeserializationContext.findContextualValueDeserializer(DeserializationContext.java:446)
at
com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.createContextual(CollectionDeserializer.java:183)
at
com.fasterxml.jackson.module.scala.deser.GenericFactoryDeserializerResolver$Deserializer.createContextual(GenericFactoryDeserializerResolver.scala:71)
at
com.fasterxml.jackson.module.scala.deser.GenericFactoryDeserializerResolver$Deserializer.createContextual(GenericFactoryDeserializerResolver.scala:62)
at
com.fasterxml.jackson.databind.DeserializationContext.handleSecondaryContextualization(DeserializationContext.java:684)
at
com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:484)
at
com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:4621)
at
com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:4400)
at
com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2745)
It looks like it's because of this line:
https://github.com/FasterXML/jackson-module-scala/blob/master/src/main/scala/com/fasterxml/jackson/module/scala/introspect/ScalaAnnotationIntrospectorModule.scala#L128
val args = delegate.getFromObjectArguments(None.orNull)
None.orNull always returns null, so we can probably replace this with
val args = delegate.getFromObjectArguments(null)
for no change. I'm somewhat stumped what else might be going on here
though–I don't think we ever make a custom ValueInstantiator in our
codebase, so I don't know how getFromObjectArguments could end up returning
null. Do you have any idea what might be going on? I'll try moving to
2.10.3 too and will see if this is still an issue.
Best,
Moses
On Wed, Mar 25, 2020 at 2:45 PM Tatu Saloranta <[email protected]> wrote:
> As some of you may have noticed, pre-release version 2.11.0.rc1 is now out.
> While it should be quite close to eventual 2.11.0, some things may
> still change but my hope is that all compatibility-related changes are
> in.
>
> The main goal for doing pre-release version(s) is to have one last
> chance to find issues related to backwards compatibility with previous
> minor versions. While we try to keep compatibility according to
> Semantic Versioning guidelines, sometimes there are accidental changes
> that violate this.
> So we would like to find such issues before 2.11.0 is released, and
> fix issues where possible; or mitigate if they can not be; or at very
> least document changes in behavior where change is actually
> intentional.
>
> Changes included are detailed here:
>
> https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.11
>
> including section "Changes, Behavior", which included likeliest
> changes that might affect your code. For this release there are so far
> 3 things:
>
> 1. Default serialization ordering now considers @JsonProperty(index = )
> 2. Avro format backend will change schema type indicated for `byte[]`,
> `java.util.UUID`
> 3. Timezone offset in default java.util.Date, java.util.Calendar
> serialization will now include colon (like +00:00) by default (see
> databind#2643 below)
>
> But there may well be other unintended changes. We would like to hear
> about unknown changes, as well as feedback on above-listed intentional
> changes
>
> At this point I hope to spend at least 2 weeks, but no more than 4
> weeks before releasing 2.11.0.
> All feedback on this pre-release would be welcome: including "it seems
> to work fine, no problem when switching 2.10.3" as well as reports
> about issues found.
>
> Happy hacking,
>
> -+ Tatu +-
>
> --
> You received this message because you are subscribed to the Google Groups
> "jackson-user" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/jackson-user/CAL4a10hJLpZ4QZe%2B8A0cF%2BdvcxAhtAYD-jxQy6YxLpTBGbH%2BoA%40mail.gmail.com
> .
>
--
You received this message because you are subscribed to the Google Groups
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jackson-user/CAEYWR9vNfYv8thSaE7K3omT0VsmDO-LanDz2craf_9hjnr6ngA%40mail.gmail.com.