HI! OK, please find attached one diff for Beta1 and one for the current build (2002-03-25). The Win32 version of CVS had no problems creating the patches.
And please remember to test output parameters. Regards, Thomas > -----Original Message----- > From: Glyn Normington [mailto:[EMAIL PROTECTED]] > Sent: Freitag, 22. März 2002 17:48 > To: [EMAIL PROTECTED] > Subject: Re: Proposed fix for interop problem with .NET > client (null as > parameter) > > > Thomas, > > In general it is much safer to send patches as diffs (created > using e.g. > cvs diff -u) so that committers don't accidentally miss > pieces of the patch > (like I did recently!) and are not tempted to replace the > whole file and > destroy recent changes. If you think the changes need more > context, send > the changed file as well as the diff. > > On the other hand, I tried diffing your file against Beta1 > and the diff > wasn't useful - it deleted all the old contents and then added the new > contents, so maybe you had the same experience. I don't know > whether the > changed file can be edited to produce a smaller diff. Maybe > others have > experience here. > > Glyn > >
diff -u -r1.1.1.1 RPCProvider.java --- Axis/Beta1/org/apache/axis/providers/java/RPCProvider.java 25 Mar 2002 12:54:11 -0000 1.1.1.1 +++ Axis/Beta1/org/apache/axis/providers/java/RPCProvider.java 22 Mar 2002 15:50:23 +-0000 @@ -193,6 +193,35 @@ continue; } + // We may have overloading or output parameters or null values + // that have been omitted. Check for omitted null values. + if (params.length > 0 && (argValues == null || params.length != +argValues.length)) { + String[] parameterNames = +JavaUtils.getParameterNamesFromDebugInfo(method); + Object[] newArgValues = new Object[params.length]; + int old = 0; + + // Are there any arguments at all? + if(argValues != null) { + + // Loop over all method parameters + for (int n = 0; n < newArgValues.length; n++) { + + // If the name matches, then use the supplied value, +otherwise the value is null + if +(((RPCParam)args.get(old)).getName().equals(parameterNames[n + 1])) { + newArgValues[n] = argValues[old]; + old++; + + // At the end of the supplied arguments -> rest must +be null + if(old == argValues.length) + break; + } + } + } + // Check if all arguments have been used, otherwise something's +wrong + if(old == 0 && argValues == null || old == argValues.length) + argValues = newArgValues; + } + // The number of method parameters must match the // arguments taking into consideration output parameters. Object[] newArgValues = new Object[params.length];
diff -u Axis/2002-03-25/org/apache/axis/providers/java/RPCProvider.java:1.1 Axis/2002-03-25/org/apache/axis/providers/java/RPCProvider.java:1.2 --- Axis/2002-03-25/org/apache/axis/providers/java/RPCProvider.java:1.1 Mon Mar 25 15:18:13 2002 +++ Axis/2002-03-25/org/apache/axis/providers/java/RPCProvider.java Mon Mar 25 +15:36:12 2002 @@ -195,6 +195,35 @@ continue; } + // We may have overloading or output parameters or null values + // that have been omitted. Check for omitted null values. + if (params.length > 0 && (argValues == null || params.length != +argValues.length)) { + String[] parameterNames = +JavaUtils.getParameterNamesFromDebugInfo(method); + Object[] newArgValues = new Object[params.length]; + int old = 0; + + // Are there any arguments at all? + if(argValues != null) { + + // Loop over all method parameters + for (int n = 0; n < newArgValues.length; n++) { + + // If the name matches, then use the supplied value, +otherwise the value is null + if +(((RPCParam)args.get(old)).getName().equals(parameterNames[n + 1])) { + newArgValues[n] = argValues[old]; + old++; + + // At the end of the supplied arguments -> rest must +be null + if(old == argValues.length) + break; + } + } + } + // Check if all arguments have been used, otherwise something's +wrong + if(old == 0 && argValues == null || old == argValues.length) + argValues = newArgValues; + } + // The number of method parameters must match the // arguments taking into consideration output parameters. Object[] newArgValues = new Object[params.length];