You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by bu...@apache.org on 2002/08/14 21:16:15 UTC

cvs commit: xml-axis/java/src/org/apache/axis/wsdl/toJava JavaStubWriter.java

butek       2002/08/14 12:16:15

  Modified:    java/src/org/apache/axis/attachments
                        MimeMultipartDataSource.java
               java/src/org/apache/axis/providers/java RPCProvider.java
               java/src/org/apache/axis/wsdl/symbolTable SymbolTable.java
               java/src/org/apache/axis/wsdl/toJava JavaStubWriter.java
  Log:
  Another tiny step toward attachment support.  Not much, but we DO pass
  one more part of the TCK attachments test.
  
  Revision  Changes    Path
  1.2       +1 -3      xml-axis/java/src/org/apache/axis/attachments/MimeMultipartDataSource.java
  
  Index: MimeMultipartDataSource.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/attachments/MimeMultipartDataSource.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MimeMultipartDataSource.java	2 Aug 2002 14:52:04 -0000	1.1
  +++ MimeMultipartDataSource.java	14 Aug 2002 19:16:15 -0000	1.2
  @@ -79,9 +79,7 @@
           this.name = name;
           os = new ByteArrayOutputStream();
           try {
  -            for (int i = 0; i < data.getCount(); ++i) {
  -                data.getBodyPart(i).writeTo(os);
  -            }
  +            data.writeTo(os);
           }
           catch (Exception e) {
               // Is this sufficient?
  
  
  
  1.86      +36 -23    xml-axis/java/src/org/apache/axis/providers/java/RPCProvider.java
  
  Index: RPCProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/providers/java/RPCProvider.java,v
  retrieving revision 1.85
  retrieving revision 1.86
  diff -u -r1.85 -r1.86
  --- RPCProvider.java	13 Aug 2002 20:40:57 -0000	1.85
  +++ RPCProvider.java	14 Aug 2002 19:16:15 -0000	1.86
  @@ -323,6 +323,9 @@
                   returnQName = new QName("", methodName + "Return");
               }
   
  +            // Convert any MIME type returns into a DataHandler.
  +            objRes = convertMIMEType(objRes, operation.getReturnType());
  +
               // For SOAP 1.2, add a result
               if (msgContext.getSOAPConstants() == SOAPConstants.SOAP12_CONSTANTS)
               {
  @@ -345,29 +348,10 @@
                   Object value = JavaUtils.getHolderValue(holder);
                   ParameterDesc paramDesc = param.getParamDesc();
   
  -                // Check for a MIME attachment outputs
  -                QName paramQName = paramDesc == null ? null : paramDesc.getTypeQName();
  -                if (paramQName != null && paramQName.getNamespaceURI().equals(Constants.NS_URI_XMLSOAP)) {
  -                    // We have a potential attachment, put the parameter
  -                    // into a DataHandler.
  -                    String MIMEName = paramQName.getLocalPart();
  -                    if ("Image".equals(MIMEName)) {
  -                    }
  -                    else if ("PlainText".equals(MIMEName)) {
  -                        value = instantiateDataHandler(
  -                            "org.apache.axis.attachments.PlainTextDataSource",
  -                            "java.lang.String",
  -                            value);
  -                    }
  -                    else if ("Multipart".equals(MIMEName)) {
  -                        value = instantiateDataHandler(
  -                            "org.apache.axis.attachments.MimeMultipartDataSource",
  -                            "javax.mail.internet.MimeMultipart",
  -                            value);
  -                    }
  -                    else if ("Source".equals(MIMEName)) {
  -                    }
  -                }
  +                // Convert any MIME attachment outputs into a DataHandler.
  +                value = convertMIMEType(value,
  +                        paramDesc == null ? null : paramDesc.getTypeQName());
  +
                   param.setValue(value);
                   resBody.addParam(param);
               }
  @@ -375,6 +359,35 @@
   
           resEnv.addBodyElement(resBody);
       }
  +
  +    /**
  +     * If the object is a MIME type, convert it to a DataHandler.
  +     * If it is not a MIME type, the input object is simply returned.
  +     */
  +    private Object convertMIMEType(Object object, QName qname) {
  +        if (qname != null &&
  +                qname.getNamespaceURI().equals(Constants.NS_URI_XMLSOAP)) {
  +            // We have a potential attachment, put the return
  +            // into a DataHandler.
  +            if (qname.equals(Constants.MIME_IMAGE)) {
  +            }
  +            else if (qname.equals(Constants.MIME_PLAINTEXT)) {
  +                object = instantiateDataHandler(
  +                        "org.apache.axis.attachments.PlainTextDataSource",
  +                        "java.lang.String",
  +                        object);
  +            }
  +            else if (qname.equals(Constants.MIME_MULTIPART)) {
  +                object = instantiateDataHandler(
  +                        "org.apache.axis.attachments.MimeMultipartDataSource",
  +                        "javax.mail.internet.MimeMultipart",
  +                        object);
  +            }
  +            else if (qname.equals(Constants.MIME_SOURCE)) {
  +            }
  +        }
  +        return object;
  +    } // convertMIMEType
   
       /**
        * This method is the same as:
  
  
  
  1.23      +34 -3     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.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- SymbolTable.java	8 Aug 2002 15:17:10 -0000	1.22
  +++ SymbolTable.java	14 Aug 2002 19:16:15 -0000	1.23
  @@ -1227,7 +1227,6 @@
                   // We're either RPC or literal + not wrapped.
                   
                   param.setName(partName);
  -                param.setMIMEType(bindingEntry == null ? null : bindingEntry.getMIMEType(opName, partName));
   
                   // Add this type or element name
                   if (typeName != null) {
  @@ -1246,6 +1245,8 @@
                                                    new String[] {partName, 
                                                                  opName}));
                   }
  +                setMIMEType(param, bindingEntry == null ? null :
  +                        bindingEntry.getMIMEType(opName, partName));
                                   
                   v.add(param);
                   
  @@ -1322,8 +1323,9 @@
                       ElementDecl elem = (ElementDecl) vTypes.elementAt(j);
                       Parameter p = new Parameter();
                       p.setQName(elem.getName());
  -                    p.setMIMEType(bindingEntry == null ? null : bindingEntry.getMIMEType(opName, partName));
                       p.setType(elem.getType());
  +                    setMIMEType(p, bindingEntry == null ? null :
  +                            bindingEntry.getMIMEType(opName, partName));
                       v.add(p);
                   }
               } else {
  @@ -1331,19 +1333,48 @@
                   // we can't use wrapped mode.
                   Parameter p = new Parameter();
                   p.setName(partName);
  -                p.setMIMEType(bindingEntry == null ? null : bindingEntry.getMIMEType(opName, partName));
                   
                   if (typeName != null) {
                       p.setType(getType(typeName));
                   } else if (elementName != null) {
                       p.setType(getElement(elementName));
                   }
  +                setMIMEType(p, bindingEntry == null ? null :
  +                        bindingEntry.getMIMEType(opName, partName));
                   
                   v.add(p);
               }
           } // while
   
       } // getParametersFromParts
  +
  +    /**
  +     * Set the MIME type.  This can be determine in one of two ways:
  +     * 1.  From WSDL 1.1 MIME constructs on the binding (passed in);
  +     * 2.  From AXIS-specific xml MIME types.
  +     */
  +    private void setMIMEType(Parameter p, String mimeType) {
  +        // If there is no binding MIME construct (ie., the mimeType parameter is
  +        // null), then get the MIME type from the AXIS-specific xml MIME type.
  +        if (mimeType == null) {
  +            QName mimeQName = p.getType().getQName();
  +            if (mimeQName.getNamespaceURI().equals(Constants.NS_URI_XMLSOAP)) {
  +                if (Constants.MIME_IMAGE.equals(mimeQName)) {
  +                    mimeType = "image/jpeg";
  +                }
  +                else if (Constants.MIME_PLAINTEXT.equals(mimeQName)) {
  +                    mimeType = "text/plain";
  +                }
  +                else if (Constants.MIME_MULTIPART.equals(mimeQName)) {
  +                    mimeType = "multipart/related";
  +                }
  +                else if (Constants.MIME_SOURCE.equals(mimeQName)) {
  +                    mimeType = "text/xml";
  +                }
  +            }
  +        }
  +        p.setMIMEType(mimeType);
  +    } // setMIMEType
   
       /**
        * Populate the symbol table with all of the BindingEntry's from the Definition.
  
  
  
  1.83      +19 -4     xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java
  
  Index: JavaStubWriter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java,v
  retrieving revision 1.82
  retrieving revision 1.83
  diff -u -r1.82 -r1.83
  --- JavaStubWriter.java	9 Aug 2002 13:56:25 -0000	1.82
  +++ JavaStubWriter.java	14 Aug 2002 19:16:15 -0000	1.83
  @@ -551,7 +551,7 @@
               } else {
                   pw.println("        _call.setReturnType(" + 
                              Utils.getNewQName(returnName) + 
  -                           " ," + javaType + ".class);");
  +                           ", " + javaType + ".class);");
               }
           }
           else {
  @@ -749,8 +749,7 @@
           String realTarget = null;
           if (mimeType != null) {
               realTarget = target;
  -            if(mimeType.equals("text/plain")
  -                    || mimeType.startsWith("multipart/")) {
  +            if(mimeType != null) {
                   target = "javax.activation.DataHandler _returnDH = ";
               }
           }
  @@ -794,7 +793,23 @@
               pw.println("                " + target + "(java.lang.String) _returnDH.getContent();");
           }
           else if (mimeType.startsWith("multipart/")) {
  -            pw.println("                " + target + "(javax.mail.internet.MimeMultipart) _returnDH.getContent();");
  +            pw.println("                javax.mail.internet.MimeMultipart _mmp = (javax.mail.internet.MimeMultipart) _returnDH.getContent();");
  +            pw.println("                if (_mmp.getCount() == 0) {");
  +            pw.println("                    " + target + "null;");
  +            pw.println("                }");
  +            pw.println("                else {");
  +            pw.println("                    " + target + "(javax.mail.internet.MimeMultipart) _returnDH.getContent();");
  +            pw.println("                }");
  +        }
  +        else if (mimeType.equals("image/jpeg") ||
  +                mimeType.equals("image/gif")) {
  +            pw.println("                " + target +
  +                    "(java.awt.Image) _returnDH.getContent();");
  +        }
  +        else if (mimeType.equals("text/xml") ||
  +                 mimeType.equals("applications/xml")) {
  +            pw.println("                " + target +
  +                    "(javax.xml.transform.Source) _returnDH.getContent();");
           }
           else {
               pw.println("                " + target +