Argh yes, I missed that :)
Do you want me to fix it or can you do it?

Thanks,
Florent

2010/3/16 Dominique Pfister <[email protected]>:
> Hi Florent,
>
> Your valid mime-type check now produces a log messages for every
> non-document or document that has no content stream mime type set
> (cmis:contentStreamMimeType is null), such as:
>
> 17:22:52,231 ERROR [CMISObjectsCollection] Object
> 2e683c0a-f0e3-43fd-bbef-4b88745275af has invalid
> cmis:contentStreamMimeType 'null', will be served as
> 'application/octet-stream'
>
> I guess the object value should first be checked against null, what do
> you think?
>
> Kind regards
> Dominique
>
> On Fri, Mar 12, 2010 at 1:17 PM,  <[email protected]> wrote:
>> 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);
>>
>>
>>
>



-- 
Florent Guillaume, Director of R&D, Nuxeo
Open Source, Java EE based, Enterprise Content Management (ECM)
http://www.nuxeo.com   http://www.nuxeo.org   +33 1 40 33 79 87

Reply via email to