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