Jira - castor-1655 has been created. 

-----Original Message-----
From: Carey, Tom [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, October 24, 2006 8:59 AM
To: '[email protected]'
Subject: RE: [castor-user] Improving Performance with XML (Marshalling and
UnMarshalling)

Thanks Werner.  That code snippet helped to point out that the
Un/Marshaller.setResolver(.) has to take a XMLClassDescriptorResolver
instead of ClassDescriptorResolver. 

Tom
-----Original Message-----
From: Werner Guttmann [mailto:[EMAIL PROTECTED]
Sent: Tuesday, October 24, 2006 7:25 AM
To: [email protected]
Subject: RE: [castor-user] Improving Performance with XML (Marshalling and
UnMarshalling)

Once again ... I just had a look at codd from the Spring XMl factory beans
for Castor XML, and found this code fragment in the
CastorResolverFactoryBean:

XMLClassDescriptorResolver resolver = (XMLClassDescriptorResolver) 
 
ClassDescriptorResolverFactory.createClassDescriptorResolver(BindingType
.XML);
Mapping mapping = new Mapping();
mapping.loadMapping(new InputSource(...)); MappingUnmarshaller
mappingUnmarshaller = new MappingUnmarshaller(); MappingLoader loader =
mappingUnmarshaller.getMappingLoader(mapping,
BindingType.XML);
resolver.setMappingLoader(loader);

And subsequently 

Unmarshaller unmarshaller = new Unmarshaller();
Unmarshaller.setResolver(resolver);
... = unmarshaller.unmarshal(..);

And if you do not use mapping files at all, just simple not set a
MappingLoader on the ClassDescriptorResolver .. :-(.

I hope this helps.
Werner

> -----Original Message-----
> From: Werner Guttmann [mailto:[EMAIL PROTECTED]
> Sent: Dienstag, 24. Oktober 2006 13:18
> To: [email protected]
> Subject: RE: [castor-user] Improving Performance with XML (Marshalling 
> and UnMarshalling)
> 
> Tom,
>  
> a couple of things have changed in that area since 1.0.1 (even since 
> 1.0.3). It looks like we will have to update the best practice 
> document with regards to these changes. Can you please open a Jira 
> issue asking for this to happen so that we will be able to track this 
> (for 1.0.5).
>  
> Werner
>  
> PS Wrt your 'minor' issue .... Especially MappingLoader and 
> ClassDescriptorResolver have been undergoing major refactorings. As 
> aresult of this, some methods might not be as clean as one would 
> expect.
> But rather than postponing the inclusion of these refactorings ad 
> infinitum, we have decided to release them as we go and
> *unfortunately* cause some minor inconsistencies (now and then).
> 
> 
> ________________________________
> 
>       From: Carey, Tom [mailto:[EMAIL PROTECTED] 
>       Sent: Dienstag, 24. Oktober 2006 08:33
>       To: '[email protected]'
>       Subject: [castor-user] Improving Performance with XML (Marshalling 
> and UnMarshalling)
>       
>       
>       I was browsing through the site and noticed the following link under

> Best Practices (http://www.castor.org/xml-best-practice.html).  It 
> mentions that if you reuse a ClassDescriptorResolver, it'll help 
> improve performance.  I followed the sample code and came up with the 
> following
> method:
>        
>           private static ClassDescriptorResolver 
> getClassDescriptorResolver(String mapFileName, Mapping
> mapping) throws MappingException
>           {
>               ClassDescriptorResolver classDescriptorResolver = 
> (ClassDescriptorResolver)s_classDescriptorResolvers.get(mapFileName);
>               if (classDescriptorResolver == null)
>               {
>                   classDescriptorResolver = 
> ClassDescriptorResolverFactory.createClassDescriptorResolver(B
> indingType
> .XML);
>                   MappingUnmarshaller mappingUnmarshaller = new 
> MappingUnmarshaller();
>                   XMLMappingLoader mappingLoader = 
> (XMLMappingLoader)mappingUnmarshaller.getMappingLoader(mapping,
> BindingType.XML);
>       
> classDescriptorResolver.setMappingLoader(mappingLoader);
>               }
>               return classDescriptorResolver;
>           }
>       
>       Something to note first on the code.  This is minor.  I had to cast 
> the instance returned from
> mappingUnmarshaller.getMappingLoader(..)
> because classDescriptorResolver.setMappingLoader(.) expects a
> XMLMappingLoader.   Wondering why the set method isn't using the
> MappingLoader interface.  Then I wouldn't have to cast after calling 
> mappingUnmarshaller.getMappingLoader().
>        
>       Now to the errors I encountered.  Under v1.0.1, I get the following 
> compiler errors:
>          cannot access class org.castor.mapping.BindingType, file ...
> not found
>          cannot access class org.castor.mapping.MappingUnmarshaller,
> file ... not found
>          cannot access class
> org.exolab.castor.xml.ClassDescriptorResolverFactory, file ... not 
> found
>        
>       When I attempted to upgrade to v1.0.4, I received the following 
> compiler errors:
>         (Source code):  Marshaller
> marshaller.setResolver(getClassDescriptorResolver(mapFileName,
> mapping)); 
>         Error(70,28): method
> setResolver(org.exolab.castor.xml.ClassDescriptorResolver)
> not found in class org.exolab.castor.xml.Marshaller
>        
>         (Source code):  Unmarshaller
> unmarshaller.setResolver(getClassDescriptorResolver(mapFileName,
> mapping)); 
>         Error(114,26): method
> setResolver(org.exolab.castor.xml.ClassDescriptorResolver)
> not found in class org.exolab.castor.xml.Unmarshaller
>        
>       Would like to use this bit of code to improve performance.  Do you 
> have any suggestions?
>        
>       Also, if I didn't have a mapping file, would creating an empty 
> mapping instance work?  Something like:
>         XMLMappingLoader mappingLoader =
> (XMLMappingLoader)mappingUnmarshaller.getMappingLoader(new
> Mapping(), BindingType.XML);
>       
>       Thanks,
>       Tom
> 
> 
> ---------------------------------------------------------------------
> 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