dims        2002/06/24 06:19:10

  Modified:    java/src/org/apache/axis/attachments AttachmentPart.java
                        AttachmentsImpl.java
               java/test/saaj TestAttachment.java
  Log:
  Fleshing removeAllAttachments and getAttachments(MimeHeaders)
  
  Revision  Changes    Path
  1.12      +24 -2     
xml-axis/java/src/org/apache/axis/attachments/AttachmentPart.java
  
  Index: AttachmentPart.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/attachments/AttachmentPart.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- AttachmentPart.java       24 Jun 2002 12:34:51 -0000      1.11
  +++ AttachmentPart.java       24 Jun 2002 13:19:10 -0000      1.12
  @@ -124,9 +124,9 @@
       }
   
       /**
  -     * TODO: everything!
  +     * getContentType
        *
  -     * @return
  +     * @return content type
        */
       public String getContentType() {
           return getFirstMimeHeader(HTTPConstants.HEADER_CONTENT_TYPE);
  @@ -176,6 +176,28 @@
           }
   
           return null;
  +    }
  +
  +    /**
  +     * check if this Part's mimeheaders matches the one passed in.
  +     * TODO: Am not sure about the logic.
  +     */
  +    public boolean matches(javax.xml.soap.MimeHeaders headers){
  +        Iterator iterator = headers.getAllHeaders();
  +        while(iterator.hasNext()){
  +            String key = (String) iterator.next();
  +            String[] values1 = headers.getHeader(key);
  +            String[] values2 = mimeHeaders.getHeader(key);
  +            if(values1.length!=values2.length)
  +                return false;
  +            java.util.Arrays.sort(values1);
  +            java.util.Arrays.sort(values2);
  +            for(int i=0;i<values1.length;i++) {
  +                if(!values1[i].equals(values2[i]))
  +                    return false;
  +            }
  +        }
  +        return true;
       }
   
       /**
  
  
  
  1.18      +29 -4     
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.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- AttachmentsImpl.java      24 Jun 2002 12:34:51 -0000      1.17
  +++ AttachmentsImpl.java      24 Jun 2002 13:19:10 -0000      1.18
  @@ -61,6 +61,8 @@
   import org.apache.axis.Part;
   import org.apache.axis.SOAPPart;
   import org.apache.axis.utils.JavaUtils;
  +import org.apache.commons.logging.Log;
  +import org.apache.commons.logging.LogFactory;
   
   import javax.activation.DataHandler;
   import javax.activation.DataSource;
  @@ -73,6 +75,8 @@
    * AttachmentParts.
    */
   public class AttachmentsImpl implements Attachments {
  +    protected static Log log =
  +            LogFactory.getLog(AttachmentsImpl.class.getName());
   
       /** Field attachments           */
       private HashMap attachments = new java.util.HashMap();
  @@ -507,8 +511,21 @@
        *   <P>This method does not touch the SOAP part.</P>
        */
       public void removeAllAttachments() {
  +        try {
  +            mergeinAttachments();
  +        } catch (AxisFault af){
  +            log.warn(JavaUtils.getMessage("exception00"));
  +        }
   
  -        // TODO: Flesh it out.
  +        java.util.Iterator iterator = attachments.values().iterator();
  +        while(iterator.hasNext()){
  +            Part removedPart = (Part) iterator.next();
  +            if (removedPart != null) {
  +                attachments.remove(removedPart.getContentId());
  +                attachments.remove(removedPart.getContentLocation());
  +                orderedAttachments.remove(removedPart);
  +            }
  +        }
       }
   
       /**
  @@ -524,9 +541,17 @@
        */
       public java.util.Iterator getAttachments(
               javax.xml.soap.MimeHeaders headers) {
  -
  -        // TODO: Flesh it out.
  -        return null;
  +        java.util.Vector vecParts = new java.util.Vector();
  +        java.util.Iterator iterator = attachments.values().iterator();
  +        while(iterator.hasNext()){
  +            Part part = (Part) iterator.next();
  +            if(part instanceof AttachmentPart){
  +                if(((AttachmentPart)part).matches(headers)){
  +                    vecParts.add(part);
  +                }
  +            }
  +        }
  +        return vecParts.iterator();
       }
   
       /**
  
  
  
  1.3       +6 -0      xml-axis/java/test/saaj/TestAttachment.java
  
  Index: TestAttachment.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/saaj/TestAttachment.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestAttachment.java       24 Jun 2002 11:03:12 -0000      1.2
  +++ TestAttachment.java       24 Jun 2002 13:19:10 -0000      1.3
  @@ -25,6 +25,9 @@
           attachment.setContent(stringContent, "text/plain");
           attachment.setContentId("update_address");
           message.addAttachmentPart(attachment);
  +
  +        assertTrue(message.countAttachments()==1);
  +
           java.util.Iterator it = message.getAttachments();
           while (it.hasNext()) {
               attachment = (AttachmentPart) it.next();
  @@ -35,6 +38,9 @@
           }
           System.out.println("Here is what the XML message looks like:");
           message.writeTo(System.out);
  +
  +        message.removeAllAttachments();
  +        assertTrue(message.countAttachments()==0);
       }
   
       public static void main(String[] args) throws Exception {
  
  
  


Reply via email to