Author: veithen
Date: Sun May 22 11:31:56 2011
New Revision: 1125914

URL: http://svn.apache.org/viewvc?rev=1125914&view=rev
Log:
Added some sanity checks to Attachments#getSOAPPartContentType().

Modified:
    
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/attachments/AttachmentsTest.java

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java?rev=1125914&r1=1125913&r2=1125914&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java
 Sun May 22 11:31:56 2011
@@ -471,7 +471,14 @@ public class Attachments implements OMAt
      */
     public String getSOAPPartContentType() {
         if (!noStreams) {
-            DataHandler soapPart = getDataHandler(getSOAPPartContentID());
+            String soapPartContentID = getSOAPPartContentID();
+            if (soapPartContentID == null) {
+                throw new OMException("Unable to determine the content ID of 
the SOAP part");
+            }
+            DataHandler soapPart = getDataHandler(soapPartContentID);
+            if (soapPart == null) {
+                throw new OMException("Unable to locate the SOAP part; content 
ID was " + soapPartContentID);
+            }
             return soapPart.getContentType();
         } else {
             throw new OMException(

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/attachments/AttachmentsTest.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/attachments/AttachmentsTest.java?rev=1125914&r1=1125913&r2=1125914&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/attachments/AttachmentsTest.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/attachments/AttachmentsTest.java
 Sun May 22 11:31:56 2011
@@ -27,6 +27,7 @@ import javax.activation.DataHandler;
 
 import org.apache.axiom.attachments.utils.IOUtils;
 import org.apache.axiom.om.AbstractTestCase;
+import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.TestConstants;
 import org.apache.axiom.testutils.io.IOTestUtils;
 
@@ -119,6 +120,24 @@ public class AttachmentsTest extends Abs
         testGetSOAPPartContentID("cid:", "cid:");
     }
     
+    /**
+     * Tests that {@link Attachments#getSOAPPartContentType()} throws a 
meaningful exception if it
+     * is unable to determine the content type.
+     */
+    public void testGetSOAPPartContentTypeWithContentIDMismatch() {
+        String contentType = "multipart/related; boundary=\"" + 
TestConstants.MTOM_MESSAGE_BOUNDARY +
+                "\"; type=\"text/xml\"; 
start=\"<[email protected]>\"";
+        Attachments attachments = new 
Attachments(getTestResource(TestConstants.MTOM_MESSAGE), contentType);
+        try {
+            attachments.getSOAPPartContentType();
+            fail("Expected OMException");
+        } catch (OMException ex) {
+            // OK, expected
+        } catch (Throwable ex) {
+            fail("Unexpected exception: " + ex.getClass().getName());
+        }
+    }
+    
     public void testGetIncomingAttachmentStreams() throws Exception {
         InputStream inStream = getTestResource(TestConstants.MTOM_MESSAGE);
         Attachments attachments = new Attachments(inStream, 
TestConstants.MTOM_MESSAGE_CONTENT_TYPE);


Reply via email to