> I'm still not sure I understand the problem with the clash test.  The
> testcase is calling "void sharedName(int)".  That method DOES 
> exist on all
> the generated files:  the interface, the skeleton, the impl.  It is
> overloaded:  "void sharedName(int)", "int sharedName()", "void
> sharedName(boolean)".  "<sharedName>0</sharedName>" shouldn't 
> be ambiguous
> (or is 0 a legal boolean value?).  What exactly is the error 
> you're seeing?

The problem is that the determineDefaultParams() code, which is what figures out the 
types from introspecting the java.lang.Method, does not currently deal with method 
overloading - it used to randomly pick the first method with the right # of arguments, 
I think, but it doesn't now.  So when we try to deserialize the <sharedName>, we end 
up resorting to the "use the element QName as the type name and see if that works" 
hack, which finds a valid type (SharedNameType), so we end up with one of those, which 
does NOT match either of the one-arg method signatures.

Fixing the introspection logic to handle overloads will deal with this to some extent, 
though there are certainly a lot of cases which will still be random (method(int) vs. 
method(String) for instance) without some other differentiator.

--Glen

Reply via email to