You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by di...@apache.org on 2004/09/14 15:07:26 UTC

cvs commit: ws-axis/java/src/org/apache/axis/wsdl/toJava JavaBeanFaultWriter.java JavaBeanHelperWriter.java JavaBeanWriter.java JavaTypeWriter.java

dims        2004/09/14 06:07:26

  Modified:    java/src/org/apache/axis/wsdl/toJava
                        JavaBeanFaultWriter.java JavaBeanHelperWriter.java
                        JavaBeanWriter.java JavaTypeWriter.java
  Log:
  Fix for AXIS-1554 - Summary: attempting to use incompatible return type - method getCause()
  from Iltchenko, Andrei <an...@nl.compuware.com>
  
  Revision  Changes    Path
  1.9       +35 -0     ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanFaultWriter.java
  
  Index: JavaBeanFaultWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanFaultWriter.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- JavaBeanFaultWriter.java	22 Apr 2004 16:48:14 -0000	1.8
  +++ JavaBeanFaultWriter.java	14 Sep 2004 13:07:26 -0000	1.9
  @@ -20,6 +20,9 @@
   import java.io.IOException;
   import java.io.PrintWriter;
   import java.util.Vector;
  +import java.util.Set;
  +import java.util.Collections;
  +import java.util.HashSet;
   
   /**
    * This is Wsdl2java's Complex Fault Writer.
  @@ -27,6 +30,38 @@
    * in an operation fault message.
    */
   public class JavaBeanFaultWriter extends JavaBeanWriter {
  +    /**
  +     * All server specific exception classes have {@link Throwable} as an
  +     * indirect superclass. <code>Throwable</code> defines a set of properties
  +     * that may potentially conflict with those that would be generated by
  +     * this class for an XSD complex type used as a fault. The following
  +     * immutable object contains all property names that must be excluded
  +     * when generating a service specific exception. <i>Note:</t>
  +     * {@link org.apache.axis.encoding.ser.BeanSerializer} always excludes
  +     * <code>Throwable</code>'s and  <code>AxisFault</code>'s properties
  +     * when marshalling a service Java exception.
  +     */
  +    public static final Set   RESERVED_PROPERTY_NAMES;
  +    static {
  +        Set   temp = new HashSet();
  +        // Throwable's properties.
  +        temp.add("cause");
  +        temp.add("message");
  +        temp.add("localizedMessage");
  +        temp.add("tackTrace");
  +        // AxisFault's properties.
  +        temp.add("faultActor");
  +        temp.add("faultCode");
  +        temp.add("faultDetails");
  +        temp.add("faultNode");
  +        temp.add("faultReason");
  +        temp.add("faultRole");
  +        temp.add("faultString");
  +        temp.add("faultSubCodes");
  +        temp.add("headers");
  +        RESERVED_PROPERTY_NAMES = Collections.unmodifiableSet(temp);
  +    }
  +
   
       /**
        * Constructor.
  
  
  
  1.47      +17 -9     ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanHelperWriter.java
  
  Index: JavaBeanHelperWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanHelperWriter.java,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- JavaBeanHelperWriter.java	22 Aug 2004 03:07:00 -0000	1.46
  +++ JavaBeanHelperWriter.java	14 Sep 2004 13:07:26 -0000	1.47
  @@ -17,6 +17,7 @@
   
   import org.apache.axis.utils.Messages;
   import org.apache.axis.wsdl.symbolTable.ContainedAttribute;
  +import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.wsdl.symbolTable.DefinedType;
   import org.apache.axis.wsdl.symbolTable.ElementDecl;
   import org.apache.axis.wsdl.symbolTable.SchemaUtils;
  @@ -26,6 +27,7 @@
   import java.io.IOException;
   import java.io.PrintWriter;
   import java.util.Vector;
  +import java.util.Set;
   
   /**
    * This is Wsdl2java's Helper Type Writer.  It writes the <typeName>.java file.
  @@ -53,6 +55,9 @@
       /** Field canSearchParents */
       protected boolean canSearchParents;
   
  +    /** Field reservedPropNames */
  +    protected Set reservedPropNames;
  +
       /**
        * Constructor.
        * 
  @@ -64,7 +69,7 @@
        */
       protected JavaBeanHelperWriter(Emitter emitter, TypeEntry type,
                                      Vector elements, TypeEntry extendType,
  -                                   Vector attributes) {
  +                                   Vector attributes, Set reservedPropNames) {
   
           super(emitter, type.getName() + "_Helper", "helper");
   
  @@ -72,6 +77,7 @@
           this.elements = elements;
           this.attributes = attributes;
           this.extendType = extendType;
  +        this.reservedPropNames = reservedPropNames;
   
           // is this a complex type that is derived from other types
           // by restriction?  if so, set the policy of the generated
  @@ -271,11 +277,10 @@
               if (attributes != null) {
                   boolean wroteAttrDecl = false;
   
  -                for (int i = 0; i < attributes.size(); i += 1) {
  +                for (int i = 0; i < attributes.size(); i++) {
                       ContainedAttribute attr = (ContainedAttribute) attributes.get(i);
                       TypeEntry te = attr.getType();
                       QName attrName = attr.getQName();
  -
                       String fieldName = getAsFieldName(attr.getName());
   
                       QName attrXmlType = te.getQName();
  @@ -315,8 +320,7 @@
                           continue;
                       }
   
  -                    String fieldName = getAsFieldName(elem.getName());  // jongjin.
  -
  +                    String fieldName = getAsFieldName(elem.getName());
                       QName xmlName = elem.getQName();
   
                       // Some special handling for arrays.
  @@ -390,8 +394,11 @@
        * getter/setter methods "getFOO()/setFOO()".  So when the Introspector
        * looks at that bean, the property name will be "FOO", not "fOO" due
        * to the rules in the JavaBeans spec.  So this makes sure the
  -     * metadata will match.
  -     * 
  +     * metadata will match. <p>
  +     *
  +     * The method also makes sure that the returned property name is not in
  +     * the set of reserved properties as defined by {@link #reservedPropNames}.     
  +     *  
        * @param fieldName 
        * @return 
        */
  @@ -402,10 +409,11 @@
           // (because setURL() maps to a property named "URL", not "uRL")
           if ((fieldName.length() > 1)
                   && Character.isUpperCase(fieldName.charAt(1))) {
  -            return Utils.capitalizeFirstChar(fieldName);
  +            fieldName = Utils.capitalizeFirstChar(fieldName);
           }
   
  -        return fieldName;
  +        // Make sure the property name is not reserved.
  +        return JavaUtils.getUniqueValue(reservedPropNames, fieldName);
       }
   
       /**
  
  
  
  1.71      +12 -5     ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanWriter.java
  
  Index: JavaBeanWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanWriter.java,v
  retrieving revision 1.70
  retrieving revision 1.71
  diff -u -r1.70 -r1.71
  --- JavaBeanWriter.java	2 Sep 2004 12:15:59 -0000	1.70
  +++ JavaBeanWriter.java	14 Sep 2004 13:07:26 -0000	1.71
  @@ -274,6 +274,9 @@
                       }
                   }
   
  +                // Make sure the property name is not reserved.
  +                variableName = JavaUtils.getUniqueValue(
  +                        helper.reservedPropNames, variableName);
                   names.add(typeName);
                   names.add(variableName);
   
  @@ -304,7 +307,7 @@
           // Add attribute names
           if (attributes != null) {
   
  -            for (int i = 0; i < attributes.size(); i += 1) {
  +            for (int i = 0; i < attributes.size(); i++) {
                   ContainedAttribute attr = (ContainedAttribute) attributes.get(i);
                   String typeName = attr.getType().getName(); 
                   String variableName = attr.getName();
  @@ -315,6 +318,10 @@
   		    typeName = Utils.getWrapperType(typeName);
   		}
   
  +                // Make sure the property name is not reserved.
  +                variableName = JavaUtils.getUniqueValue(
  +                        helper.reservedPropNames, variableName);
  +
                   names.add(typeName);
                   names.add(variableName);
   
  @@ -621,8 +628,8 @@
                   for (int j = 0; j < attributes.size(); j += 1) {
                       ContainedAttribute attr = (ContainedAttribute) attributes.get(j);
                       paramTypes.add(attr.getType().getName());
  -                    paramNames.add(attr.getName());
  -                            
  +                    paramNames.add(JavaUtils.getUniqueValue(
  +                            helper.reservedPropNames, attr.getName()));
                   }
               }
   
  @@ -632,9 +639,9 @@
               if (elements != null) {
                   for (int j = 0; j < elements.size(); j++) {
                       ElementDecl elem = (ElementDecl) elements.get(j);
  -
                       paramTypes.add(elem.getType().getName());
  -                    paramNames.add(elem.getName());
  +                    paramNames.add(JavaUtils.getUniqueValue(
  +                            helper.reservedPropNames, elem.getName()));
                   }
               }
           }
  
  
  
  1.22      +14 -12    ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaTypeWriter.java
  
  Index: JavaTypeWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaTypeWriter.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- JavaTypeWriter.java	22 Aug 2004 03:07:01 -0000	1.21
  +++ JavaTypeWriter.java	14 Sep 2004 13:07:26 -0000	1.22
  @@ -26,6 +26,7 @@
   import javax.xml.namespace.QName;
   import java.io.IOException;
   import java.util.Vector;
  +import java.util.Collections;
   
   /**
    * This is Wsdl2java's Type Writer.  It writes the following files, as appropriate:
  @@ -149,18 +150,13 @@
        * 
        * @param emitter    
        * @param type       
  -     * @param elements   
        * @param base       
  -     * @param attributes 
        * @return 
        */
       protected JavaWriter getBeanWriter(Emitter emitter, TypeEntry type, TypeEntry base) {   // CONTAINED_ELEM_AND_ATTR
           Vector elements = type.getContainedElements();
           Vector attributes = type.getContainedAttributes();
           
  -        JavaWriter helperWriter = getBeanHelperWriter(emitter, type, elements,
  -                base, attributes);
  -
           // If this complexType is referenced in a
           // fault context, emit a bean-like exception
           // class
  @@ -168,12 +164,16 @@
                   JavaGeneratorFactory.COMPLEX_TYPE_FAULT);
   
           if ((isComplexFault != null) && isComplexFault.booleanValue()) {
  +
               return new JavaBeanFaultWriter(emitter, type, elements, base,
  -                    attributes, helperWriter);
  +                attributes,
  +                getBeanHelperWriter(emitter, type, elements, base,
  +                                    attributes, true));
           }
   
           return new JavaBeanWriter(emitter, type, elements, base, attributes,
  -                helperWriter);
  +                getBeanHelperWriter(emitter, type, elements, base,
  +                                    attributes, false));
       }
   
       /**
  @@ -186,11 +186,13 @@
        * @param attributes 
        * @return 
        */
  -    protected JavaWriter getBeanHelperWriter(Emitter emitter, TypeEntry type,
  -                                             Vector elements, TypeEntry base,
  -                                             Vector attributes) {
  -        return new JavaBeanHelperWriter(emitter, type, elements, base,
  -                attributes);
  +    protected JavaWriter getBeanHelperWriter(
  +            Emitter emitter, TypeEntry type, Vector elements, TypeEntry base,
  +            Vector attributes, boolean forException) {
  +        return new JavaBeanHelperWriter(
  +                emitter, type, elements, base, attributes,
  +                forException  ?  JavaBeanFaultWriter.RESERVED_PROPERTY_NAMES
  +                              :  Collections.EMPTY_SET);
       }
   
       /**