dims        2003/01/02 12:56:00

  Modified:    java/test/wsdl/interop4/groupG/dime/doc
                        AttachmentsBindingImpl.java
                        DimeDOCInteropTestCase.java
               java/test/wsdl/interop4/groupG/dime/rpc
                        AttachmentsBindingImpl.java
                        DimeRPCInteropTestCase.java
               java/src/org/apache/axis/attachments AttachmentsImpl.java
               java/src/org/apache/axis/wsdl/toJava JavaStubWriter.java
               java/src/org/apache/axis/client Stub.java
  Log:
  Final set of changes for Bug 13769 - Group G: SwA/DIME (attachments) WSDL Problems
  
  Notes:
  - This check-in adds impl for echoUnrefAttachments (dime/rpc and dime/doc)
  
  Revision  Changes    Path
  1.2       +6 -0      
xml-axis/java/test/wsdl/interop4/groupG/dime/doc/AttachmentsBindingImpl.java
  
  Index: AttachmentsBindingImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/test/wsdl/interop4/groupG/dime/doc/AttachmentsBindingImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AttachmentsBindingImpl.java       2 Jan 2003 00:02:42 -0000       1.1
  +++ AttachmentsBindingImpl.java       2 Jan 2003 20:55:59 -0000       1.2
  @@ -10,6 +10,8 @@
   import org.apache.axis.Message;
   import org.apache.axis.AxisEngine;
   
  +import java.util.Collection;
  +
   public class AttachmentsBindingImpl implements 
test.wsdl.interop4.groupG.dime.doc.AttachmentsPortType{
       public org.apache.axis.attachments.OctetStream 
echoAttachment(org.apache.axis.attachments.OctetStream in) throws 
java.rmi.RemoteException {
           return in;
  @@ -30,6 +32,10 @@
       }
   
       public void echoUnrefAttachments() throws java.rmi.RemoteException {
  +        org.apache.axis.Message reqMsg = 
AxisEngine.getCurrentMessageContext().getRequestMessage();
  +        Collection attachments = reqMsg.getAttachmentsImpl().getAttachments();
  +        org.apache.axis.Message respMsg = 
AxisEngine.getCurrentMessageContext().getResponseMessage();
  +        respMsg.getAttachmentsImpl().setAttachmentParts(attachments);
       }
   
       public java.lang.String echoAttachmentAsString(java.lang.String in) throws 
java.rmi.RemoteException {
  
  
  
  1.3       +38 -0     
xml-axis/java/test/wsdl/interop4/groupG/dime/doc/DimeDOCInteropTestCase.java
  
  Index: DimeDOCInteropTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/test/wsdl/interop4/groupG/dime/doc/DimeDOCInteropTestCase.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DimeDOCInteropTestCase.java       2 Jan 2003 19:26:13 -0000       1.2
  +++ DimeDOCInteropTestCase.java       2 Jan 2003 20:55:59 -0000       1.3
  @@ -9,8 +9,16 @@
   
   import java.net.URL;
   import java.util.Arrays;
  +import java.io.InputStream;
  +import java.io.IOException;
  +import java.io.OutputStream;
  +import java.io.ByteArrayInputStream;
   
   import org.apache.axis.attachments.OctetStream;
  +import org.apache.axis.client.Call;
  +
  +import javax.activation.DataSource;
  +import javax.activation.DataHandler;
   
   public class DimeDOCInteropTestCase extends junit.framework.TestCase {
       public DimeDOCInteropTestCase(java.lang.String name) {
  @@ -118,9 +126,39 @@
           }
           assertTrue("binding is null", binding != null);
   
  +        class Src implements DataSource{
  +            InputStream m_src;
  +            String m_type;
  +
  +            public Src(InputStream data, String type){
  +                m_src=data;
  +                m_type=type;
  +            }
  +            public String getContentType(){
  +                return m_type;
  +            }
  +            public InputStream getInputStream() throws IOException{
  +                m_src.reset();
  +                return m_src;
  +            }
  +            public String getName(){
  +                return "Some-Data";
  +            }
  +            public OutputStream getOutputStream(){
  +                throw new UnsupportedOperationException("I don't give output 
streams");
  +            }
  +        }
  +        ByteArrayInputStream ins=new 
ByteArrayInputStream("EchoUnrefAttachments".getBytes());
  +        DataHandler dh=new DataHandler(new Src(ins,"application/octetstream"));
  +
  +        
  +        ((org.apache.axis.client.Stub)binding).addAttachment(dh);
  +        
((org.apache.axis.client.Stub)binding)._setProperty(Call.ATTACHMENT_ENCAPSULATION_FORMAT,
 Call.ATTACHMENT_ENCAPSULATION_FORMAT_DIME);
           // Test operation
           binding.echoUnrefAttachments();
           // TBD - validate results
  +        Object attachments[] = 
((org.apache.axis.client.Stub)binding).getAttachments();
  +        assertEquals(1, attachments.length);
       }
   
       public void test6DimeDOCSoapPortEchoAttachmentAsString() throws Exception {
  
  
  
  1.4       +6 -1      
xml-axis/java/test/wsdl/interop4/groupG/dime/rpc/AttachmentsBindingImpl.java
  
  Index: AttachmentsBindingImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/test/wsdl/interop4/groupG/dime/rpc/AttachmentsBindingImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AttachmentsBindingImpl.java       30 Dec 2002 14:36:44 -0000      1.3
  +++ AttachmentsBindingImpl.java       2 Jan 2003 20:56:00 -0000       1.4
  @@ -10,6 +10,8 @@
   import org.apache.axis.AxisEngine;
   import org.apache.axis.Message;
   
  +import java.util.Collection;
  +
   public class AttachmentsBindingImpl implements 
test.wsdl.interop4.groupG.dime.rpc.AttachmentsPortType{
       public org.apache.axis.attachments.OctetStream 
echoAttachment(org.apache.axis.attachments.OctetStream in) throws 
java.rmi.RemoteException {
           return in;
  @@ -30,7 +32,10 @@
       }
   
       public void echoUnrefAttachments() throws java.rmi.RemoteException {
  -        //TODO: What do we do here?
  +        org.apache.axis.Message reqMsg = 
AxisEngine.getCurrentMessageContext().getRequestMessage();
  +        Collection attachments = reqMsg.getAttachmentsImpl().getAttachments();
  +        org.apache.axis.Message respMsg = 
AxisEngine.getCurrentMessageContext().getResponseMessage();
  +        respMsg.getAttachmentsImpl().setAttachmentParts(attachments);
       }
   
       public java.lang.String echoAttachmentAsString(java.lang.String in) throws 
java.rmi.RemoteException {
  
  
  
  1.4       +37 -0     
xml-axis/java/test/wsdl/interop4/groupG/dime/rpc/DimeRPCInteropTestCase.java
  
  Index: DimeRPCInteropTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/test/wsdl/interop4/groupG/dime/rpc/DimeRPCInteropTestCase.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DimeRPCInteropTestCase.java       30 Dec 2002 14:36:44 -0000      1.3
  +++ DimeRPCInteropTestCase.java       2 Jan 2003 20:56:00 -0000       1.4
  @@ -8,9 +8,16 @@
   package test.wsdl.interop4.groupG.dime.rpc;
   
   import org.apache.axis.attachments.OctetStream;
  +import org.apache.axis.client.Call;
   
  +import javax.activation.DataSource;
  +import javax.activation.DataHandler;
   import java.net.URL;
   import java.util.Arrays;
  +import java.io.InputStream;
  +import java.io.IOException;
  +import java.io.OutputStream;
  +import java.io.ByteArrayInputStream;
   
   public class DimeRPCInteropTestCase extends junit.framework.TestCase {
       public DimeRPCInteropTestCase(java.lang.String name) {
  @@ -119,9 +126,39 @@
           }
           assertTrue("binding is null", binding != null);
   
  +        class Src implements DataSource{
  +            InputStream m_src;
  +            String m_type;
  +
  +            public Src(InputStream data, String type){
  +                m_src=data;
  +                m_type=type;
  +            }
  +            public String getContentType(){
  +                return m_type;
  +            }
  +            public InputStream getInputStream() throws IOException{
  +                m_src.reset();
  +                return m_src;
  +            }
  +            public String getName(){
  +                return "Some-Data";
  +            }
  +            public OutputStream getOutputStream(){
  +                throw new UnsupportedOperationException("I don't give output 
streams");
  +            }
  +        }
  +        ByteArrayInputStream ins=new 
ByteArrayInputStream("EchoUnrefAttachments".getBytes());
  +        DataHandler dh=new DataHandler(new Src(ins,"application/octetstream"));
  +
  +        
  +        ((org.apache.axis.client.Stub)binding).addAttachment(dh);
  +        
((org.apache.axis.client.Stub)binding)._setProperty(Call.ATTACHMENT_ENCAPSULATION_FORMAT,
 Call.ATTACHMENT_ENCAPSULATION_FORMAT_DIME);
           // Test operation
           binding.echoUnrefAttachments();
           // TBD - validate results
  +        Object attachments[] = 
((org.apache.axis.client.Stub)binding).getAttachments();
  +        assertEquals(1, attachments.length);
       }
   
       public void test6DimeRPCSoapPortEchoAttachmentAsString() throws Exception {
  
  
  
  1.38      +5 -2      
xml-axis/java/src/org/apache/axis/attachments/AttachmentsImpl.java
  
  Index: AttachmentsImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/attachments/AttachmentsImpl.java,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- AttachmentsImpl.java      11 Dec 2002 22:38:08 -0000      1.37
  +++ AttachmentsImpl.java      2 Jan 2003 20:56:00 -0000       1.38
  @@ -308,10 +308,13 @@
   
           if ((parts != null) && !parts.isEmpty()) {
               for (java.util.Iterator i = parts.iterator(); i.hasNext();) {
  -                Part part = (Part) i.next();
  +                Object part = i.next();
   
                   if (null != part) {
  -                    addAttachmentPart(part);
  +                    if(part instanceof Part)
  +                        addAttachmentPart((Part)part);
  +                    else 
  +                        createAttachmentPart(part);
                   }
               }
           }
  
  
  
  1.110     +5 -0      
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.109
  retrieving revision 1.110
  diff -u -r1.109 -r1.110
  --- JavaStubWriter.java       2 Jan 2003 19:26:13 -0000       1.109
  +++ JavaStubWriter.java       2 Jan 2003 20:56:00 -0000       1.110
  @@ -736,6 +736,9 @@
           // Set the headers
           pw.println("        setRequestHeaders(_call);");
           
  +        // Set the attachments
  +        pw.println("        setAttachments(_call);");
  +        
           // Set DIME flag if needed 
           if(bEntry.isOperationDIME(operation.getOperation().getName())) {
               pw.println("        
_call.setProperty(_call.ATTACHMENT_ENCAPSULATION_FORMAT, 
_call.ATTACHMENT_ENCAPSULATION_FORMAT_DIME);");
  @@ -796,6 +799,7 @@
           if (allOuts > 0) {
               pw.println("        else {");
               pw.println("            getResponseHeaders(_call);");
  +            pw.println("            extractAttachments(_call);");
           
               if (allOuts == 1) {
                   if (parms.returnParam != null) {
  @@ -843,6 +847,7 @@
               pw.println("        }");
           } else {
               pw.println("        getResponseHeaders(_call);");
  +            pw.println("        extractAttachments(_call);");
           }
       } // writeResponseHandling
   
  
  
  
  1.20      +49 -4     xml-axis/java/src/org/apache/axis/client/Stub.java
  
  Index: Stub.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/Stub.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- Stub.java 1 Nov 2002 16:40:08 -0000       1.19
  +++ Stub.java 2 Jan 2003 20:56:00 -0000       1.20
  @@ -62,6 +62,7 @@
   import javax.xml.namespace.QName;
   import javax.xml.rpc.JAXRPCException;
   import javax.xml.rpc.Service;
  +import javax.activation.DataHandler;
   import java.net.MalformedURLException;
   import java.net.URL;
   import java.util.Iterator;
  @@ -95,6 +96,9 @@
       // Support for Header
       private Vector headers = new Vector();
   
  +    // Support for Attachments
  +    private Vector attachments = new Vector();
  +    
       // Flag to determine whether this is the first call to register type mappings.
       // This need not be synchronized because firstCall is ONLY called from within
       // a synchronized block in the generated stub code.
  @@ -294,10 +298,9 @@
   
       /**
        * Set the header
  -     * @namespace namespace
  +     * @param namespace
        * @param partName that uniquely identify a header object.
        * @param headerValue Object that is sent in the request as a SOAPHeader
  -     * @return void
        */
       public void setHeader(String namespace, String partName, Object headerValue) {
           headers.add(new SOAPHeaderElement(namespace, partName, headerValue));
  @@ -311,6 +314,26 @@
       }
   
       /**
  +     * Extract attachments
  +     * @param call
  +     */ 
  +    public void extractAttachments(Call call) {
  +        attachments.clear();
  +        Iterator iterator = call.getResponseMessage().getAttachments();
  +        while(iterator.hasNext()){
  +            attachments.add(iterator.next());
  +        }
  +    }
  +    
  +    /**
  +     * Add an attachment
  +     * @param handler
  +     */ 
  +    public void addAttachment(Object handler) {
  +        attachments.add(handler);        
  +    }
  +    
  +    /**
        * Get the header element
        */ 
       public SOAPHeaderElement getHeader(String namespace, String partName) {
  @@ -333,13 +356,29 @@
       }
   
       /**
  +     * Get the array of attachments
  +     */ 
  +    public Object[] getAttachments() {
  +        Object[] array = new Object[attachments.size()];
  +        attachments.copyInto(array);
  +        attachments.clear();
  +        return array;
  +    }
  +
  +    /**
        * This method clears both requestHeaders and responseHeaders hashtables.
  -     * @return void
        */
       public void clearHeaders() {
           headers.clear();
       }
       
  +    /**
  +     * This method clears the request attachments.
  +     */
  +    public void clearAttachments() {
  +        attachments.clear();
  +    }
  +
       protected void setRequestHeaders(org.apache.axis.client.Call call) throws 
AxisFault {            
           SOAPHeaderElement[] headers = getHeaders();
           for(int i=0;i<headers.length;i++){
  @@ -347,9 +386,15 @@
           }
       }  
   
  +    protected void setAttachments(org.apache.axis.client.Call call) throws 
AxisFault {
  +        Object[] attachments = getAttachments();
  +        for(int i=0;i<attachments.length;i++){
  +            call.addAttachmentPart(attachments[i]);
  +        }
  +    }  
  +
       /**
        * Helper method for updating headers from the response.
  -     * @return void
        */
       protected void getResponseHeaders(org.apache.axis.client.Call call) throws 
AxisFault {           
           org.apache.axis.Message response = 
call.getMessageContext().getResponseMessage();      
  
  
  


Reply via email to