Hi, I had the same problem with InitialContext null in ClassDescriptorResolver too. Thus I initilize it with BackwardCompatibilityContext but I've seen that BackwardCompatibilityContext will be unused in the future versions of Castor so, What's the better way of use ClassDescriptorResolver or how can I initilize the InitialContext without use BackwardCompatibilityContext?
My Code: Mapping mapping = getMapping( mapeamento ); XMLClassDescriptorResolver classDescriptorResolver = ( XMLClassDescriptorResolver ) ClassDescriptorResolverFactory.createClassDescriptorResolver( BindingType.XML ); classDescriptorResolver.setInternalContext( new BackwardCompatibilityContext() ); MappingUnmarshaller mappingUnmarshaller = new MappingUnmarshaller(); MappingLoader mappingLoader = mappingUnmarshaller.getMappingLoader( mapping, BindingType.XML ); classDescriptorResolver.setMappingLoader( mappingLoader ); Thanks, *-----------------------------------------------------* || Marcelo Henrique De Oliveira Lima || Ciência da Computação - UECE || Linux User #399803 || Slackware GNU/Linux Powered! *-----------------------------------------------------* ----- Mensagem original ---- De: brandywheat <[EMAIL PROTECTED]> Para: [email protected] Enviadas: Quarta-feira, 28 de Maio de 2008 6:45:49 Assunto: Re: [castor-user] Changing classloader in marshaller Hi, I have this working - I found that I had a couple of problems, first the code shown on the web gives a null pointer exception (because the internal context is not set in classDR). The second was that I was calling m.marshall(this, writer) and I did not realize that this was a static method, once I changed this to the m.marshall(this) it worked .... the final code is then: public void export(Writer writer) throws MarshalException, ValidationException { try { Marshaller m = new Marshaller(); XMLClassDescriptorResolver classDR = (org.exolab.castor.xml.XMLClassDescriptorResolver) ClassDescriptorResolverFactory.createClassDescriptorResolver(BindingType.XML); classDR.setInternalContext(m.getInternalContext()); classDR.setClassLoader(Thread.currentThread().getContextClassLoader()); classDR.addClass("com.xxxx.domain.Theme"); m.setResolver(classDR); m.setWriter(writer); m.marshal(this); } catch (....) } Many thanks, Brian Werner Guttmann wrote: > > Hi, > > how about trying things with the XMLClassDescriptorResolver document > first, to get and/or keep you going. > > Have a look at the XML best practise document at http://www.castor.org, > and let us know whether this is enough information. > > Werner > > brandywheat wrote: >> Hi, >> I do not have enough experience with castor (yet) to see either method >> being beneficial over the other ... so I will take what ever you suggest. >> Working from the snapshot is not an issue, nor is waiting a couple of >> days >> a problem - what ever is best for you - I'll be happy when it is working! >> >> I do have a couple of class to marshal and these include quite a few >> classes (30+) which are included in the output structure - I am not sure >> if >> this would be an issue with option b (do I have to add a >> classDescriptionResolver for each class ?). >> >> Many, many thanks for the super response on this, I am suitably >> impressed >> :-) >> >> Thanks, >> Brian >> >> >> >> Werner Guttmann wrote: >>> Well, in that case, there's two options: >>> >>> a) switch to XMLContext (where we'd have to add a setClassLoader() >>> method, which is sufficiently easy; if you are fine working against a >>> snapshot releaswe, this could be done within one or two days). >>> >>> b) Set an XMLClassDescriptorResolver on your Marshaller, and use >>> XMLClassDescriptorResolver.setClassLoader() to set a custom class >>> loader. >>> >>> Does this make sense ... >>> >>> Werner >>> >>> >>> brandywheat wrote: >>>> Hi, >>>> I'm on the latest castor version (1.2) ... >>>> >>>> Thanks, >>>> Brian >>>> >>>> >>>> >>>> Werner Guttmann wrote: >>>>> Hi, >>>>> >>>>> What version of Castor are you using ? There's a solution to this >>>>> problem, but it depends on whether you are on a release that has >>>>> support >>>>> for XMLContext already (or not). >>>>> >>>>> Werner >>>>> >>>>> brandywheat wrote: >>>>>> Hi, >>>>>> I am currently having problems with the castor marshaller and >>>>>> classloaders. >>>>>> My code works in the unit tests but fails once included in a >>>>>> netbeans >>>>>> RPC - >>>>>> the problem looks to be the classloader and the modules within the >>>>>> RPC. >>>>>> >>>>>> I can resolve the issue of the classloader with the code: >>>>>> Marshaller m = new Marshaller(); >>>>>> Mapping mapping = new >>>>>> Mapping(Thread.currentThread().getContextClassLoader()); >>>>>> mapping.loadMapping("c:\\temp\\mapping.xml"); >>>>>> m.setMapping(mapping); >>>>>> m.marshal(this, writer); >>>>>> >>>>>> But this forces me to write a mapping file, which I do not have >>>>>> available >>>>>> and do not really want to generate. >>>>>> >>>>>> Is it possible to set the classloader for the marshaller without >>>>>> having >>>>>> to >>>>>> define a mapping file, e.g. have it use the default structure it >>>>>> would >>>>>> generated without a mapping file? (If I skip the loadMapping then the >>>>>> setMapping gives an exception saying a mapping must be loaded >>>>>> first....) >>>>>> >>>>>> Thanks in Advance, >>>>>> Brian >>>>>> >>>>> --------------------------------------------------------------------- >>>>> 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 > > > > -- View this message in context: http://www.nabble.com/Changing-classloader-in-marshaller-tp17480800p17508876.html Sent from the Castor - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! http://br.mail.yahoo.com/

