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