Jörg Schaible wrote:

> 
> Or as alternative, set the ConverterRegistry to null. Then you can stay
> with your current implementation of the ConverterLookup.

Sorry, this information was wrong. Does not work in the current version 
either ... :-/

> 
> Jörg Schaible wrote:
> 
>> Hi Alvaro,
>> 
>> there's unfortunately a bug in XStream, that requires the ConverterLookup
>> and ConverterRegistry to be the same instance currently. You will
>> therefore have to implement also ConverterRegistry and may simply ignore
>> anything provided with the registerConverter method.
>> 
>> Sorry for the inconvenience, it will be fixed with next version.
>> 
>> - Jörg
>> 
>> Alvaro wrote:
>> 
>>> 
>>> ----------  Forwarded Mail  ----------
>>> 
>>> Subject: ConverterLookup
>>> Date: 24th December 2013, 13:02:09
>>> From: Alvaro <alv...@pwntester.com>
>>> To: joerg.schai...@gmx.de
>>> 
>>> Hi Joerg,
>>> 
>>> Im trying to write to the xstream dev list but get bounced by the
>>> mailing daemon even though Im subscribed. Maybe you can help me with
>>> this problem since you are one of the developers of the ConverterLookup
>>> class.
>>> 
>>> Im trying to register the folloging ConverterLookup:
>>> 
>>> import com.thoughtworks.xstream.converters.ConversionException;
>>> import com.thoughtworks.xstream.converters.Converter;
>>> import com.thoughtworks.xstream.converters.ConverterLookup;
>>> import com.thoughtworks.xstream.converters.basic.NullConverter;
>>> 
>>> public class MyConverterLookup implements ConverterLookup {
>>> 
>>>     private final Converter nullConverter = new NullConverter();
>>> 
>>>     public Converter lookupConverterForType(Class type) throws
>>> ConversionException {
>>>         if (type == null) {
>>>             return nullConverter;
>>>         }
>>>         if (type.equals(Contact.class)) {
>>>             return new ContactConverter();
>>>         } else {
>>>             throw new ConversionException("No converter specified for "
>>>             +
>>> type);
>>>         }
>>> 
>>>     }
>>> }
>>> 
>>> 
>>> But Im getting the following exception:
>>> 
>>> 
>>> Exception in thread "main"
>>> org.springframework.oxm.UncategorizedMappingException: Unknown XStream
>>> exception; nested exception is
>>> com.thoughtworks.xstream.InitializationException: Could not instantiate
>>> mapper : com.thoughtworks.xstream.mapper.AnnotationMapper : argument
>>> type mismatch
>>>     at
>>> 
>> 
> 
org.springframework.oxm.xstream.XStreamMarshaller.convertXStreamException(XStreamMarshaller.java:807)
>>>     at
>>> 
>> 
> 
org.springframework.oxm.xstream.XStreamMarshaller.doMarshal(XStreamMarshaller.java:689)
>>>     at
>>> 
>> 
> 
org.springframework.oxm.xstream.XStreamMarshaller.marshalWriter(XStreamMarshaller.java:676)
>>>     at
>>> 
>> 
> 
org.springframework.oxm.xstream.XStreamMarshaller.marshalWriter(XStreamMarshaller.java:666)
>>>     at
>>> 
>> 
> 
org.springframework.oxm.support.AbstractMarshaller.marshalStreamResult(AbstractMarshaller.java:272)
>>>     at
>>> 
>> 
> 
org.springframework.oxm.support.AbstractMarshaller.marshal(AbstractMarshaller.java:103)
>>>     at org.pwntester.xstreamoxm.Main.main(Main.java:23)
>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>     at
>>> 
>> 
> 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>     at
>>> 
>> 
> 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>     at java.lang.reflect.Method.invoke(Method.java:601)
>>>     at
>>>     com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
>>> Caused by: com.thoughtworks.xstream.InitializationException: Could not
>>> instantiate mapper : com.thoughtworks.xstream.mapper.AnnotationMapper :
>>> argument type mismatch
>>>     at
>>> 
com.thoughtworks.xstream.XStream.buildMapperDynamically(XStream.java:604)
>>>     at com.thoughtworks.xstream.XStream.buildMapper(XStream.java:586)
>>>     at com.thoughtworks.xstream.XStream.<init>(XStream.java:552)
>>>     at com.thoughtworks.xstream.XStream.<init>(XStream.java:514)
>>>     at
>>> 
>> 
> 
org.springframework.oxm.xstream.XStreamMarshaller$1.<init>(XStreamMarshaller.java:388)
>>>     at
>>> 
>> 
> 
org.springframework.oxm.xstream.XStreamMarshaller.constructXStream(XStreamMarshaller.java:387)
>>>     at
>>> 
>> 
> 
org.springframework.oxm.xstream.XStreamMarshaller.buildXStream(XStreamMarshaller.java:372)
>>>     at
>>> 
>> 
> 
org.springframework.oxm.xstream.XStreamMarshaller.getXStream(XStreamMarshaller.java:584)
>>>     at
>>> 
>> 
> 
org.springframework.oxm.xstream.XStreamMarshaller.doMarshal(XStreamMarshaller.java:686)
>>>     ... 10 more
>>> Caused by: java.lang.IllegalArgumentException: argument type mismatch
>>>     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>>>     Method) at
>>> 
>> 
> 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
>>>     at
>>> 
>> 
> 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>>>     at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
>>>     at
>>> 
com.thoughtworks.xstream.XStream.buildMapperDynamically(XStream.java:602)
>>>     ... 18 more
>>> 
>>> 
>>> Im using the following code to set up the converterlookup
>>> 
>>> XStreamMarshaller xstream = new XStreamMarshaller();
>>> xstream.setConverterLookup(new MyConverterLookup());
>>> 
>>> 
>>> Any idea why is failing? Im trying to use the lookup class as an elegant
>>> solution for the remote code execution problem when using the reflection
>>> converters. So I just want to use the Contact converter or fail.
>>> 
>>> I already implemented the other solution you proposed:
>>> - register a ContactConverter
>>> - register a CatchAllConverter with low priority
>>> 
>>> That approach works but I found the lookup class and it seems a more
>>> elegant solution
>>> 
>>> Thanks,
>>> A
>>> -------------------------------------------------------------
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe from this list, please visit:
>>> 
>>>     http://xircles.codehaus.org/manage_email
>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe from this list, please visit:
>> 
>>     http://xircles.codehaus.org/manage_email
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
> 
>     http://xircles.codehaus.org/manage_email



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to