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; + } } }