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];