dims        2002/06/24 14:36:13

  Modified:    java/src/org/apache/axis/attachments AttachmentPart.java
  Log:
  Fleshing more methods and updating some.
  
  Revision  Changes    Path
  1.13      +35 -35    
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.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- AttachmentPart.java       24 Jun 2002 13:19:10 -0000      1.12
  +++ AttachmentPart.java       24 Jun 2002 21:36:13 -0000      1.13
  @@ -79,8 +79,6 @@
       /** Field datahandler           */
       javax.activation.DataHandler datahandler = null;
   
  -    // private Hashtable headers = new Hashtable();
  -
       /** Field mimeHeaders           */
       private javax.xml.soap.MimeHeaders mimeHeaders =
               new javax.xml.soap.MimeHeaders();
  @@ -95,8 +93,7 @@
        * Constructor AttachmentPart
        */
       public AttachmentPart() {
  -        addMimeHeader(HTTPConstants.HEADER_CONTENT_ID,
  -                SOAPUtils.getNewContentIdValue());
  +        addMimeHeader(HTTPConstants.HEADER_CONTENT_ID, 
SOAPUtils.getNewContentIdValue());
       }
   
       /**
  @@ -105,12 +102,9 @@
        * @param dh
        */
       public AttachmentPart(javax.activation.DataHandler dh) {
  -
           addMimeHeader(HTTPConstants.HEADER_CONTENT_ID,
                   SOAPUtils.getNewContentIdValue());
  -
           datahandler = dh;
  -
           addMimeHeader(HTTPConstants.HEADER_CONTENT_TYPE, dh.getContentType());
       }
   
  @@ -168,13 +162,10 @@
        * @return
        */
       public String getFirstMimeHeader(String header) {
  -
           String[] values = mimeHeaders.getHeader(header.toLowerCase());
  -
           if ((values != null) && (values.length > 0)) {
               return values[0];
           }
  -
           return null;
       }
   
  @@ -182,20 +173,21 @@
        * 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;
  +    public boolean matches(javax.xml.soap.MimeHeaders headers) {
  +        for (Iterator i = mimeHeaders.getAllHeaders(); i.hasNext();) {
  +            javax.xml.soap.MimeHeader hdr = (javax.xml.soap.MimeHeader) i.next();
  +            String values[] = headers.getHeader(hdr.getName());
  +            boolean found = false;
  +            if (values != null) {
  +                for (int j = 0; j < values.length; j++) {
  +                    if (!hdr.getValue().equalsIgnoreCase(values[j]))
  +                        continue;
  +                    found = true;
  +                    break;
  +                }
               }
  +            if (!found)
  +                return false;
           }
           return true;
       }
  @@ -223,11 +215,9 @@
        *     @returns void
        */
       public void setContentId(String newCid) {
  -
           if (!newCid.toLowerCase().startsWith("cid:";)) {
               newCid = "cid:"; + newCid;
           }
  -
           addMimeHeader(HTTPConstants.HEADER_CONTENT_ID, newCid);
       }
   
  @@ -237,21 +227,16 @@
        * @return
        */
       public String getContentId() {
  -
           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);
           }
   
  @@ -354,6 +339,7 @@
        */
       public void setDataHandler(DataHandler datahandler) {
           this.datahandler = datahandler;
  +        setMimeHeader(HTTPConstants.HEADER_CONTENT_TYPE, 
datahandler.getContentType());
       }
   
       /**
  @@ -390,7 +376,6 @@
        *     was a data transformation error
        */
       public Object getContent() throws SOAPException {
  -
           javax.activation.DataSource ds = datahandler.getDataSource();
   
           if (ds instanceof ManagedMemoryDataSource) {
  @@ -409,7 +394,6 @@
                   }
               }
           }
  -
           return null;
       }
   
  @@ -432,7 +416,6 @@
        * @see #getContent() getContent()
        */
       public void setContent(Object object, String contentType) {
  -
           if (object instanceof String) {
               try {
                   String s = (String) object;
  @@ -461,7 +444,7 @@
        * untouched.
        */
       public void clearContent() {
  -        // TODO: Implement this.
  +        datahandler = null;
       }
   
       /**
  @@ -474,7 +457,18 @@
        *     while trying to determine the size.
        */
       public int getSize() throws SOAPException {
  -        // TODO: Implement this.
  +        if (datahandler == null)
  +            return 0;
  +        ByteBuffer bout = new ByteBuffer();
  +        try {
  +            datahandler.writeTo(bout);
  +        } catch (java.io.IOException ex) {
  +            log.error(JavaUtils.getMessage("javaIOException00"), ex);
  +            throw new SOAPException(JavaUtils.getMessage("javaIOException01", 
ex.getMessage()), ex);
  +        }
  +        byte bytes[] = bout.getBytes();
  +        if (bytes != null)
  +            return bytes.length;
           return -1;
       }
   
  @@ -489,5 +483,11 @@
        */
       public String[] getMimeHeader(String name) {
           return mimeHeaders.getHeader(name);
  +    }
  +
  +    private class ByteBuffer extends java.io.ByteArrayOutputStream {
  +        byte[] getBytes() {
  +            return super.buf;
  +        }
       }
   }
  
  
  


Reply via email to