WSDL generation problem

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

WSDL generation problem

RolandH-2
Hi all,

after playing a bit with services, I found a small WSDL problem, I tried
to fix, but I can't find the real source, so maybe someone can give me a
hint:

- create a service, using e.g.
<auto-attributes "PostalAddress" include="all" optional="true">
<override name="address1" optional="false">

- export this service, open WSDL in webbrowser, look at the
'serviceNameRequest' Part:
[...]
<wsdl:part name="address1" type="xsd:string"/>
<wsdl:part name="address2" type="xsd:string"/>
<wsdl:part name="directions" type="xsd:string"/>
<wsdl:part name="city" type="xsd:string"/>
[... lots of attributes deleted ...]
<wsdl:part name="address1" type="xsd:string"/>
[...]

now, I looked through the code, and found:
framework/service/src/org/ofbiz/service/ModelService.java:
ModelService.getWSDL calls this.getParameterNames(IN_PARAM, true, false)
which returns all parameters including optionals (second parameter),
excluding internal parameters (third param)

changing that to return only required parameters, lists address1 two
times, too.
removing the override xml tag, removes the duplicate address1.

Any hints, where this may go wrong?

Thanks,
Roland

Reply | Threaded
Open this post in threaded view
|

Re: WSDL generation problem

BJ Freeman
are you using the trunk version?
though what you say is true there is more code that effects the output.



RolandH sent the following on 6/20/2008 5:55 AM:

> Hi all,
>
> after playing a bit with services, I found a small WSDL problem, I tried
> to fix, but I can't find the real source, so maybe someone can give me a
> hint:
>
> - create a service, using e.g.
> <auto-attributes "PostalAddress" include="all" optional="true">
> <override name="address1" optional="false">
>
> - export this service, open WSDL in webbrowser, look at the
> 'serviceNameRequest' Part:
> [...]
> <wsdl:part name="address1" type="xsd:string"/>
> <wsdl:part name="address2" type="xsd:string"/>
> <wsdl:part name="directions" type="xsd:string"/>
> <wsdl:part name="city" type="xsd:string"/>
> [... lots of attributes deleted ...]
> <wsdl:part name="address1" type="xsd:string"/>
> [...]
>
> now, I looked through the code, and found:
> framework/service/src/org/ofbiz/service/ModelService.java:
> ModelService.getWSDL calls this.getParameterNames(IN_PARAM, true, false)
> which returns all parameters including optionals (second parameter),
> excluding internal parameters (third param)
>
> changing that to return only required parameters, lists address1 two
> times, too.
> removing the override xml tag, removes the duplicate address1.
>
> Any hints, where this may go wrong?
>
> Thanks,
> Roland
>
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: WSDL generation problem

RolandH-2
On Monday 23 June 2008 23:58, BJ Freeman wrote:
> are you using the trunk version?
> though what you say is true there is more code that effects the output.

Yes, it's r670705.
any hint where to look for internals of the service engine would be
appreciated.

Thanks,
Roland


> RolandH sent the following on 6/20/2008 5:55 AM:
> > Hi all,
> >
> > after playing a bit with services, I found a small WSDL problem, I tried
> > to fix, but I can't find the real source, so maybe someone can give me a
> > hint:
> >
> > - create a service, using e.g.
> > <auto-attributes "PostalAddress" include="all" optional="true">
> > <override name="address1" optional="false">
> >
> > - export this service, open WSDL in webbrowser, look at the
> > 'serviceNameRequest' Part:
> > [...]
> > <wsdl:part name="address1" type="xsd:string"/>
> > <wsdl:part name="address2" type="xsd:string"/>
> > <wsdl:part name="directions" type="xsd:string"/>
> > <wsdl:part name="city" type="xsd:string"/>
> > [... lots of attributes deleted ...]
> > <wsdl:part name="address1" type="xsd:string"/>
> > [...]
> >
> > now, I looked through the code, and found:
> > framework/service/src/org/ofbiz/service/ModelService.java:
> > ModelService.getWSDL calls this.getParameterNames(IN_PARAM, true, false)
> > which returns all parameters including optionals (second parameter),
> > excluding internal parameters (third param)
> >
> > changing that to return only required parameters, lists address1 two
> > times, too.
> > removing the override xml tag, removes the duplicate address1.
> >
> > Any hints, where this may go wrong?

Reply | Threaded
Open this post in threaded view
|

Re: WSDL generation problem

Scott Gray
Line 1100 &  1117 ModelService.java

There's probably another method that will give you a better list of
parameters but you'd need to search for it.  A good approach might be to dig
in to webtools and see how the service def screens get the parameter list
without repeating overridden auto-parameters.

Regards
Scott

2008/6/24 RolandH <[hidden email]>:

> On Monday 23 June 2008 23:58, BJ Freeman wrote:
> > are you using the trunk version?
> > though what you say is true there is more code that effects the output.
>
> Yes, it's r670705.
> any hint where to look for internals of the service engine would be
> appreciated.
>
> Thanks,
> Roland
>
>
> > RolandH sent the following on 6/20/2008 5:55 AM:
> > > Hi all,
> > >
> > > after playing a bit with services, I found a small WSDL problem, I
> tried
> > > to fix, but I can't find the real source, so maybe someone can give me
> a
> > > hint:
> > >
> > > - create a service, using e.g.
> > > <auto-attributes "PostalAddress" include="all" optional="true">
> > > <override name="address1" optional="false">
> > >
> > > - export this service, open WSDL in webbrowser, look at the
> > > 'serviceNameRequest' Part:
> > > [...]
> > > <wsdl:part name="address1" type="xsd:string"/>
> > > <wsdl:part name="address2" type="xsd:string"/>
> > > <wsdl:part name="directions" type="xsd:string"/>
> > > <wsdl:part name="city" type="xsd:string"/>
> > > [... lots of attributes deleted ...]
> > > <wsdl:part name="address1" type="xsd:string"/>
> > > [...]
> > >
> > > now, I looked through the code, and found:
> > > framework/service/src/org/ofbiz/service/ModelService.java:
> > > ModelService.getWSDL calls this.getParameterNames(IN_PARAM, true,
> false)
> > > which returns all parameters including optionals (second parameter),
> > > excluding internal parameters (third param)
> > >
> > > changing that to return only required parameters, lists address1 two
> > > times, too.
> > > removing the override xml tag, removes the duplicate address1.
> > >
> > > Any hints, where this may go wrong?
>
>
Reply | Threaded
Open this post in threaded view
|

Re: WSDL generation problem

RolandH-2
Hi Scott,

thanks for the idea about webtools!
at least I have now a 'works for me' patch:
https://issues.apache.org/jira/browse/OFBIZ-1848

Greetings,
Roland

Scott Gray wrote:

> Line 1100 &  1117 ModelService.java
>
> There's probably another method that will give you a better list of
> parameters but you'd need to search for it.  A good approach might be to dig
> in to webtools and see how the service def screens get the parameter list
> without repeating overridden auto-parameters.
>
> Regards
> Scott
>
> 2008/6/24 RolandH <[hidden email]>:
>
>  
>> On Monday 23 June 2008 23:58, BJ Freeman wrote:
>>    
>>> are you using the trunk version?
>>> though what you say is true there is more code that effects the output.
>>>      
>> Yes, it's r670705.
>> any hint where to look for internals of the service engine would be
>> appreciated.
>>
>> Thanks,
>> Roland
>>
>>
>>    
>>> RolandH sent the following on 6/20/2008 5:55 AM:
>>>      
>>>> Hi all,
>>>>
>>>> after playing a bit with services, I found a small WSDL problem, I
>>>>        
>> tried
>>    
>>>> to fix, but I can't find the real source, so maybe someone can give me
>>>>        
>> a
>>    
>>>> hint:
>>>>
>>>> - create a service, using e.g.
>>>> <auto-attributes "PostalAddress" include="all" optional="true">
>>>> <override name="address1" optional="false">
>>>>
>>>> - export this service, open WSDL in webbrowser, look at the
>>>> 'serviceNameRequest' Part:
>>>> [...]
>>>> <wsdl:part name="address1" type="xsd:string"/>
>>>> <wsdl:part name="address2" type="xsd:string"/>
>>>> <wsdl:part name="directions" type="xsd:string"/>
>>>> <wsdl:part name="city" type="xsd:string"/>
>>>> [... lots of attributes deleted ...]
>>>> <wsdl:part name="address1" type="xsd:string"/>
>>>> [...]
>>>>
>>>> now, I looked through the code, and found:
>>>> framework/service/src/org/ofbiz/service/ModelService.java:
>>>> ModelService.getWSDL calls this.getParameterNames(IN_PARAM, true,
>>>>        
>> false)
>>    
>>>> which returns all parameters including optionals (second parameter),
>>>> excluding internal parameters (third param)
>>>>
>>>> changing that to return only required parameters, lists address1 two
>>>> times, too.
>>>> removing the override xml tag, removes the duplicate address1.
>>>>
>>>> Any hints, where this may go wrong?
>>>>        
>>    
>
>