Thanks again.  I don't have the XMLContext class present in v 1.0.5,
hence don't know a way to specify it in that particular version as to
how it should pick up the descriptor classes to resolve the mapping
binding xml and java files.   Without specifying it all, with the
following piece of code, although it unmarshalls, all the attributes in
castor java objects are populated with null values (In this case, I had
use the source generator with v1.0.5, specifying the binding file).

Object response = Response.class.newInstance();
Unmarshaller unmar = new Unmarshaller(response);
unmar.setWhitespacePreserve(true); 
unmar.setIgnoreExtraElements(true);
retObj = (Object) unmar.unmarshal((Element) payload);

  

-----Original Message-----
From: Werner Guttmann [mailto:[EMAIL PROTECTED] 
Sent: Friday, May 23, 2008 2:43 AM
To: dev@castor.codehaus.org
Cc: [EMAIL PROTECTED]
Subject: Re: [castor-dev] Common way to unmarshall using mapping and
binding files

Hi again,

Jayaraman, Kannan wrote:
> Werner,
> Thanks for your response,   I agree, however, it is the API (after the
> fact that those descriptors are generated either ways, using a mapping
> or a binding file), which I have questions on.   The comments you have
> given below (for binding file to switch over to the API's similar for 
> the mapping ones, I get runtime errors (as below), ...

Which I would expect, as you have to make a difference between domain
classes for which you define a mapping and domain classes for which
there exists a descriptor class (as a result of code generation).

Let's step back a bit, and have a look at this in more detail. Castor
internally (sic!) uses descriptor classes to define the binding between
a java domain object and its XML binding. Now where does Castor obtain
descriptor classes from )

a) class mapping from a mapping file. Each class mapping defined in a
mapping file is internally converted to a class descriptor.

b) From the class loader (as it loads class descriptors as generated
during code generation).

c) Introspection.

What does this imply to you ? You have to configure Castor (e.g. through
XMLContext with castor 1.2) to let Castor know where to find those
descriptors required.

Does this make sense ?

Werner
> as there are no
> mapping files created, in case if I use the binding.xml's.) Thanks 
> Kannan
> 
> 
> Exception in thread "main" java.lang.NullPointerException
>       at
> org.exolab.castor.mapping.Mapping.loadMapping(Mapping.java:279)
>       at
> org.exolab.castor.mapping.Mapping.loadMapping(Mapping.java:262)
>       at
> com.citi.test.CastorTest.unMarshallXMLToCastorUsingMapping(CastorTest.
> ja
> va:160)
>       at
> com.citi.test.CastorTest.getCreditBureauData(CastorTest.java:86)
>       at com.citi.test.CastorTest.main(CastorTest.java:47)
> 
> 
> -----Original Message-----
> From: Werner Guttmann [mailto:[EMAIL PROTECTED]
> Sent: Thursday, May 22, 2008 3:28 PM
> To: dev@castor.codehaus.org
> Cc: [EMAIL PROTECTED]
> Subject: Re: [castor-dev] Common way to unmarshall using mapping and 
> binding files
> 
> Hi,
> 
> just to add a bit more clarity before trying to address your question.
> When you use the Castor XML code generator to generate Java source 
> files from an XML schema, you'll see that an additional set of classes

> will be generated, i.e. the descriptor classes. It's those files that 
> completely replace a mapping file during XML data binding.
> 
> So for the remainder of this, let's use the term 'descriptor classes':
> 
> 
> 
> Jayaraman, Kannan wrote:
>>  
>> Is there a common way to marshall and unmarshall (Java to XML and 
>> vice-versa), using either binding or mapping files created with
Castor
>> source generator.   I've it working using the following 2 different
> API
>> calls (one for binding vs another for mapping)), but I'm looking to 
>> have one single way independent of whether it used binding or mapping

>> files to generate the Castor source java files.  We are using Castor 
>> v
> 
>> 1.0.5, but also invite your inputs to any version which has such a
> feature.
>>  
>> Thanks
>> Kannan
>>  
>>  
>> Using binding files:
>> Response.unmarshal(new StringReader(inputStr))
> It's not that you have to use this method for unmarshalling. Why not 
> switch to the same method as highlighted below for the mapping ? You 
> can even turn off generation of the marshalling methods completely.
>>  
>>
>> Using mapping files:
>>
>> MappingLoader mappingLoader =
>> mappingUnmarshaller.getMappingLoader(mapping, BindingType.XML);
>>
>> classDescriptorResolver.setMappingLoader(mappingLoader);
>>
>>  Unmarshaller unmar = new Unmarshaller(response);
>>
>> unmar.setResolver((XMLClassDescriptorResolver)classDescriptorResolver
>> )
>> ;
>>
>> unmar.setWhitespacePreserve(true);
>>
>> unmar.setIgnoreExtraElements(true);
>>
>> retObj = (Object) unmar.unmarshal((Element) payload);
>>
>>  
>>
>>
> 
> 
> ---------------------------------------------------------------------
> 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