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
>
>         <groupId>org.codehaus.jackson</groupId>
>         <artifactId>jackson-mapper-asl</artifactId>
>         <version>1.8.5</version>
>
> So no change can be done.
>
>
> 7.0.0, 7.1.0 and 7.2.0 use
>
>         <groupId>com.fasterxml.jackson.core</groupId>
>         <artifactId>jackson-databind</artifactId>
>         <version>2.4.1.3</version>
>
>
>
> 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 <mgrigo...@apache.org> 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 <mgrigo...@apache.org> 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
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>
> >>
>
>

Reply via email to