Re: JsonRequestLogger --> JsonMappingException --> StackOverflowError Infinite recursion
Hi, On Wed, Feb 17, 2016 at 12:10 PM, Francois Meillet < francois.meil...@gmail.com> wrote: > Dear Team, > > The JsonRequestLogger is not working correctly: > > JsonRequestLogger --> JsonMappingException --> StackOverflowError Infinite > recursion > > Wicket : 7.2.0 > Jackson : 2.7.1 > > JsonRequestLogger throw a JsonMappingException when executing > getMapper().writeValueAsString(new RequestSessionTuple(rd, sd)); > > java.lang.RuntimeException: > com.fasterxml.jackson.databind.JsonMappingException: > Infinite recursion (StackOverflowError) > (through reference chain: > org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]-> > > > at > org.apache.wicket.extensions.requestlogger.JsonRequestLogger.getLogString(JsonRequestLogger.java:141) > ~[wicket-extensions-7.2.0.jar:7.2.0] > at > org.apache.wicket.extensions.requestlogger.JsonRequestLogger.log(JsonRequestLogger.java:125) > ~[wicket-extensions-7.2.0.jar:7.2.0] > at > org.apache.wicket.protocol.http.AbstractRequestLogger.performLogging(AbstractRequestLogger.java:325) > ~[wicket-core-7.2.0.jar:7.2.0] > at > org.apache.wicket.request.cycle.RequestCycle.onInternalDetach(RequestCycle.java:620) > ~[wicket-core-7.2.0.jar:7.2.0] > at > org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:600) > ~[wicket-core-7.2.0.jar:7.2.0] > at > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:297) > ~[wicket-core-7.2.0.jar:7.2.0] > at > org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261) > ~[wicket-core-7.2.0.jar:7.2.0] > at > com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:694) > ~[jackson-databind-2.7.1.jar:2.7.1] > at > com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) > ~[jackson-databind-2.7.1.jar:2.7.1] > at > com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672) > ~[jackson-databind-2.7.1.jar:2.7.1] > at > com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678) > ~[jackson-databind-2.7.1.jar:2.7.1] > at > com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) > ~[jackson-databind-2.7.1.jar:2.7.1] > at > com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672) > ~[jackson-databind-2.7.1.jar:2.7.1] > at > com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678) > ~[jackson-databind-2.7.1.jar:2.7.1] > at > com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) > ~[jackson-databind-2.7.1.jar:2.7.1] > at > com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672) > ~[jackson-databind-2.7.1.jar:2.7.1] > > > https://issues.apache.org/jira/browse/WICKET-6097 > I'll debug it when I have some time. > > > BTW, is it worth to mainten this logger ? > AFAIK Martijn and Emond use it in their application. But if it fails always with this then maybe they don't use it anymore. Or they use it with an older version of Jackson. I've had some problems with Jackson backward compatibility lately. > > > François > > > > > > > > > > > > >
Re: JsonRequestLogger --> JsonMappingException --> StackOverflowError Infinite recursion
Hi Martin, Jackson JacksonAnnotationIntrospector # findFilterId() method signature has been changed from findFilterId(AnnotatedClass ac) to findFilterId(Annotated a) in the JsonRequestLogger, changing this private static final class FilteredIntrospector extends JacksonAnnotationIntrospector { @Override public Object findFilterId(AnnotatedClass ac) { return "default"; } } to that resolved the problem private static final class FilteredIntrospector extends JacksonAnnotationIntrospector { @Override public Object findFilterId(Annotated a) { return "default"; } } François Le 18 févr. 2016 à 08:24, Martin Grigorov a écrit : > Hi, > > > On Wed, Feb 17, 2016 at 12:10 PM, Francois Meillet < > francois.meil...@gmail.com> wrote: > >> Dear Team, >> >> The JsonRequestLogger is not working correctly: >> >> JsonRequestLogger --> JsonMappingException --> StackOverflowError Infinite >> recursion >> >> Wicket : 7.2.0 >> Jackson : 2.7.1 >> >> JsonRequestLogger throw a JsonMappingException when executing >> getMapper().writeValueAsString(new RequestSessionTuple(rd, sd)); >> >> java.lang.RuntimeException: >> com.fasterxml.jackson.databind.JsonMappingException: >> Infinite recursion (StackOverflowError) >> (through reference chain: >> org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]-> >> >> >> at >> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.getLogString(JsonRequestLogger.java:141) >> ~[wicket-extensions-7.2.0.jar:7.2.0] >> at >> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.log(JsonRequestLogger.java:125) >> ~[wicket-extensions-7.2.0.jar:7.2.0] >> at >> org.apache.wicket.protocol.http.AbstractRequestLogger.performLogging(AbstractRequestLogger.java:325) >> ~[wicket-core-7.2.0.jar:7.2.0] >> at >> org.apache.wicket.request.cycle.RequestCycle.onInternalDetach(RequestCycle.java:620) >> ~[wicket-core-7.2.0.jar:7.2.0] >> at >> org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:600) >> ~[wicket-core-7.2.0.jar:7.2.0] >> at >> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:297) >> ~[wicket-core-7.2.0.jar:7.2.0] >> at >> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261) >> ~[wicket-core-7.2.0.jar:7.2.0] >> at >> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:694) >> ~[jackson-databind-2.7.1.jar:2.7.1] >> at >> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) >> ~[jackson-databind-2.7.1.jar:2.7.1] >> at >> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672) >> ~[jackson-databind-2.7.1.jar:2.7.1] >> at >> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678) >> ~[jackson-databind-2.7.1.jar:2.7.1] >> at >> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) >> ~[jackson-databind-2.7.1.jar:2.7.1] >> at >> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672) >> ~[jackson-databind-2.7.1.jar:2.7.1] >> at >> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678) >> ~[jackson-databind-2.7.1.jar:2.7.1] >> at >> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) >> ~[jackson-databind-2.7.1.jar:2.7.1] >> at >> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672) >> ~[jackson-databind-2.7.1.jar:2.7.1] >> >> >> https://issues.apache.org/jira/browse/WICKET-6097 >> > > I'll debug it when I have some time. > > >> >> >> BTW, is it worth to mainten this logger ? >> > > AFAIK Martijn and Emond use it in their application. > But if it fails always with this then maybe they don't use it anymore. Or > they use it with an older version of Jackson. I've had some problems with > Jackson backward compatibility lately. > > >> >> >> François >> >> >> >> >> >> >> >> >> >> >> >> >>
Re: JsonRequestLogger --> JsonMappingException --> StackOverflowError Infinite recursion
Good! The question now is how to introduce this change without breaking old applications. Having both methods looks like a solution but it may break if the application uses older version of Jackson. I think it should work. Can you try it ? Martin Grigorov Wicket Training and Consulting https://twitter.com/mtgrigorov On Thu, Feb 18, 2016 at 9:35 AM, Francois Meillet < francois.meil...@gmail.com> wrote: > Hi Martin, > > Jackson JacksonAnnotationIntrospector # findFilterId() method signature > has been changed > > from findFilterId(AnnotatedClass ac) to findFilterId(Annotated a) > > > in the JsonRequestLogger, changing this > > private static final class FilteredIntrospector extends > JacksonAnnotationIntrospector > { > @Override > public Object findFilterId(AnnotatedClass ac) > { > return "default"; > } > } > > > to that resolved the problem > > private static final class FilteredIntrospector extends > JacksonAnnotationIntrospector > { > @Override > public Object findFilterId(Annotated a) > { > return "default"; > } > } > > > François > > > > > > > > > Le 18 févr. 2016 à 08:24, Martin Grigorov a écrit : > > > Hi, > > > > > > On Wed, Feb 17, 2016 at 12:10 PM, Francois Meillet < > > francois.meil...@gmail.com> wrote: > > > >> Dear Team, > >> > >> The JsonRequestLogger is not working correctly: > >> > >> JsonRequestLogger --> JsonMappingException --> StackOverflowError > Infinite > >> recursion > >> > >> Wicket : 7.2.0 > >> Jackson : 2.7.1 > >> > >> JsonRequestLogger throw a JsonMappingException when executing > >> getMapper().writeValueAsString(new RequestSessionTuple(rd, sd)); > >> > >> java.lang.RuntimeException: > >> com.fasterxml.jackson.databind.JsonMappingException: > >> Infinite recursion (StackOverflowError) > >> (through reference chain: > >> > org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]-> > >> > >> > >> at > >> > org.apache.wicket.extensions.requestlogger.JsonRequestLogger.getLogString(JsonRequestLogger.java:141) > >> ~[wicket-extensions-7.2.0.jar:7.2.0] > >> at > >> > org.apache.wicket.extensions.requestlogger.JsonRequestLogger.log(JsonRequestLogger.java:125) > >> ~[wicket-extensions-7.2.0.jar:7.2.0] > >> at > >> > org.apache.wicket.protocol.http.AbstractRequestLogger.performLogging(AbstractRequestLogger.java:325) > >> ~[wicket-core-7.2.0.jar:7.2.0] > >> at > >> > org.apache.wicket.request.cycle.RequestCycle.onInternalDetach(RequestCycle.java:620) > >> ~[wicket-core-7.2.0.jar:7.2.0] > >> at > >> > org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:600) > >> ~[wicket-core-7.2.0.jar:7.2.0] > >> at > >> > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:297) > >> ~[wicket-core-7.2.0.jar:7.2.0] > >> at > >> > org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261) > >> ~[wicket-core-7.2.0.jar:7.2.0] > >> at > >> > com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:694) > >> ~[jackson-databind-2.7.1.jar:2.7.1] > >> at > >> > com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) > >> ~[jackson-databind-2.7.1.jar:2.7.1] > >> at > >> > com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672) > >> ~[jackson-databind-2.7.1.jar:2.7.1] > >> at > >> > com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678) > >> ~[jackson-databind-2.7.1.jar:2.7.1] > >> at > >> > com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) > >> ~[jackson-databind-2.7.1.jar:2.7.1] > >> at > >> > com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672) > >> ~[jackson-databind-2.7.1.jar:2.7.1] > >> at > >> > com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678) > >> ~[jackson-databind-2.7.1.jar:2.7.1] > >> at > >> > com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) > >> ~[jackson-databind-2.7.1.jar:2.7.1] > >> at > >> > com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672) > >> ~[jackson-databind-2.7.1.jar:2.7.1] > >> > >> > >> https://issues.apache.org/jira/browse/WICKET-6097 > >> > > > > I'll debug it when I have some time. > > > > > >> > >> > >> BTW, is it worth to mainten this logger ? > >> > > > > AFAIK Martijn and Emond use it in their application. > > But if it fails always with this then maybe they don't use it anymore. Or > > they use it with an older version of Jackson. I'
Re: JsonRequestLogger --> JsonMappingException --> StackOverflowError Infinite recursion
Before the 7.0.0 release, wicket-extension used org.codehaus.jackson jackson-mapper-asl 1.8.5 So no change can be done. 7.0.0, 7.1.0 and 7.2.0 use com.fasterxml.jackson.core jackson-databind 2.4.1.3 JacksonAnnotationIntrospector /** * @deprecated (since 2.3) Use {@link #findFilterId(Annotated)} instead */ @Deprecated @Override public Object findFilterId(AnnotatedClass ac) { return _findFilterId(ac); } @Override public Object findFilterId(Annotated a) { return _findFilterId(a); } so the findFilterId(Annotated a) can be used in the JsonRequestLogger # FilteredIntrospector findFilterId(AnnotatedClass ac) has been removed from the 2.7 release. The sole Wicket' class using Jackson I found is JacksonAnnotationIntrospector, so using Jackson 2.7.1 release can be done. Tested. ok. François Le 18 févr. 2016 à 09:43, Martin Grigorov a écrit : > Good! > > The question now is how to introduce this change without breaking old > applications. > Having both methods looks like a solution but it may break if the > application uses older version of Jackson. > I think it should work. > Can you try it ? > > > Martin Grigorov > Wicket Training and Consulting > https://twitter.com/mtgrigorov > > On Thu, Feb 18, 2016 at 9:35 AM, Francois Meillet < > francois.meil...@gmail.com> wrote: > >> Hi Martin, >> >> Jackson JacksonAnnotationIntrospector # findFilterId() method signature >> has been changed >> >> from findFilterId(AnnotatedClass ac) to findFilterId(Annotated a) >> >> >>in the JsonRequestLogger, changing this >> >>private static final class FilteredIntrospector extends >> JacksonAnnotationIntrospector >>{ >>@Override >>public Object findFilterId(AnnotatedClass ac) >>{ >>return "default"; >>} >>} >> >> >>to that resolved the problem >> >>private static final class FilteredIntrospector extends >> JacksonAnnotationIntrospector >>{ >>@Override >>public Object findFilterId(Annotated a) >>{ >>return "default"; >>} >>} >> >> >> François >> >> >> >> >> >> >> >> >> Le 18 févr. 2016 à 08:24, Martin Grigorov a écrit : >> >>> Hi, >>> >>> >>> On Wed, Feb 17, 2016 at 12:10 PM, Francois Meillet < >>> francois.meil...@gmail.com> wrote: >>> Dear Team, The JsonRequestLogger is not working correctly: JsonRequestLogger --> JsonMappingException --> StackOverflowError >> Infinite recursion Wicket : 7.2.0 Jackson : 2.7.1 JsonRequestLogger throw a JsonMappingException when executing getMapper().writeValueAsString(new RequestSessionTuple(rd, sd)); java.lang.RuntimeException: com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: >> org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]-> at >> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.getLogString(JsonRequestLogger.java:141) ~[wicket-extensions-7.2.0.jar:7.2.0] at >> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.log(JsonRequestLogger.java:125) ~[wicket-extensions-7.2.0.jar:7.2.0] at >> org.apache.wicket.protocol.http.AbstractRequestLogger.performLogging(AbstractRequestLogger.java:325) ~[wicket-core-7.2.0.jar:7.2.0] at >> org.apache.wicket.request.cycle.RequestCycle.onInternalDetach(RequestCycle.java:620) ~[wicket-core-7.2.0.jar:7.2.0] at >> org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:600) ~[wicket-core-7.2.0.jar:7.2.0] at >> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:297) ~[wicket-core-7.2.0.jar:7.2.0] at >> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261) ~[wicket-core-7.2.0.jar:7.2.0] at >> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:694) ~[jackson-databind-2.7.1.jar:2.7.1] at >> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) ~[jackson-databind-2.7.1.jar:2.7.1] at >> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672) ~[jackson-databind-2.7.1.jar:2.7.1] at >> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.j
Re: JsonRequestLogger --> JsonMappingException --> StackOverflowError Infinite recursion
I'd suggest to fix it by: 1) in Wicket 7.x upgrade Jackson to 2.6.latest and add the second method 2) in Wicket 8.x upgrade to 2.7.latest and update the argument. Martin Grigorov Wicket Training and Consulting https://twitter.com/mtgrigorov On Thu, Feb 18, 2016 at 10:39 AM, Francois Meillet < francois.meil...@gmail.com> wrote: > > Before the 7.0.0 release, wicket-extension used > > org.codehaus.jackson > jackson-mapper-asl > 1.8.5 > > So no change can be done. > > > 7.0.0, 7.1.0 and 7.2.0 use > > com.fasterxml.jackson.core > jackson-databind > 2.4.1.3 > > > > JacksonAnnotationIntrospector > > /** > * @deprecated (since 2.3) Use {@link #findFilterId(Annotated)} instead > */ > @Deprecated > @Override > public Object findFilterId(AnnotatedClass ac) { > return _findFilterId(ac); > } > > @Override > public Object findFilterId(Annotated a) { > return _findFilterId(a); > } > > so the findFilterId(Annotated a) can be used in the JsonRequestLogger # > FilteredIntrospector > > > findFilterId(AnnotatedClass ac) has been removed from the 2.7 release. > > > The sole Wicket' class using Jackson I found is > JacksonAnnotationIntrospector, > so using Jackson 2.7.1 release can be done. > Tested. ok. > > François > > > > > > > > Le 18 févr. 2016 à 09:43, Martin Grigorov a écrit : > > > Good! > > > > The question now is how to introduce this change without breaking old > > applications. > > Having both methods looks like a solution but it may break if the > > application uses older version of Jackson. > > I think it should work. > > Can you try it ? > > > > > > Martin Grigorov > > Wicket Training and Consulting > > https://twitter.com/mtgrigorov > > > > On Thu, Feb 18, 2016 at 9:35 AM, Francois Meillet < > > francois.meil...@gmail.com> wrote: > > > >> Hi Martin, > >> > >> Jackson JacksonAnnotationIntrospector # findFilterId() method signature > >> has been changed > >> > >> from findFilterId(AnnotatedClass ac) to findFilterId(Annotated a) > >> > >> > >>in the JsonRequestLogger, changing this > >> > >>private static final class FilteredIntrospector extends > >> JacksonAnnotationIntrospector > >>{ > >>@Override > >>public Object findFilterId(AnnotatedClass ac) > >>{ > >>return "default"; > >>} > >>} > >> > >> > >>to that resolved the problem > >> > >>private static final class FilteredIntrospector extends > >> JacksonAnnotationIntrospector > >>{ > >>@Override > >>public Object findFilterId(Annotated a) > >>{ > >>return "default"; > >>} > >>} > >> > >> > >> François > >> > >> > >> > >> > >> > >> > >> > >> > >> Le 18 févr. 2016 à 08:24, Martin Grigorov a > écrit : > >> > >>> Hi, > >>> > >>> > >>> On Wed, Feb 17, 2016 at 12:10 PM, Francois Meillet < > >>> francois.meil...@gmail.com> wrote: > >>> > Dear Team, > > The JsonRequestLogger is not working correctly: > > JsonRequestLogger --> JsonMappingException --> StackOverflowError > >> Infinite > recursion > > Wicket : 7.2.0 > Jackson : 2.7.1 > > JsonRequestLogger throw a JsonMappingException when executing > getMapper().writeValueAsString(new RequestSessionTuple(rd, sd)); > > java.lang.RuntimeException: > com.fasterxml.jackson.databind.JsonMappingException: > Infinite recursion (StackOverflowError) > (through reference chain: > > >> > org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]-> > > > at > > >> > org.apache.wicket.extensions.requestlogger.JsonRequestLogger.getLogString(JsonRequestLogger.java:141) > ~[wicket-extensions-7.2.0.jar:7.2.0] > at > > >> > org.apache.wicket.extensions.requestlogger.JsonRequestLogger.log(JsonRequestLogger.java:125) > ~[wicket-extensions-7.2.0.jar:7.2.0] > at > > >> > org.apache.wicket.protocol.http.AbstractRequestLogger.performLogging(AbstractRequestLogger.java:325) > ~[wicket-core-7.2.0.jar:7.2.0] > at > > >> > org.apache.wicket.request.cycle.RequestCycle.onInternalDetach(RequestCycle.java:620) > ~[wicket-core-7.2.0.jar:7.2.0] > at > > >> > org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:600) > ~[wicket-core-7.2.0.jar:7.2.0] > at > > >> > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:297) > ~[wicket-core-7.2.0.jar:7.2.0] > at > > >> > org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261) > ~[wicket-core-7.2.0.jar:7.2.0] > at > > >> > com.fa
Re: JsonRequestLogger --> JsonMappingException --> StackOverflowError Infinite recursion
sounds good François Le 18 févr. 2016 à 10:43, Martin Grigorov a écrit : > I'd suggest to fix it by: > 1) in Wicket 7.x upgrade Jackson to 2.6.latest and add the second method > 2) in Wicket 8.x upgrade to 2.7.latest and update the argument. > > Martin Grigorov > Wicket Training and Consulting > https://twitter.com/mtgrigorov > > On Thu, Feb 18, 2016 at 10:39 AM, Francois Meillet < > francois.meil...@gmail.com> wrote: > >> >> Before the 7.0.0 release, wicket-extension used >> >>org.codehaus.jackson >>jackson-mapper-asl >>1.8.5 >> >> So no change can be done. >> >> >> 7.0.0, 7.1.0 and 7.2.0 use >> >>com.fasterxml.jackson.core >>jackson-databind >>2.4.1.3 >> >> >> >> JacksonAnnotationIntrospector >> >>/** >> * @deprecated (since 2.3) Use {@link #findFilterId(Annotated)} instead >> */ >>@Deprecated >>@Override >>public Object findFilterId(AnnotatedClass ac) { >>return _findFilterId(ac); >>} >> >>@Override >>public Object findFilterId(Annotated a) { >>return _findFilterId(a); >>} >> >> so the findFilterId(Annotated a) can be used in the JsonRequestLogger # >> FilteredIntrospector >> >> >> findFilterId(AnnotatedClass ac) has been removed from the 2.7 release. >> >> >> The sole Wicket' class using Jackson I found is >> JacksonAnnotationIntrospector, >> so using Jackson 2.7.1 release can be done. >> Tested. ok. >> >> François >> >> >> >> >> >> >> >> Le 18 févr. 2016 à 09:43, Martin Grigorov a écrit : >> >>> Good! >>> >>> The question now is how to introduce this change without breaking old >>> applications. >>> Having both methods looks like a solution but it may break if the >>> application uses older version of Jackson. >>> I think it should work. >>> Can you try it ? >>> >>> >>> Martin Grigorov >>> Wicket Training and Consulting >>> https://twitter.com/mtgrigorov >>> >>> On Thu, Feb 18, 2016 at 9:35 AM, Francois Meillet < >>> francois.meil...@gmail.com> wrote: >>> Hi Martin, Jackson JacksonAnnotationIntrospector # findFilterId() method signature has been changed from findFilterId(AnnotatedClass ac) to findFilterId(Annotated a) in the JsonRequestLogger, changing this private static final class FilteredIntrospector extends JacksonAnnotationIntrospector { @Override public Object findFilterId(AnnotatedClass ac) { return "default"; } } to that resolved the problem private static final class FilteredIntrospector extends JacksonAnnotationIntrospector { @Override public Object findFilterId(Annotated a) { return "default"; } } François Le 18 févr. 2016 à 08:24, Martin Grigorov a >> écrit : > Hi, > > > On Wed, Feb 17, 2016 at 12:10 PM, Francois Meillet < > francois.meil...@gmail.com> wrote: > >> Dear Team, >> >> The JsonRequestLogger is not working correctly: >> >> JsonRequestLogger --> JsonMappingException --> StackOverflowError Infinite >> recursion >> >> Wicket : 7.2.0 >> Jackson : 2.7.1 >> >> JsonRequestLogger throw a JsonMappingException when executing >> getMapper().writeValueAsString(new RequestSessionTuple(rd, sd)); >> >> java.lang.RuntimeException: >> com.fasterxml.jackson.databind.JsonMappingException: >> Infinite recursion (StackOverflowError) >> (through reference chain: >> >> org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]-> >> >> >> at >> >> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.getLogString(JsonRequestLogger.java:141) >> ~[wicket-extensions-7.2.0.jar:7.2.0] >> at >> >> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.log(JsonRequestLogger.java:125) >> ~[wicket-extensions-7.2.0.jar:7.2.0] >> at >> >> org.apache.wicket.protocol.http.AbstractRequestLogger.performLogging(AbstractRequestLogger.java:325) >> ~[wicket-core-7.2.0.jar:7.2.0] >> at >> >> org.apache.wicket.request.cycle.RequestCycle.onInternalDetach(RequestCycle.java:620) >> ~[wicket-core-7.2.0.jar:7.2.0] >> at >> >> org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:600) >> ~[wicket-core-7.2.0.jar:7.2.0] >> at >> >> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:297) >> ~[w