antelder    2003/03/25 00:01:24

  Modified:    java/src/org/apache/wsif/providers/java
                        WSIFOperation_Java.java
  Log:
  Fix Java operation to work when the WSDL operation name starts with a capital letter 
but the SEI method uses Java naming conventions and starts with a lower case.
  
  Revision  Changes    Path
  1.37      +16 -5     
xml-axis-wsif/java/src/org/apache/wsif/providers/java/WSIFOperation_Java.java
  
  Index: WSIFOperation_Java.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/java/WSIFOperation_Java.java,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- WSIFOperation_Java.java   19 Mar 2003 17:11:36 -0000      1.36
  +++ WSIFOperation_Java.java   25 Mar 2003 08:01:23 -0000      1.37
  @@ -438,15 +438,26 @@
           Method[] candidates;
           try {
               if (!fieldIsConstructor) {
  -                // Get the possible methods with the argument classes we've found.
  +
  +                // Java methods start with a lower case but WSDL uses either case 
  +                String bindingMethodName = fieldJavaOperationModel.getMethodName();
  +                String bindingMethodName2 = null;
  +                if (Character.isUpperCase(bindingMethodName.charAt(0))) {
  +                    StringBuffer sb = new StringBuffer(bindingMethodName);
  +                    sb.setCharAt(0, Character.toLowerCase(sb.charAt(0)));
  +                    bindingMethodName2 = sb.toString();
  +                }
  +
                   Object[] args = getMethodArgumentClasses();
                   Object retClass = getMethodReturnClass();
  +
                   Vector possibles = new Vector();
                   for (int i = 0; i < allMethods.length; i++) {
  -                    if (!allMethods[i]
  -                        .getName()
  -                        .equals(fieldJavaOperationModel.getMethodName()))
  -                        continue;
  +                    String methodName = allMethods[i].getName();
  +                    if (!(methodName.equals(bindingMethodName)
  +                        || methodName.equals(bindingMethodName2))) {
  +                            continue;
  +                    }
                       Class[] params = allMethods[i].getParameterTypes();
                       if (params.length != args.length)
                           continue;
  
  
  

Reply via email to