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

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 <[email protected]>
>> To: [email protected]
>> 
>> 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


Reply via email to