dims        2002/07/02 04:31:47

  Modified:    java/src/org/apache/axis/attachments AttachmentPart.java
                        AttachmentsImpl.java MimeUtils.java
                        MultiPartDimeInputStream.java
                        MultiPartRelatedInputStream.java
               java/src/org/apache/axis/encoding/ser
                        JAFDataHandlerSerializer.java
               java/test/md5attach MD5AttachTest.java
               java/src/org/apache/axis SOAPPart.java
               java/test/saaj TestAttachment.java
  Log:
  Rolling back my changes.
  
  Revision  Changes    Path
  1.19      +24 -5     
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.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- AttachmentPart.java       1 Jul 2002 20:01:39 -0000       1.18
  +++ AttachmentPart.java       2 Jul 2002 11:31:46 -0000       1.19
  @@ -96,6 +96,7 @@
        * Constructor AttachmentPart
        */
       public AttachmentPart() {
  +        addMimeHeader(HTTPConstants.HEADER_CONTENT_ID, 
SOAPUtils.getNewContentIdValue());
       }
   
       /**
  @@ -104,9 +105,11 @@
        * @param dh
        */
       public AttachmentPart(javax.activation.DataHandler dh) {
  +        addMimeHeader(HTTPConstants.HEADER_CONTENT_ID,
  +                SOAPUtils.getNewContentIdValue());
           datahandler = dh;
           if(dh != null)
  -            setMimeHeader(HTTPConstants.HEADER_CONTENT_TYPE, dh.getContentType());
  +            addMimeHeader(HTTPConstants.HEADER_CONTENT_TYPE, dh.getContentType());
       }
   
       /**
  @@ -134,7 +137,7 @@
        * @param value
        */
       public void addMimeHeader(String header, String value) {
  -        mimeHeaders.addHeader(header, value);
  +        mimeHeaders.setHeader(header, value);
       }
   
       /**
  @@ -188,7 +191,7 @@
        * @param loc
        */
       public void setContentLocation(String loc) {
  -        setMimeHeader(HTTPConstants.HEADER_CONTENT_LOCATION, loc);
  +        addMimeHeader(HTTPConstants.HEADER_CONTENT_LOCATION, loc);
       }
   
       /**
  @@ -198,7 +201,10 @@
        *     @returns void
        */
       public void setContentId(String newCid) {
  -        setMimeHeader(HTTPConstants.HEADER_CONTENT_ID, newCid);
  +        if (newCid!=null && !newCid.toLowerCase().startsWith("cid:";)) {
  +            newCid = "cid:"; + newCid;
  +        }
  +        addMimeHeader(HTTPConstants.HEADER_CONTENT_ID, newCid);
       }
   
       /**
  @@ -207,7 +213,20 @@
        * @return
        */
       public String getContentId() {
  -        return getFirstMimeHeader(HTTPConstants.HEADER_CONTENT_ID);
  +        String ret = getFirstMimeHeader(HTTPConstants.HEADER_CONTENT_ID);
  +        // Do not let the contentID ever be empty.
  +        if (ret == null) {
  +            ret = SOAPUtils.getNewContentIdValue();
  +            addMimeHeader(HTTPConstants.HEADER_CONTENT_ID, ret);
  +        }
  +
  +        ret = ret.trim();
  +        if (ret.length() == 0) {
  +            ret = SOAPUtils.getNewContentIdValue();
  +            addMimeHeader(HTTPConstants.HEADER_CONTENT_ID, ret);
  +        }
  +
  +        return ret;
       }
   
       /**
  
  
  
  1.23      +11 -11    
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.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- AttachmentsImpl.java      1 Jul 2002 20:01:39 -0000       1.22
  +++ AttachmentsImpl.java      2 Jul 2002 11:31:46 -0000       1.23
  @@ -223,8 +223,7 @@
           Part removedPart = getAttachmentByReference(reference);
   
           if (removedPart != null) {
  -            if(removedPart.getContentId()!=null)
  -                attachments.remove(removedPart.getContentId());
  +            attachments.remove(removedPart.getContentId());
               attachments.remove(removedPart.getContentLocation());
               orderedAttachments.remove(removedPart);
           }
  @@ -251,9 +250,7 @@
   
           mergeinAttachments();
   
  -        Part oldPart = null;
  -        if(newPart.getContentId()!=null)
  -            oldPart = (Part) attachments.put(newPart.getContentId(), newPart);
  +        Part oldPart = (Part) attachments.put(newPart.getContentId(), newPart);
   
           if (oldPart != null) {
               orderedAttachments.remove(oldPart);
  @@ -478,8 +475,6 @@
                   AttachmentPart part= (AttachmentPart)i.next();
                       DataHandler dh= AttachmentUtils.
                         getActivationDataHandler(part);
  -                    if(part.getContentId() == null)
  -                        
part.setContentId(org.apache.axis.utils.SOAPUtils.getNewContentIdValue());
                       dimemultipart.addBodyPart(new 
                         DimeBodyPart(dh,part.getContentId()));
                 }
  @@ -591,10 +586,15 @@
               log.warn(JavaUtils.getMessage("exception00"));
           }
   
  -        multipart = null;
  -        dimemultipart = null;
  -        attachments.clear();
  -        orderedAttachments.clear();
  +        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);
  +            }
  +        }
       }
   
       /**
  
  
  
  1.20      +48 -4     xml-axis/java/src/org/apache/axis/attachments/MimeUtils.java
  
  Index: MimeUtils.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/attachments/MimeUtils.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- MimeUtils.java    1 Jul 2002 20:01:39 -0000       1.19
  +++ MimeUtils.java    2 Jul 2002 11:31:46 -0000       1.20
  @@ -267,7 +267,12 @@
           javax.mail.internet.MimeMultipart multipart = null;
   
           try {
  -            String rootCID = org.apache.axis.utils.SOAPUtils.getNewContentIdValue();
  +            String rootCID = getNewContentIdValue();
  +
  +            if (rootCID.startsWith("cid:";)) {
  +                rootCID = rootCID.substring(4);
  +            }
  +
               multipart = new javax.mail.internet.MimeMultipart(
                       "related; type=\"text/xml\"; start=\"<" + rootCID + ">\"");
   
  @@ -288,11 +293,11 @@
                   javax.activation.DataHandler dh =
                           
org.apache.axis.attachments.AttachmentUtils.getActivationDataHandler(
                                   part);
  -                if(part.getContentId()==null){
  -                    
part.setContentId(org.apache.axis.utils.SOAPUtils.getNewContentIdValue());
  -                }
                   String contentID = part.getContentId();
   
  +                if (contentID.startsWith("cid:";)) {
  +                    contentID = contentID.substring(4);
  +                }
   
                   messageBodyPart = new javax.mail.internet.MimeBodyPart();
   
  @@ -332,5 +337,44 @@
           }
   
           return multipart;
  +    }
  +
  +    /** Field thisHost           */
  +    static String thisHost = null;
  +
  +    /** Field count           */
  +    private static int count = (int) (Math.random() * 100);
  +
  +    /**
  +     * Method getNewContentIdValue
  +     *
  +     * @return
  +     */
  +    public static String getNewContentIdValue() {
  +
  +        int lcount;
  +
  +        synchronized (org.apache.axis.Message.class) {
  +            lcount = ++count;
  +        }
  +
  +        if (null == thisHost) {
  +            try {
  +                thisHost = java.net.InetAddress.getLocalHost().getHostName();
  +            } catch (java.net.UnknownHostException e) {
  +                log.error(JavaUtils.getMessage("javaNetUnknownHostException00"),
  +                        e);
  +
  +                thisHost = "localhost";
  +            }
  +        }
  +
  +        StringBuffer s = new StringBuffer();
  +
  +        // Unique string is <hashcode>.<currentTime>.apache-soap.<hostname>
  +        s.append("cid:";).append(lcount).append(s.hashCode()).append('.').append(
  +                System.currentTimeMillis()).append(".AXIS@").append(thisHost);
  +
  +        return s.toString();
       }
   }
  
  
  
  1.5       +1 -5      
xml-axis/java/src/org/apache/axis/attachments/MultiPartDimeInputStream.java
  
  Index: MultiPartDimeInputStream.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/attachments/MultiPartDimeInputStream.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- MultiPartDimeInputStream.java     1 Jul 2002 20:01:39 -0000       1.4
  +++ MultiPartDimeInputStream.java     2 Jul 2002 11:31:46 -0000       1.5
  @@ -101,8 +101,6 @@
           super(null); //don't cache this stream.
           soapStream = dimeDelimitedStream = new DimeDelimitedInputStream(is); //The 
Soap stream must always be first
           contentId = dimeDelimitedStream.getContentId();
  -        if(contentId == null)
  -            contentId = org.apache.axis.utils.SOAPUtils.getNewContentIdValue();
       }
   
       public Part getAttachmentByReference(final String[] id)
  @@ -191,8 +189,6 @@
               if (null != dimeDelimitedStream) {
                   do {
                       String contentId = dimeDelimitedStream.getContentId();
  -                    if(contentId == null)
  -                        contentId = 
org.apache.axis.utils.SOAPUtils.getNewContentIdValue();
                       String type = dimeDelimitedStream.getType();
   
                       if (type != null && 
!dimeDelimitedStream.getDimeTypeNameFormat().equals(DimeTypeNameFormat.MIME)) {
  @@ -206,7 +202,7 @@
                       AttachmentPart ap = new AttachmentPart(dh);
   
                       if (contentId != null) 
  -                        ap.setMimeHeader(HTTPConstants.HEADER_CONTENT_ID, 
contentId); 
  +                        ap.addMimeHeader(HTTPConstants.HEADER_CONTENT_ID, 
contentId); 
   
                       addPart(contentId, "", ap);
   
  
  
  
  1.19      +18 -4     
xml-axis/java/src/org/apache/axis/attachments/MultiPartRelatedInputStream.java
  
  Index: MultiPartRelatedInputStream.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/attachments/MultiPartRelatedInputStream.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- MultiPartRelatedInputStream.java  1 Jul 2002 20:01:39 -0000       1.18
  +++ MultiPartRelatedInputStream.java  2 Jul 2002 11:31:46 -0000       1.19
  @@ -162,6 +162,10 @@
                       rootPartContentId = rootPartContentId.substring(0,
                               rootPartContentId.length() - 1);
                   }
  +
  +                if (!rootPartContentId.startsWith("cid:";)) {
  +                    rootPartContentId = "cid:"; + rootPartContentId;
  +                }
               }
   
               // if start is null then the first attachment is the rootpart
  @@ -235,6 +239,12 @@
                       }
   
                       contentId = contentId.trim();
  +
  +                    if (!contentId.startsWith("cid:";)) {
  +                        contentId =
  +                                "cid:";
  +                                + contentId;        // make sure its identified as 
cid
  +                    }
                   }
   
                   contentLocation =
  @@ -287,12 +297,12 @@
                       AttachmentPart ap = new AttachmentPart(dh);
   
                       if (contentId != null) {
  -                        ap.setMimeHeader(HTTPConstants.HEADER_CONTENT_ID,
  +                        ap.addMimeHeader(HTTPConstants.HEADER_CONTENT_ID,
                                   contentId);
                       }
   
                       if (contentLocation != null) {
  -                        ap.setMimeHeader(HTTPConstants.HEADER_CONTENT_LOCATION,
  +                        ap.addMimeHeader(HTTPConstants.HEADER_CONTENT_LOCATION,
                                   contentLocation);
                       }
   
  @@ -509,6 +519,10 @@
                                       contentId.substring(0, contentId.length() - 1);
                           }
   
  +                        if (!contentId.startsWith("cid:";)) {
  +                            contentId = "cid:"; + contentId;
  +                        }
  +
                           contentId = contentId.trim();
                       }
   
  @@ -551,12 +565,12 @@
                       AttachmentPart ap = new AttachmentPart(dh);
   
                       if (contentId != null) {
  -                        ap.setMimeHeader(HTTPConstants.HEADER_CONTENT_ID,
  +                        ap.addMimeHeader(HTTPConstants.HEADER_CONTENT_ID,
                                   contentId);
                       }
   
                       if (contentLocation != null) {
  -                        ap.setMimeHeader(HTTPConstants.HEADER_CONTENT_LOCATION,
  +                        ap.addMimeHeader(HTTPConstants.HEADER_CONTENT_LOCATION,
                                   contentLocation);
                       }
   
  
  
  
  1.14      +0 -1      
xml-axis/java/src/org/apache/axis/encoding/ser/JAFDataHandlerSerializer.java
  
  Index: JAFDataHandlerSerializer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/JAFDataHandlerSerializer.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- JAFDataHandlerSerializer.java     1 Jul 2002 20:01:39 -0000       1.13
  +++ JAFDataHandlerSerializer.java     2 Jul 2002 11:31:46 -0000       1.14
  @@ -111,7 +111,6 @@
           //Add the attachment content to the message.
           Attachments attachments= context.getCurrentMessage().getAttachmentsImpl();
           Part attachmentPart= attachments.createAttachmentPart(dh);
  -        
attachmentPart.setContentId(org.apache.axis.utils.SOAPUtils.getNewContentIdValue());
           String href= attachmentPart.getContentId();
   
           AttributesImpl attrs = new AttributesImpl();
  
  
  
  1.6       +0 -1      xml-axis/java/test/md5attach/MD5AttachTest.java
  
  Index: MD5AttachTest.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/md5attach/MD5AttachTest.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- MD5AttachTest.java        1 Jul 2002 20:01:39 -0000       1.5
  +++ MD5AttachTest.java        2 Jul 2002 11:31:47 -0000       1.6
  @@ -54,7 +54,6 @@
           //Add the attachment content to the message.
           org.apache.axis.attachments.Attachments attachments = 
msg.getAttachmentsImpl();
           org.apache.axis.Part attachmentPart = attachments.createAttachmentPart(dh);
  -        
attachmentPart.setContentId(org.apache.axis.utils.SOAPUtils.getNewContentIdValue());
           String href = attachmentPart.getContentId();
           //Have the parameter element set an href attribute to the attachment.
           paramElement.setAttribute(org.apache.axis.Constants.ATTR_HREF, href);
  
  
  
  1.31      +27 -11    xml-axis/java/src/org/apache/axis/SOAPPart.java
  
  Index: SOAPPart.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/SOAPPart.java,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- SOAPPart.java     1 Jul 2002 20:01:39 -0000       1.30
  +++ SOAPPart.java     2 Jul 2002 11:31:47 -0000       1.31
  @@ -127,7 +127,7 @@
        * object is."
        */
       private Object currentMessage ;
  -
  +    
       /**
        * Message object this part is tied to. Used for serialization settings.
        */
  @@ -145,7 +145,9 @@
        * "Just something to us working..."
        */
       public SOAPPart(Message parent, Object initialContents, boolean isBodyStream) {
  -        mimeHeaders.setHeader("Content-Type", "text/xml");
  +        addMimeHeader(HTTPConstants.HEADER_CONTENT_ID , 
SOAPUtils.getNewContentIdValue());
  +
  +
           msgObject=parent;
           // originalMessage = initialContents;
           int form = FORM_STRING;
  @@ -169,7 +171,7 @@
               log.debug("Exit: SOAPPart ctor()");
           }
       }
  -    /* This could be rather costly with attachments.
  +    /* This could be rather costly with attachments.  
   
       public Object getOriginalMessage() {
           return originalMessage;
  @@ -213,15 +215,15 @@
           }
       }
       /**
  -     * This set the SOAP Envelope for this part.
  -     *
  +     * This set the SOAP Envelope for this part. 
  +     * 
        * Note: It breaks the chicken/egg created.
        *  I need a message to create an attachment...
        *  From the attachment I should be able to get a reference...
        *  I now want to edit elements in the envelope in order to
        *    place the  attachment reference to it.
        *  How do I now update the SOAP envelope with what I've changed?
  -     *
  +     *  
        */
   
       public void setSOAPEnvelope(org.apache.axis.message.SOAPEnvelope env){
  @@ -461,7 +463,7 @@
           }
   
           setCurrentMessage(dser.getEnvelope(), FORM_SOAPENVELOPE);
  -
  +        
           log.debug("Exit: SOAPPart::getAsSOAPEnvelope");
           return (SOAPEnvelope)currentMessage;
       }
  @@ -470,7 +472,7 @@
        * Add the specified MIME header, as per JAXM.
        */
       public void addMimeHeader (String header, String value) {
  -        mimeHeaders.addHeader(header, value);
  +        mimeHeaders.setHeader(header, value);
       }
   
       /**
  @@ -499,7 +501,7 @@
        * Set content location.
        */
       public void setContentLocation(String loc) {
  -        setMimeHeader(HTTPConstants.HEADER_CONTENT_LOCATION, loc);
  +        addMimeHeader(HTTPConstants.HEADER_CONTENT_LOCATION, loc);
       }
   
       /**
  @@ -509,14 +511,28 @@
            * @returns void
            */
           public void setContentId(String newCid){
  -                setMimeHeader(HTTPConstants.HEADER_CONTENT_ID,newCid);
  +                if(newCid!=null && !newCid.toLowerCase().startsWith("cid:";)){
  +                        newCid="cid:"+newCid;
  +                }
  +                addMimeHeader(HTTPConstants.HEADER_CONTENT_ID,newCid);
           }
   
       /**
        * Content ID.
        */
       public String getContentId() {
  -        return getFirstMimeHeader(HTTPConstants.HEADER_CONTENT_ID);
  +        String ret= getFirstMimeHeader(HTTPConstants.HEADER_CONTENT_ID);
  +        //Do not let the contentID ever be empty.
  +        if(ret == null){
  +            ret=SOAPUtils.getNewContentIdValue();
  +            addMimeHeader(HTTPConstants.HEADER_CONTENT_ID , ret);
  +        }
  +        ret= ret.trim();
  +        if(ret.length() ==0){
  +            ret=SOAPUtils.getNewContentIdValue();
  +            addMimeHeader(HTTPConstants.HEADER_CONTENT_ID , ret);
  +        }
  +        return ret;
       }
   
   
  
  
  
  1.5       +0 -1      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.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TestAttachment.java       1 Jul 2002 20:01:39 -0000       1.4
  +++ TestAttachment.java       2 Jul 2002 11:31:47 -0000       1.5
  @@ -19,7 +19,6 @@
           MessageFactory factory = MessageFactory.newInstance();
           SOAPMessage message = factory.createMessage();
           AttachmentPart attachment = message.createAttachmentPart();
  -        
attachment.setContentId(org.apache.axis.utils.SOAPUtils.getNewContentIdValue());
           String stringContent = "Update address for Sunny Skies " +
                   "Inc., to 10 Upbeat Street, Pleasant Grove, CA 95439";
   
  
  
  


Reply via email to