Skip to content

Commit 2f1aff3

Browse files
committed
DATAMONGO-2392 - Consistently use GridFS file Id instead of ObjectId.
We now consistently use GridFSFile.getId() to allow custom Id usage instead of enforcing the Id to be an ObjectId. Using the native Id allows interaction with files that use a custom Id type. Original pull request: #796.
1 parent 6970f93 commit 2f1aff3

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsTemplate.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ public GridFSFile findOne(Query query) {
184184
public void delete(Query query) {
185185

186186
for (GridFSFile gridFSFile : find(query)) {
187-
getGridFs().delete(((BsonObjectId) gridFSFile.getId()).getValue());
187+
getGridFs().delete(gridFSFile.getId());
188188
}
189189
}
190190

@@ -215,7 +215,7 @@ public GridFsResource getResource(GridFSFile file) {
215215

216216
Assert.notNull(file, "GridFSFile must not be null!");
217217

218-
return new GridFsResource(file, getGridFs().openDownloadStream(file.getObjectId()));
218+
return new GridFsResource(file, getGridFs().openDownloadStream(file.getId()));
219219
}
220220

221221
/*

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/gridfs/GridFsTemplateIntegrationTests.java

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.util.List;
2727
import java.util.Map;
2828
import java.util.Map.Entry;
29+
import java.util.UUID;
2930

3031
import org.bson.BsonObjectId;
3132
import org.bson.Document;
@@ -39,6 +40,7 @@
3940
import org.springframework.core.io.Resource;
4041
import org.springframework.data.domain.Sort;
4142
import org.springframework.data.domain.Sort.Direction;
43+
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
4244
import org.springframework.data.mongodb.core.query.Query;
4345
import org.springframework.test.context.ContextConfiguration;
4446
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -47,6 +49,8 @@
4749
import com.mongodb.MongoGridFSException;
4850
import com.mongodb.client.gridfs.GridFSFindIterable;
4951
import com.mongodb.client.gridfs.model.GridFSFile;
52+
import com.mongodb.gridfs.GridFS;
53+
import com.mongodb.gridfs.GridFSInputFile;
5054

5155
/**
5256
* Integration tests for {@link GridFsTemplate}.
@@ -65,6 +69,7 @@ public class GridFsTemplateIntegrationTests {
6569
Resource resource = new ClassPathResource("gridfs/gridfs.xml");
6670

6771
@Autowired GridFsOperations operations;
72+
@Autowired SimpleMongoDbFactory mongoClient;
6873

6974
@Before
7075
public void setUp() {
@@ -76,13 +81,31 @@ public void storesAndFindsSimpleDocument() throws IOException {
7681

7782
ObjectId reference = operations.store(resource.getInputStream(), "foo.xml");
7883

79-
List<com.mongodb.client.gridfs.model.GridFSFile> files = new ArrayList<com.mongodb.client.gridfs.model.GridFSFile>();
84+
List<com.mongodb.client.gridfs.model.GridFSFile> files = new ArrayList<>();
8085
GridFSFindIterable result = operations.find(query(where("_id").is(reference)));
8186
result.into(files);
82-
assertThat(files.size()).isEqualTo(1);
87+
assertThat(files).hasSize(1);
8388
assertThat(((BsonObjectId) files.get(0).getId()).getValue()).isEqualTo(reference);
8489
}
8590

91+
@Test // DATAMONGO-2392
92+
public void storesAndFindsByUUID() throws IOException {
93+
94+
UUID uuid = UUID.randomUUID();
95+
96+
GridFS fs = new GridFS(mongoClient.getLegacyDb());
97+
GridFSInputFile in = fs.createFile(resource.getInputStream(), "gridfs.xml");
98+
99+
in.put("_id", uuid);
100+
in.put("contentType", "application/octet-stream");
101+
in.save();
102+
103+
GridFSFile file = operations.findOne(query(where("_id").is(uuid)));
104+
GridFsResource resource = operations.getResource(file);
105+
106+
assertThat(resource.exists()).isTrue();
107+
}
108+
86109
@Test // DATAMONGO-6
87110
public void writesMetadataCorrectly() throws IOException {
88111

0 commit comments

Comments
 (0)