brandywheat wrote:
> 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). 
Which is a regression issue that has been fixed already in SVN trunk a
few days after 1.2 has been made available. Iow, with a current 1.2.1
snapshot release, you'll be able to drop the
ClassDescriptorResolver.setInternalContext() call again.


>  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 .... 
This is something that happens again and again .... whic makes me wonder
how to go about improving e.g. HTML docs. To my knowledge, there's an
FAQ entry, etc,.

> 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
>>
>>
>>
>>
> 

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

    http://xircles.codehaus.org/manage_email


Reply via email to