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 {