I was able to try out the snapshot with jackson-module-scala, and the fix seems to work!
On Mon, Mar 30, 2020 at 5:21 PM Nakamura <[email protected]> wrote: > Thanks! I'll look into it > > On Mon, Mar 30, 2020, 4:12 PM Tatu Saloranta <[email protected]> wrote: > >> On Mon, Mar 30, 2020 at 10:52 AM Nakamura <[email protected]> >> wrote: >> >>> Hi Tatu, >>> PJ looked into it >>> <https://github.com/FasterXML/jackson-module-scala/issues/445>, and >>> thinks he has managed to fix the NPE problem. When you get a chance, can >>> you cut an rc2 so I can try it out? >>> Thanks, >>> Moses >>> >> >> Hi there! >> >> Unfortunately effort to release a full set is high enough (2-4 hours of >> work) that I don't plan on necessary doing more release candidates. >> >> But what I will do is to ensure that `2.11.0-SNAPSHOT` from Sonatype OSS >> repository has latest versions of `jackson-core`, `jackson-databind` (head >> of `2.11` branch will produce `2.11.0-SNAPSHOT`) >> This should be the case now (I did `mvn deploy` on all 3 projects locally >> after syncing with 2.11). >> >> What is needed beyond this is similar for Scala module. Maybe PJ can help >> with that (for me `sbt` just does not work, at least not for publishing: I >> am also not sure if snapshot build works similar to Maven). >> >> You could also achieve this locally by doing `mvn install` on these >> libraries (except for Scala which uses `sbt` for builds); that will publish >> snapshot locally. >> >> -+ Tatu +- >> >> >>> >>> On Fri, Mar 27, 2020 at 10:31 PM Tatu Saloranta <[email protected]> >>> wrote: >>> >>>> On Fri, Mar 27, 2020 at 2:28 PM Nakamura <[email protected]> >>>> wrote: >>>> >>>>> Thanks, I filed a ticket here >>>>> <https://github.com/FasterXML/jackson-module-scala/issues/445>, PJ is >>>>> helping me out! One other thing I noticed was that a Map we had >>>>> previously >>>>> been deserializing as a null is now being deserialized as an empty Map >>>>> when >>>>> it's not specified in the JSON. Is that expected? I think it's a nicer >>>>> behavior, so I'm on board, but I didn't see that in the release notes, so >>>>> I >>>>> wanted to make sure it wasn't a bug. >>>>> >>>> >>>> Hmmh. I wouldn't think this should have changed by default, but there >>>> are new settings that allow specifying this behavior, see: >>>> >>>> https://medium.com/@cowtowncoder/jackson-2-9-features-b2a19029e9ff >>>> >>>> (under "Null replacement/error/skipping (on deserialization") >>>> >>>> so that incoming `null` can be replaced with "empty" value for type. >>>> >>>> I am guessing that maybe this feature is somehow enabled by Scala >>>> module, possibly to achieve something else (avoid NPEs?) >>>> >>>> -+ Tatu +- >>>> >>>> >>>> >>>> >>>>> >>>>> On Fri, Mar 27, 2020 at 11:30 AM Tatu Saloranta <[email protected]> >>>>> wrote: >>>>> >>>>>> On Thu, Mar 26, 2020 at 6:49 PM Nakamura <[email protected]> wrote: >>>>>> >>>>>>> Hi Tatu, >>>>>>> >>>>>> >>>>>> Hello there! >>>>>> >>>>>> >>>>>>> >>>>>>> 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. >>>>>>> >>>>>> >>>>>> Excellent, thank you for helping. >>>>>> >>>>>> >>>>>>> >>>>>>> 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) >>>>>>> >>>>>>> >>>>>> That does look strange. >>>>>> >>>>>> >>>>>>> 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. >>>>>>> >>>>>>> >>>>>> Could you please file an issue with same information for Scala module: >>>>>> >>>>>> https://github.com/FasterXML/jackson-module-scala/issues >>>>>> >>>>>> since it seems like it is triggered within that module. I can then >>>>>> work with Scala module owners (I do not work on that module myself) to >>>>>> figure out where changes/workaround is needed. >>>>>> >>>>>> Thank you! >>>>>> >>>>>> -+ Tatu +- >>>>>> >>>>>> >>>>>> >>>>>>> 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 >>>>>>> <https://groups.google.com/d/msgid/jackson-user/CAEYWR9vNfYv8thSaE7K3omT0VsmDO-LanDz2craf_9hjnr6ngA%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>>>> . >>>>>>> >>>>>> -- >>>>>> 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/CAGrxA252M%3Dx_DLJ0X0VRY9KAURFEHKkZWj77e2iTMCP8DKh6Zg%40mail.gmail.com >>>>>> <https://groups.google.com/d/msgid/jackson-user/CAGrxA252M%3Dx_DLJ0X0VRY9KAURFEHKkZWj77e2iTMCP8DKh6Zg%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> >>>>> -- >>>>> 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/CAEYWR9uEp%3Dcw3qszjU8_EQFbxPfaMdY4RxgQLDVmnn%3DG0PzFXQ%40mail.gmail.com >>>>> <https://groups.google.com/d/msgid/jackson-user/CAEYWR9uEp%3Dcw3qszjU8_EQFbxPfaMdY4RxgQLDVmnn%3DG0PzFXQ%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> -- >>>> 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/CAGrxA26r%3D6%2BwGA%3DmmyDjMZnonLbtAMUBWLiqsDD%2B%3DNAhMwyz9g%40mail.gmail.com >>>> <https://groups.google.com/d/msgid/jackson-user/CAGrxA26r%3D6%2BwGA%3DmmyDjMZnonLbtAMUBWLiqsDD%2B%3DNAhMwyz9g%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- >>> 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/CAEYWR9tcA3WjCKsedd7%2B8Ww6b7CWh%2B2Bn10xBf3368-BhFt43A%40mail.gmail.com >>> <https://groups.google.com/d/msgid/jackson-user/CAEYWR9tcA3WjCKsedd7%2B8Ww6b7CWh%2B2Bn10xBf3368-BhFt43A%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- >> 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/CAGrxA25YoxNTVtKZ_92A6E_E2vRVh5ZErXTLm0C%3DqdEpjmwu5Q%40mail.gmail.com >> <https://groups.google.com/d/msgid/jackson-user/CAGrxA25YoxNTVtKZ_92A6E_E2vRVh5ZErXTLm0C%3DqdEpjmwu5Q%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- 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/CAEYWR9u11BzSwNEta10E2kDyYRL48AThVh2z%3DRNbpR6kKazNaQ%40mail.gmail.com.
