Yup,

Kudos to Roman Roelofsen for dreaming this one up!

Cheers,
Ade.


Jim Ma-3 wrote:
> 
> Great! Ade.  It's artful hackery .
>  
> -Jim
> 
> Adrian Trenaman wrote:
>> Hi Jim,
>>
>> Just to follow up on this - I had a go at providing a skeleton Java
>> package
>> with the package-info.java(.class) in place: CXF correctly picked up the
>> class and placed all JAX-B related artifacts from that package into the
>> namespace specified in package-info: 
>>
>> --- package-info.java (in directory my/package)
>> @javax.xml.bind.annotation.XmlSchema(namespace
>> ="http://i.wandered.lonely.as.a.cloud";);
>> package my.package;  
>> ---
>>
>> So, this clever little hack works just fine.
>>
>> Cheers,
>> Ade.
>>
>>
>> Adrian Trenaman wrote:
>>   
>>> Hi Jim,
>>>
>>> Thanks for the idea - if only I could modify the class!! It's been made
>>> available to me only as a JAR, not in source format, so I don't have the
>>> possiblity of adding the familiar JAX-B annotations that would do this. 
>>>
>>> One suggestion I've had from a colleague in Dublin is to create a
>>> skeleton
>>> directory structure that matches the package structure, and create a
>>> package-info.java file in each directory with a
>>> @javax.xml.bind.annotation.XmlSchema(namespace="...") annotation; if I
>>> compile and then put this ahead of my JAR in the classpath then
>>> java2wsdl
>>> might pick up these annotations and help out. 
>>>
>>> What do you think? Pragmatic workaround or artful hackery? 
>>>
>>> Cheers,
>>> Ade.
>>>
>>>
>>> Jim Ma-3 wrote:
>>>     
>>>> Hi Adrian,
>>>>
>>>> If this class can be modified , I think we can add some annotations for 
>>>> this method to avoid generating wrapper element and resolve clash  :
>>>>
>>>> pacakge com.foo;
>>>> public class Bar {
>>>>    @ResponseWrapper(targetNamespace = "http://apache.org/namespace";, 
>>>> className = "com.foo.CreateCaseResponse", localName =
>>>> "createCaseResponse")
>>>>    @RequestWrapper(targetNamespace = "http://apache.org/namespace";, 
>>>> className = "com.foo.CreateCaseRequest2", localName =
>>>> "createCaseRequst")
>>>>    public CreateCaseResponse createCase(String arg0, CreateCaseRequest 
>>>> arg1);
>>>> }
>>>>
>>>> When java2wsdl can not read these annotations for this method , it will 
>>>> try to load the RequestWrapper class and ReponseWrapper class from 
>>>> package com.foo.jaxws (as per jaxws spec).
>>>> If it is failed to load , it will generate wrapper elements for this 
>>>> method .
>>>>
>>>> Regards
>>>>
>>>> Jim
>>>>
>>>>
>>>> Adrian Trenaman wrote:
>>>>       
>>>>> Hi Jim,
>>>>>
>>>>> Thanks for the info! The collision I'm running into is due to the Java
>>>>> API
>>>>> (based on an EJB) already providing wrappers classes for parameter
>>>>> lists.
>>>>> For example: 
>>>>>
>>>>>     public CreateCaseResponse createCase(String arg0,
>>>>> CreateCaseRequest
>>>>> arg1)
>>>>>
>>>>> ... as you can see, our java2wsdl will try and create a wrapper
>>>>> element
>>>>> for
>>>>> CreateCaseResponse (as per the JAXWS spec) which then clashes with the
>>>>> already existing type CreateCaseResponse. Ugly, huh?! 
>>>>>
>>>>> The original CreateCaseResponse is in a different Java package from
>>>>> the
>>>>> interface, so if we could map individual packages to schema namespaces
>>>>> then
>>>>> I would be able to resolve the clash. However, as you say in your
>>>>> email,
>>>>> CXF
>>>>> doesn't provide support for this. 
>>>>>
>>>>> Best,
>>>>> Ade.
>>>>>
>>>>>
>>>>> Jim Ma-3 wrote:
>>>>>   
>>>>>         
>>>>>> Hi Adrian,
>>>>>>
>>>>>> What type of collision did you run into ? Is this schema element name 
>>>>>> collision?
>>>>>>
>>>>>> Java2wsdl uses converted packagename or annotated namepace as it's 
>>>>>> namespace ,
>>>>>> and there is no way to customize the namespace on per-package basis
>>>>>> like 
>>>>>> wsdl2java does.
>>>>>>
>>>>>> Cheers
>>>>>> -Jim
>>>>>>
>>>>>> Trenaman, Adrian wrote:
>>>>>>     
>>>>>>           
>>>>>>> Hi all,
>>>>>>>  
>>>>>>> I'm creating some WSDL from classes in an existing Jar file; CXF's
>>>>>>> java2wsdl is putting everything into the same schema namespace which
>>>>>>> is
>>>>>>> causing collisions. Is there any way to customise the namespace on a
>>>>>>> per-package basis so that I can avoid the collisions?
>>>>>>>  
>>>>>>> Thanks,
>>>>>>> Ade.
>>>>>>>  
>>>>>>>
>>>>>>> Adrian Trenaman
>>>>>>>
>>>>>>> Principal Consultant, IONA Technologies.
>>>>>>>
>>>>>>> E: [EMAIL PROTECTED] 
>>>>>>>
>>>>>>> P: +353-1-6372659
>>>>>>>
>>>>>>> M: +353-86-6051026
>>>>>>>
>>>>>>>  
>>>>>>>
>>>>>>>  
>>>>>>>
>>>>>>> ----------------------------
>>>>>>> IONA Technologies PLC (registered in Ireland)
>>>>>>> Registered Number: 171387
>>>>>>> Registered Address: The IONA Building, Shelbourne Road, Dublin 4,
>>>>>>> Ireland
>>>>>>>
>>>>>>>   
>>>>>>>       
>>>>>>>             
>>>>>>     
>>>>>>           
>>>>>   
>>>>>         
>>>>       
>>>     
>>
>>   
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Is-there-any-way-to-customise-schema-namespaces-with-java2wsdl--tf4305933.html#a12344038
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to