You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cxf.apache.org by Daniel Kulp <dk...@apache.org> on 2010/06/16 20:28:39 UTC

Re: Schemas passed by ServiceFactoryBean.setSchemaLocation() are not accessible in DataBinding model

I'd be OK with either option.   It probably does make some sense to push it up 
a level.   Nice job investigating it.

We'd need to get the patch attached to a JIRA, though.

Thanks!
Dan



On Wednesday 16 June 2010 6:28:40 am Nilupa Bandara wrote:
> Hi,
> 
> I am working on implementing the JiBX databinding implementation for Apache
> CXF and I've come across the following situation which I think could be a
> possible shortcoming. I've also attached two patches as a solution for
> that.
> 
> I've used the following code to start up a simple service and I've used
> serviceFactoryBean.setSchemaLocations() method to pass a list of schema
> locations.
> 
> LibraryServiceImpl libraryServiceImpl = new LibraryServiceImpl();
> ServerFactoryBean svrFactory = new ServerFactoryBean();
> ArrayList<String> schemaLocations = new ArrayList<String>();
> schemaLocations.add("file:///home/nilupa/Documents/experiment/types.xsd");
> svrFactory.setSchemaLocations(schemaLocations);
> svrFactory.setServiceClass(LibraryService.class);
> svrFactory.setAddress("http://localhost:8080/LibraryService");
> svrFactory.setServiceBean(libraryServiceImpl);
> svrFactory.getServiceFactory().setDataBinding(new JiBXDataBinding());
> svrFactory.create();
> 
> However that information is inaccessible in the service model or in the
> AbstractDataBinding classes. When I looked in more deeply I found that
> AbstarctDataBinding is populated with  schemas that are specified
> by serviceFactoryBean.setSchemaLocations() when no DataBinding is specified
> and when ReflectionServiceFactoryBean.createDefaultDataBinding() is
> invoked. I think AbstarctDataBinding should be populated not only when no
> databinding is specified but also when particular databinding object is
> provided with schemas specified by setSchemaLocations() method.
> 
> In my propose fix ReflectionServiceFactoryBean.fillDataBindingSchemas()
> method does the actual filling and it is invoked before
> AbstractServiceFactoryBean.initializeDataBindings() is invoked in
> ReflectionServiceFactoryBean.initializeDataBindings() method. Perhaps we
> should implement  fillDataBindingSchemas() in AbstractServiceFactoryBean
> class instead of ReflectionServiceFactoryBean class.
> 
> Any thoughts ?
> 
> Thanks & Best Regards,
> Nilupa

-- 
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog