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 <[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 --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email
