Hello, I am having problems registering custom type mappings in CXF 2.1 with
an Aegis databinding.  Previously in CXF 2.0, my type mappings were
registered successfully.

My basic need is that I have a service that returns a Map, keyed by a bean
interface.  I needed to tell cxf what implementation to use for the keys so
that hashcode and equals were implemented correctly.

Now, my service is throwing exception on startup, and it only occurs when I
add my custom type mappings:

Caused by: org.apache.ws.commons.schema.XmlSchemaException: Schema name
conflict in collection. Namespace: http://www.w3.org/2001/XMLSchema
        at
org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:104)
        at 
org.apache.ws.commons.schema.SchemaBuilder.build(SchemaBuilder.java:83)

Is there a better way to tell CXF what class to use for the map key, or can
someone point out what I need to change in my configuration code?  Here is
what I am currently doing:

        JaxWsProxyFactoryBean clientFactory = new JaxWsProxyFactoryBean();
        clientFactory.setAddress(url);
       
clientFactory.setServiceClass(com.cerner.healthe.organization.service.OrganizationService.class);

        AegisDatabinding dataBinding = new AegisDatabinding();
        OrganizationAliasTypeRegistrar typeRegistrar = new
OrganizationAliasTypeRegistrar();
        typeRegistrar.setDataBinding(dataBinding);
        typeRegistrar.register();
        clientFactory.setDataBinding(dataBinding);

        organizationClient = (OrganizationService) clientFactory.create();

And the registrar:

public class OrganizationAliasTypeRegistrar {
        private AegisDatabinding dataBinding;

        /**
         * Registers the ImpreciseDateTimeType to the data binding.
         */
        public void register() {
                dataBinding.getAegisContext().getTypeMapping().register(
                                OrganizationAliasType.TYPE_CLASS, 
OrganizationAliasType.QNAME,
                                new OrganizationAliasType());
        }

        /**
         * Sets the data binding.
         * 
         * @param dataBinding
         *            The data binding to set.
         */
        public void setDataBinding(AegisDatabinding dataBinding) {
                this.dataBinding = dataBinding;
        }
}
-- 
View this message in context: 
http://www.nabble.com/Aegis-Type-Mapping-tp22042434p22042434.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to