diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsCriteria.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsCriteria.java index 867e06249..c90f1c7ce 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsCriteria.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsCriteria.java @@ -69,6 +69,6 @@ public class GridFsCriteria extends Criteria { * @return */ public static GridFsCriteria whereContentType() { - return new GridFsCriteria("metadata.type"); + return new GridFsCriteria("metadata.".concat(GridFsResource.CONTENT_TYPE_FIELD)); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsResource.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsResource.java index ec8c8a96d..0a07854bd 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsResource.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsResource.java @@ -33,6 +33,8 @@ import com.mongodb.gridfs.GridFSDBFile; */ public class GridFsResource extends InputStreamResource { + static final String CONTENT_TYPE_FIELD = "_contentType"; + private final GridFSFile file; /** @@ -91,7 +93,11 @@ public class GridFsResource extends InputStreamResource { * * @return */ + @SuppressWarnings("deprecation") public String getContentType() { - return file.getContentType(); + + String contentType = file.getMetadata().get(CONTENT_TYPE_FIELD, String.class); + + return contentType != null ? contentType : file.getContentType(); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsTemplate.java index 072e9662e..a5df3598c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsTemplate.java @@ -166,7 +166,7 @@ public class GridFsTemplate implements GridFsOperations, ResourcePatternResolver Document mData = new Document(); if (StringUtils.hasText(contentType)) { - mData.put("type", contentType); + mData.put(GridFsResource.CONTENT_TYPE_FIELD, contentType); } if (metadata != null) { diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/gridfs/GridFsTemplateIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/gridfs/GridFsTemplateIntegrationTests.java index 9a881fbdd..1961f1cb7 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/gridfs/GridFsTemplateIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/gridfs/GridFsTemplateIntegrationTests.java @@ -15,8 +15,10 @@ */ package org.springframework.data.mongodb.gridfs; +import static org.assertj.core.api.Assertions.assertThat; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; +import static org.junit.Assert.assertThat; import static org.springframework.data.mongodb.core.query.Criteria.*; import static org.springframework.data.mongodb.core.query.Query.*; import static org.springframework.data.mongodb.gridfs.GridFsCriteria.*; @@ -41,7 +43,6 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.mongodb.client.gridfs.GridFSFindIterable; -import com.mongodb.gridfs.GridFSFile; /** * Integration tests for {@link GridFsTemplate}. @@ -210,15 +211,15 @@ public class GridFsTemplateIntegrationTests { assertEquals(((BsonObjectId) files.get(0).getId()).getValue(), reference); } - private static void assertSame(GridFSFile left, GridFSFile right) { + @Test // DATAMONGO-1695 + public void readsContentTypeCorrectly() throws IOException { - assertThat(left.getId(), is(right.getId())); - assertThat(left.getMD5(), is(right.getMD5())); - assertThat(left.getMetaData(), is(right.getMetaData())); + operations.store(resource.getInputStream(), "someName", "contentType"); + + assertThat(operations.getResource("someName").getContentType()).isEqualTo("contentType"); } class Metadata { - String version; } }