tola2000 | 2 May 2007 15:56

[2167] trunk/xfire/xfire-jaxb2/src/main/org/codehaus/xfire/jaxb2: part of fix for: XFIRE-868

Revision 2167 Author tola2000 Date 2007-05-02 08:56:03 -0500 (Wed, 02 May 2007)

Log Message

part of fix for: XFIRE-868 Also add JaxbTypes to the OVERRIDING_TYPES of the WSDLBuilder

Modified Paths

Added Paths

Diff

Added: trunk/xfire/xfire-jaxb2/src/main/org/codehaus/xfire/jaxb2/JaxbBindingProvider.java (0 => 2167)

--- trunk/xfire/xfire-jaxb2/src/main/org/codehaus/xfire/jaxb2/JaxbBindingProvider.java (rev 0) +++ trunk/xfire/xfire-jaxb2/src/main/org/codehaus/xfire/jaxb2/JaxbBindingProvider.java 2007-05-02 13:56:03 UTC (rev 2167) <at> <at> -0,0 +1,86 <at> <at> +package org.codehaus.xfire.jaxb2; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.codehaus.xfire.XFireRuntimeException; +import org.codehaus.xfire.aegis.AegisBindingProvider; +import org.codehaus.xfire.aegis.type.Configuration; +import org.codehaus.xfire.aegis.type.Type; +import org.codehaus.xfire.aegis.type.TypeCreator; +import org.codehaus.xfire.aegis.type.TypeMapping; +import org.codehaus.xfire.aegis.type.TypeMappingRegistry; +import org.codehaus.xfire.service.Service; +import org.codehaus.xfire.util.ClassLoaderUtils; +import org.codehaus.xfire.wsdl11.builder.WSDLBuilder; + +/** + * A BindingProvider for the Jaxb type system. + * + * XFIRE-868 + * also add Jaxbtypes to the overriding types to pass to the wsdl builder + * + * <at> author <a href="mailto:tom.lambrechts <at> telindus.be">Tom Lambrechts</a> + */ +public class JaxbBindingProvider + extends AegisBindingProvider +{ + public JaxbBindingProvider() + { + super(); + } + + public JaxbBindingProvider(TypeCreator creator) + { + super(creator); + } + + public JaxbBindingProvider(TypeCreator creator, Configuration config) + { + super(creator, config); + + } + public JaxbBindingProvider(TypeMappingRegistry registry) + { + super(registry); + } + + public void initialize(Service service) + { + super.initialize(service); + + List classes = (List) service.getProperty(OVERRIDE_TYPES_KEY); + + if (classes != null) + { + List types = null; + types = (List) service.getProperty(WSDLBuilder.OVERRIDING_TYPES); + if(types == null) + types = new ArrayList(); + + TypeMapping tm = getTypeMapping(service); + for (Iterator it = classes.iterator(); it.hasNext();) + { + String typeName = (String) it.next(); + Class c; + try + { + c = ClassLoaderUtils.loadClass(typeName, JaxbBindingProvider.class); + } + catch (ClassNotFoundException e) + { + throw new XFireRuntimeException("Could not find override type class: " + typeName, e); + } + + Type t = tm.getType(c); + if (t instanceof JaxbType) + { + JaxbType bt = (JaxbType) t; + types.add(bt); + } + } + service.setProperty(WSDLBuilder.OVERRIDING_TYPES, types); + } + } +} \ No newline at end of file

Modified: trunk/xfire/xfire-jaxb2/src/main/org/codehaus/xfire/jaxb2/JaxbServiceFactory.java (2166 => 2167)

--- trunk/xfire/xfire-jaxb2/src/main/org/codehaus/xfire/jaxb2/JaxbServiceFactory.java 2007-05-02 12:58:11 UTC (rev 2166) +++ trunk/xfire/xfire-jaxb2/src/main/org/codehaus/xfire/jaxb2/JaxbServiceFactory.java 2007-05-02 13:56:03 UTC (rev 2167) <at> <at> -29,7 +29,7 <at> <at> public JaxbServiceFactory(TransportManager transportManager, JAXBContext jaxbContext) { super(new Jsr181WebAnnotations(), transportManager, - new AegisBindingProvider(new JaxbTypeRegistry(jaxbContext))); + new JaxbBindingProvider(new JaxbTypeRegistry(jaxbContext))); setWsdlBuilderFactory(new JaxbWSDLBuilderFactory()); }

To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email


Gmane