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