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