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(BindingType
.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

Reply via email to