axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bu...@us.ibm.com
Subject RE: cvs commit: xml-axis/java/src/org/apache/axis/wsdl/toJava Jav aGeneratorFactory.java JavaFaultWriter.java
Date Mon, 26 Aug 2002 13:54:06 GMT
I think we're in agreement.  I just want to ensure that "appropriate object
model" means language-mapping agnostic.  In this case, it means that
knowledge of wrapped mode should not be part of the symbol table.  Wrapped
or unwrapped has nothing to do with WSDL, merely our interpretation of how
to map it to Java (or C#).

Russell Butek
butek@us.ibm.com


Glen Daniels <gdaniels@macromedia.com> on 08/26/2002 08:38:53 AM

Please respond to axis-dev@xml.apache.org

To:    "'axis-dev@xml.apache.org'" <axis-dev@xml.apache.org>
cc:
Subject:    RE: cvs commit: xml-axis/java/src/org/apache/axis/wsdl/toJava
       Jav  aGeneratorFactory.java JavaFaultWriter.java




IMHO, SymbolTable should become a 'real' (i.e. with a complete
implementation and generating a more appropriate object model) XML Schema
parser, post-1.0.

--Glen

> -----Original Message-----
> From: butek@us.ibm.com [mailto:butek@us.ibm.com]
> Sent: Monday, August 26, 2002 8:12 AM
> To: axis-dev@xml.apache.org
> Subject: Re: cvs commit: xml-axis/java/src/org/apache/axis/wsdl/toJava
> JavaGeneratorFactory.java JavaFaultWriter.java
>
>
> There's way too much wrapped logic in SymbolTable.
> SymbolTable is meant to
> be language-mapping agnostic.  I realize it never was, but
> this just makes
> it worse.  I'll work on moving the logic to wsdl/toJava
> somewhere.  After
> 1.0.
>
> Russell Butek
> butek@us.ibm.com
>
>
> tomj@apache.org on 08/23/2002 04:50:49 PM
>
> Please respond to axis-dev@xml.apache.org
>
> To:    xml-axis-cvs@apache.org
> cc:
> Subject:    cvs commit: xml-axis/java/src/org/apache/axis/wsdl/toJava
>        JavaGeneratorFactory.java JavaFaultWriter.java
>
>
>
> tomj        2002/08/23 14:50:49
>
>   Modified:    java/src/org/apache/axis/wsdl/symbolTable
> SymbolTable.java
>                java/src/org/apache/axis/wsdl/toJava
>                         JavaGeneratorFactory.java JavaFaultWriter.java
>   Log:
>   Update the wrapped literal logic when creating parameters
> for stubs to
>   match the JAX-RPC RI way of doing things.  In a nutshell:
>
>   If we are dealing with output parameters:
>    - wrapped operations "dig into" the structure of the
> returned element
>      and return the inner element type IF:
>      1) there are no attributes on the "wrapper" element
>      2) there is a single element inside the "wrapper" (the
> return type)
>
>    - wrapped operations return a bean mapped to the entire return
>      element otherwise
>
>   We need tests that test wrapped document/literal services, because I
>   don't believe the functional tests cover this area at all.
> Since the .
>   NET
>   SalesRankAndPrice test went away, we don't test this stuff.. :-(
>
>   Revision  Changes    Path
>   1.26      +58 -22    xml-
>   axis/java/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java
>
>   Index: SymbolTable.java
>   ===================================================================
>   RCS file: /home/cvs/xml-
>   axis/java/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java,v
>   retrieving revision 1.25
>   retrieving revision 1.26
>   diff -u -r1.25 -r1.26
>   --- SymbolTable.java  18 Aug 2002 14:19:50 -0000    1.25
>   +++ SymbolTable.java  23 Aug 2002 21:50:48 -0000    1.26
>   @@ -1027,16 +1027,22 @@
>            Input input = operation.getInput();
>            if (input != null) {
>                getParametersFromParts(inputs,
>   -                        input.getMessage().getOrderedParts(null),
>   -                        literalInput, operation.getName(),
>   bindingEntry);
>   +                                   input.getMessage().
>   getOrderedParts(null),
>   +                                   literalInput,
>   +                                   operation.getName(),
>   +                                   bindingEntry,
>   +                                   false);
>            }
>
>            // Collect all the output parameters
>            Output output = operation.getOutput();
>            if (output != null) {
>                getParametersFromParts(outputs,
>   -                        output.getMessage().getOrderedParts(null),
>   -                        literalOutput, operation.getName(),
>   bindingEntry);
>   +                                   output.getMessage().
>   getOrderedParts(null),
>   +                                   literalOutput,
>   +                                   operation.getName(),
>   +                                   bindingEntry,
>   +                                   true);  // output parts
>            }
>
>            if (parameterOrder != null) {
>   @@ -1188,10 +1194,11 @@
>         * each Part (shouldn't we call these "Parts" or something?)
>         */
>        public void getParametersFromParts(Vector v,
>   -                                          Collection parts,
>   -                                          boolean literal,
>   -                                          String opName,
>   -                                          BindingEntry
> bindingEntry)
>   +                                       Collection parts,
>   +                                       boolean literal,
>   +                                       String opName,
>   +                                       BindingEntry bindingEntry,
>   +                                       boolean outputParts)
>                throws IOException {
>            Iterator i = parts.iterator();
>
>   @@ -1226,7 +1233,7 @@
>                    possiblyWrapped) {
>                wrapped = true;
>            }
>   -
>   +
>            i = parts.iterator();
>            while (i.hasNext()) {
>                Parameter param = new Parameter();
>   @@ -1235,8 +1242,10 @@
>                QName typeName = part.getTypeName();
>                String partName = part.getName();
>
>   +            // We're either:
>   +            // 1. encoded
>   +            // 2. literal & not wrapped.
>                if (!literal || !wrapped || elementName == null) {
>   -                // We're either RPC or literal + not wrapped.
>
>                    param.setName(partName);
>
>   @@ -1265,7 +1274,7 @@
>                    continue;   // next part
>                }
>
>   -            // flow to here means literal + wrapped!
>   +            // flow to here means wrapped literal !
>
>                // See if we can map all the XML types to java(?) types
>                // if we can, we use these as the types
>   @@ -1320,6 +1329,17 @@
>                    wrapped = false;
>                }
>
>   +            // More conditions for wrapped mode to track JAX-RPC RI
>   behavior
>   +            // If we are dealing with output parameters:
>   +            // - wrapped operations "dig into" the structure of the
>   returned element
>   +            //   and return the inner element type IF:
>   +            //  1) there are no attributes on the "wrapper" element
>   +            //  2) there is a single element inside the
> "wrapper" (the
>   return type)
>   +            //
>   +            // - wrapped operations return a bean mapped
> to the entire
>   return
>   +            //   element otherwise
>   +
>   +
>                // Get the nested type entries.
>                // TODO - If we are unable to represent any of
> the types in
>                the
>                // element, we need to use SOAPElement/SOAPBodyElement.
>   @@ -1327,9 +1347,12 @@
>                Vector vTypes =
>
> SchemaUtils.getContainedElementDeclarations(node,
>                        this);
>
>   -            // if we got the types entries and we didn't
> find attributes
>   -            // use the things is this element as the parameters
>   -            if (vTypes != null && wrapped) {
>   +            // IF we got the types entries and we didn't
> find attributes
>   +            // AND either we are not doing output params OR
>   +            //     there is only one element in a wrapped
> output param
>   +            // THEN use the things in this element as the
> parameters
>   +            if (vTypes != null && wrapped &&
>   +                    (!outputParts) || (vTypes.size() == 1 &&
>   outputParts)) {
>                    // add the elements in this list
>                    for (int j = 0; j < vTypes.size(); j++) {
>                        ElementDecl elem = (ElementDecl) vTypes.
>   elementAt(j);
>   @@ -1341,20 +1364,33 @@
>                        v.add(p);
>                    }
>                } else {
>   -                // we were unable to get the types, or we found
>   attributes so
>   -                // we can't use wrapped mode.
>   -                Parameter p = new Parameter();
>   -                p.setName(partName);
>   +                // - we were unable to get the types OR
>   +                // - we found attributes OR
>   +                // - we are doing output parameters (and
> there is more
>   than 1)
>   +                // so we can't use wrapped mode.
>   +                param.setName(partName);
>
>                    if (typeName != null) {
>   -                    p.setType(getType(typeName));
>   +                    param.setType(getType(typeName));
>                    } else if (elementName != null) {
>   -                    p.setType(getElement(elementName));
>   +
>   +                    // An ugly hack here to set the
> referenced flag on
>   the
>   +                    // element and the anonymous type that
> the element
>   defines
>   +                    // There must be a better way to get this done.
>   +                    Element element = getElement(elementName);
>   +                    element.setIsReferenced(true);
>   +                    QName anonQName = SchemaUtils.
>   getElementAnonQName(element.getNode());
>   +                    if (anonQName != null) {
>   +                        TypeEntry anonType = getType(anonQName);
>   +                        anonType.setIsReferenced(true);
>   +                    }
>   +
>   +                    param.setType(element);
>                    }
>   -                setMIMEType(p, bindingEntry == null ? null :
>   +                setMIMEType(param, bindingEntry == null ? null :
>                            bindingEntry.getMIMEType(opName,
> partName));
>
>   -                v.add(p);
>   +                v.add(param);
>                }
>            } // while
>
>
>
>
>   1.19      +1 -1      xml-
>   axis/java/src/org/apache/axis/wsdl/toJava/JavaGeneratorFactory.java
>
>   Index: JavaGeneratorFactory.java
>   ===================================================================
>   RCS file: /home/cvs/xml-
>
> axis/java/src/org/apache/axis/wsdl/toJava/JavaGeneratorFactory.java,v
>   retrieving revision 1.18
>   retrieving revision 1.19
>   diff -u -r1.18 -r1.19
>   --- JavaGeneratorFactory.java     8 Aug 2002 15:17:11 -0000     1.18
>   +++ JavaGeneratorFactory.java     23 Aug 2002 21:50:48 -0000    1.19
>   @@ -459,7 +459,7 @@
>                    fault.getMessage().getOrderedParts(null),
>                    false,
>                    fault.getName(),
>   -                null);
>   +                null, false);
>            } catch (IOException e) {}
>
>            // Inspect each TypeEntry referenced in a Fault
> Message Part
>
>
>
>   1.13      +1 -1      xml-
>   axis/java/src/org/apache/axis/wsdl/toJava/JavaFaultWriter.java
>
>   Index: JavaFaultWriter.java
>   ===================================================================
>   RCS file: /home/cvs/xml-
>   axis/java/src/org/apache/axis/wsdl/toJava/JavaFaultWriter.java,v
>   retrieving revision 1.12
>   retrieving revision 1.13
>   diff -u -r1.12 -r1.13
>   --- JavaFaultWriter.java    8 Aug 2002 15:17:11 -0000     1.12
>   +++ JavaFaultWriter.java    23 Aug 2002 21:50:48 -0000    1.13
>   @@ -101,7 +101,7 @@
>                                    fault.getMessage().
>                                    getOrderedParts(null),
>                                    false,
>                                    fault.getName(),
>   -                                null);
>   +                                null, false);
>
>            // Write data members of the exception and getter
> methods for
>            them
>            for (int i = 0; i < params.size(); i++) {
>
>
>
>
 >



Mime
View raw message