http://jira.codehaus.org/browse/XFIRE-380

Stuart Barlow wrote:
Ill raise this in JIRA.
Im only going on about it as the first thing my customer said was...
'Whats this in0, in1, in2 rubbish. Why are the real param names not there?
Thats the bl**dy problem with webservices!'
:-)

Stuart Barlow wrote:
Im see breaks now. First I did not realize that the WSDLs were generated
on startup I was attaching to tomcat too late.

However I don't see how ParamReader.getParameterNamesFromDebugInfo() would work with either classes or interfaces when only one entry is put into the
method map.


Dan Diephouse wrote:
I think the ParamReader doesn't work with interfaces. If you wanted to create a JIRA issue for this, that would be great.

I'm not sure why you aren't seeing breaks in SpringServiceConfiguration and DefaultServiceConfiguration. The ObjectServiceFactory shoudl cycle through both of those to see if they have an answer. I just tried it in my IDE too and I'm able to see DefaultServiceConfiguration.getInParameterName get called.

- Dan

Stuart Barlow wrote:
The WSDL is generated on startup (maybe Spring bootstrap).
The ParamReader which uses the ClassReader.getSignature() method is for
example generating the method signature...

logon(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)J

For the method...

public abstract long
com.peopledoc.jura.LogonManager.logon(
java.lang.String,
java.lang.String,
java.lang.String,
java.lang.String,
java.lang.String) throws java.lang.Exception


However the static ParamReader.getParameterNamesFromDebugInfo() creates a new ParamReader(c) which does not populate the private member Map 'methods'.
The private member Map 'methods' is only populated from the readCode()
method which is never called. And even then it only calls
methods.put(methodName, info) once.

So I guess there is a bug or two in the ParamReader class? Or I might be
wrong. Shall I raise a jira issue?



Stuart Barlow wrote:
I have added the XFire source code to intellij and have set breakpoints in the SpringServiceConfiguration and DefaultServiceConfiguration classes
but it never breaks on them.

At what point is the WSDL generated? Is it ever cached?

Stuart Barlow wrote:
But with Aegis mapping files I would have to create a mapping file for every service I expose and a method entry for every method. This kind of
kills the dynamic and agile nature of XFire.

Can the dynamic runtime WSDL generation use reflection to get the names
of parameters?
I was looking at the DefaultServiceConfiguration.getInParameterName()
and it calls ParamReader.getParameterNamesFromDebugInfo() which
should do what I want so maybe I dont have debug turned on.

Ill step through the xfire code and see where it goes.
Ahah I am using Spring so the DefaultServiceConfiguration never gets used
and so never gets to the ParamReader.getParameterNamesFromDebugInfo

Dan Diephouse wrote:
2. Create mapping files (see the Aegis Binding section) and specify the mappedName for your parameters








--
Stuart

Reply via email to