chemistry-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From fguilla...@apache.org
Subject svn commit: r922231 - in /incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src: main/java/org/apache/chemistry/atompub/server/CMISObjectsCollection.java test/java/org/apache/chemistry/atompub/server/AtomPubServerTestCase.java
Date Fri, 12 Mar 2010 12:17:37 GMT
Author: fguillaume
Date: Fri Mar 12 12:17:37 2010
New Revision: 922231

URL: http://svn.apache.org/viewvc?rev=922231&view=rev
Log:
CMIS-156: don't crash on invalid MIME types

Modified:
    incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISObjectsCollection.java
    incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/test/java/org/apache/chemistry/atompub/server/AtomPubServerTestCase.java

Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISObjectsCollection.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISObjectsCollection.java?rev=922231&r1=922230&r2=922231&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISObjectsCollection.java
(original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISObjectsCollection.java
Fri Mar 12 12:17:37 2010
@@ -31,6 +31,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
+import javax.activation.MimeType;
 import javax.xml.namespace.QName;
 
 import org.apache.abdera.factory.Factory;
@@ -552,7 +553,7 @@ public abstract class CMISObjectsCollect
         } catch (ResponseContextException e) {
             return createErrorResponse(e);
         } catch (IllegalArgumentException e) {
-           return createErrorResponse(new ResponseContextException(400, e));
+            return createErrorResponse(new ResponseContextException(400, e));
         } catch (ConstraintViolationException e) {
             return createErrorResponse(new ResponseContextException(409, e));
         } catch (CMISRuntimeException e) {
@@ -758,7 +759,17 @@ public abstract class CMISObjectsCollect
     @Override
     public String getContentType(ObjectEntry object) {
         try {
-            return (String) object.getValue(Property.CONTENT_STREAM_MIME_TYPE);
+            String mimeType = (String) object.getValue(Property.CONTENT_STREAM_MIME_TYPE);
+            // make sure it's a valid MIME type otherwise Abdera will throw
+            try {
+                new MimeType(mimeType).toString();
+            } catch (Exception e) {
+                log.error("Object " + object.getId() + " has invalid "
+                        + Property.CONTENT_STREAM_MIME_TYPE + " '" + mimeType
+                        + "', will be served as 'application/octet-stream'");
+                mimeType = "application/octet-stream";
+            }
+            return mimeType;
         } catch (IllegalArgumentException e) {
             return null;
         }

Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/test/java/org/apache/chemistry/atompub/server/AtomPubServerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/test/java/org/apache/chemistry/atompub/server/AtomPubServerTestCase.java?rev=922231&r1=922230&r2=922231&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/test/java/org/apache/chemistry/atompub/server/AtomPubServerTestCase.java
(original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/test/java/org/apache/chemistry/atompub/server/AtomPubServerTestCase.java
Fri Mar 12 12:17:37 2010
@@ -83,6 +83,8 @@ public abstract class AtomPubServerTestC
 
     protected static String doc3id;
 
+    protected static String doc4id;
+
     protected RepositoryService repositoryService;
 
     public Server server;
@@ -188,6 +190,15 @@ public abstract class AtomPubServerTestC
         doc3.save();
         doc3id = doc3.getId();
 
+        Document doc4 = folder2.newDocument("doc");
+        doc4.setName("doc4");
+        doc4.setValue("title", "doc 4 title");
+        cs = new SimpleContentStream(TEST_FILE_CONTENT.getBytes("UTF-8"),
+                "invalid_mime", "doc4.txt");
+        doc4.setContentStream(cs);
+        doc4.save();
+        doc4id = doc4.getId();
+
         conn.close();
         return repo;
     }
@@ -453,6 +464,17 @@ public abstract class AtomPubServerTestC
         method.releaseConnection();
     }
 
+    public void testBadContentType() throws Exception {
+        HttpMethod method = new GetMethod(base + "/file/" + doc4id);
+        int status = new HttpClient().executeMethod(method);
+        assertEquals(HttpStatus.SC_OK, status);
+        assertEquals("application/octet-stream", method.getResponseHeader(
+                "Content-Type").getValue());
+        byte[] body = method.getResponseBody();
+        assertEquals(TEST_FILE_CONTENT, new String(body, "UTF-8"));
+        method.releaseConnection();
+    }
+
     public void testQueryPOST() throws Exception {
         EntityProvider provider = new QueryEntityProvider("SELECT * FROM doc",
                 true, null, null);



Mime
View raw message