sounds good

François 








Le 18 févr. 2016 à 10:43, Martin Grigorov <mgrigo...@apache.org> 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
>> 
>>        <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