Search in sources :

Example 16 with BsonObjectId

use of org.bson.BsonObjectId in project mongo-java-driver by mongodb.

the class GridFSTest method doDelete.

private void doDelete(final BsonDocument arguments, final BsonDocument assertion) {
    Throwable error = null;
    try {
        new MongoOperation<Void>() {

            @Override
            public void execute() {
                gridFSBucket.delete(arguments.getObjectId("id").getValue(), getCallback());
            }
        }.get();
    } catch (MongoGridFSException e) {
        error = e;
    }
    if (assertion.containsKey("error")) {
        assertNotNull("Should have thrown an exception", error);
    } else {
        assertNull("Should not have thrown an exception", error);
        for (BsonValue rawDataItem : assertion.getArray("data")) {
            BsonDocument dataItem = rawDataItem.asDocument();
            for (BsonValue deletedItem : dataItem.getArray("deletes", new BsonArray())) {
                String delete = dataItem.getString("delete", new BsonString("none")).getValue();
                BsonObjectId id = new BsonObjectId(new ObjectId());
                if (delete.equals("expected.files")) {
                    id = deletedItem.asDocument().getDocument("q").getObjectId("_id");
                } else if (delete.equals("expected.chunks")) {
                    id = deletedItem.asDocument().getDocument("q").getObjectId("files_id");
                }
                long filesCount = getFilesCount(new BsonDocument("_id", id));
                long chunksCount = getChunksCount(new BsonDocument("files_id", id));
                assertEquals(filesCount, 0);
                assertEquals(chunksCount, 0);
            }
        }
    }
}
Also used : BsonObjectId(org.bson.BsonObjectId) ObjectId(org.bson.types.ObjectId) MongoGridFSException(com.mongodb.MongoGridFSException) BsonString(org.bson.BsonString) BsonObjectId(org.bson.BsonObjectId) BsonDocument(org.bson.BsonDocument) BsonString(org.bson.BsonString) BsonArray(org.bson.BsonArray) BsonValue(org.bson.BsonValue)

Example 17 with BsonObjectId

use of org.bson.BsonObjectId in project mongo-java-driver by mongodb.

the class GridFSTest method doUpload.

private void doUpload(final BsonDocument rawArguments, final BsonDocument assertion) {
    Throwable error = null;
    ObjectId objectId = null;
    BsonDocument arguments = parseHexDocument(rawArguments, "source");
    try {
        final String filename = arguments.getString("filename").getValue();
        final InputStream inputStream = new ByteArrayInputStream(arguments.getBinary("source").getData());
        final GridFSUploadOptions options = new GridFSUploadOptions();
        BsonDocument rawOptions = arguments.getDocument("options", new BsonDocument());
        if (rawOptions.containsKey("chunkSizeBytes")) {
            options.chunkSizeBytes(rawOptions.getInt32("chunkSizeBytes").getValue());
        }
        if (rawOptions.containsKey("metadata")) {
            options.metadata(Document.parse(rawOptions.getDocument("metadata").toJson()));
        }
        objectId = new MongoOperation<ObjectId>() {

            @Override
            public void execute() {
                gridFSBucket.uploadFromStream(filename, toAsyncInputStream(inputStream), options, getCallback());
            }
        }.get();
    } catch (Throwable e) {
        error = e;
    }
    if (assertion.containsKey("error")) {
        // We don't need to read anything more so don't see the extra chunk
        if (!assertion.getString("error").getValue().equals("ExtraChunk")) {
            assertNotNull("Should have thrown an exception", error);
        }
    } else {
        assertNull("Should not have thrown an exception", error);
        for (BsonValue rawDataItem : assertion.getArray("data", new BsonArray())) {
            BsonDocument dataItem = rawDataItem.asDocument();
            String insert = dataItem.getString("insert", new BsonString("none")).getValue();
            if (insert.equals("expected.files")) {
                List<BsonDocument> documents = processFiles(dataItem.getArray("documents", new BsonArray()), new ArrayList<BsonDocument>());
                assertEquals(getFilesCount(new BsonDocument()), documents.size());
                BsonDocument actual = new MongoOperation<BsonDocument>() {

                    @Override
                    public void execute() {
                        filesCollection.find().first(getCallback());
                    }
                }.get();
                for (BsonDocument expected : documents) {
                    assertEquals(expected.get("length"), actual.get("length"));
                    assertEquals(expected.get("chunkSize"), actual.get("chunkSize"));
                    assertEquals(expected.get("md5"), actual.get("md5"));
                    assertEquals(expected.get("filename"), actual.get("filename"));
                    if (expected.containsKey("metadata")) {
                        assertEquals(expected.get("metadata"), actual.get("metadata"));
                    }
                }
            } else if (insert.equals("expected.chunks")) {
                List<BsonDocument> documents = processChunks(dataItem.getArray("documents", new BsonArray()), new ArrayList<BsonDocument>());
                assertEquals(getChunksCount(new BsonDocument()), documents.size());
                List<BsonDocument> actualDocuments = new MongoOperation<List<BsonDocument>>() {

                    @Override
                    public void execute() {
                        chunksCollection.find().into(new ArrayList<BsonDocument>(), getCallback());
                    }
                }.get();
                for (int i = 0; i < documents.size(); i++) {
                    BsonDocument expected = documents.get(i);
                    BsonDocument actual;
                    actual = actualDocuments.get(i);
                    assertEquals(new BsonObjectId(objectId), actual.getObjectId("files_id"));
                    assertEquals(expected.get("n"), actual.get("n"));
                    assertEquals(expected.get("data"), actual.get("data"));
                }
            }
        }
    }
}
Also used : BsonObjectId(org.bson.BsonObjectId) ObjectId(org.bson.types.ObjectId) ByteArrayInputStream(java.io.ByteArrayInputStream) AsyncStreamHelper.toAsyncInputStream(com.mongodb.async.client.gridfs.helpers.AsyncStreamHelper.toAsyncInputStream) InputStream(java.io.InputStream) ArrayList(java.util.ArrayList) BsonString(org.bson.BsonString) BsonObjectId(org.bson.BsonObjectId) BsonDocument(org.bson.BsonDocument) ByteArrayInputStream(java.io.ByteArrayInputStream) BsonString(org.bson.BsonString) BsonArray(org.bson.BsonArray) ArrayList(java.util.ArrayList) List(java.util.List) GridFSUploadOptions(com.mongodb.client.gridfs.model.GridFSUploadOptions) BsonValue(org.bson.BsonValue)

Example 18 with BsonObjectId

use of org.bson.BsonObjectId in project mongo-java-driver by mongodb.

the class GridFSBucketImpl method uploadFromStream.

@Override
public ObjectId uploadFromStream(final String filename, final InputStream source, final GridFSUploadOptions options) {
    ObjectId id = new ObjectId();
    uploadFromStream(new BsonObjectId(id), filename, source, options);
    return id;
}
Also used : BsonObjectId(org.bson.BsonObjectId) ObjectId(org.bson.types.ObjectId) BsonObjectId(org.bson.BsonObjectId)

Example 19 with BsonObjectId

use of org.bson.BsonObjectId in project spring-data-mongodb by spring-projects.

the class GridFsResourceUnitTests method shouldThrowExceptionOnEmptyContentTypeInMetadata.

// DATAMONGO-1850
@Test
public void shouldThrowExceptionOnEmptyContentTypeInMetadata() {
    GridFSFile file = new GridFSFile(new BsonObjectId(), "foo", 0, 0, new Date(), "foo", new Document());
    GridFsResource resource = new GridFsResource(file);
    assertThatThrownBy(resource::getContentType).isInstanceOf(MongoGridFSException.class);
}
Also used : GridFSFile(com.mongodb.client.gridfs.model.GridFSFile) Document(org.bson.Document) BsonObjectId(org.bson.BsonObjectId) Date(java.util.Date) Test(org.junit.Test)

Example 20 with BsonObjectId

use of org.bson.BsonObjectId in project spring-data-mongodb by spring-projects.

the class GridFsTemplateIntegrationTests method convertFileToResource.

// DATAMONGO-1813
@Test
public void convertFileToResource() throws IOException {
    Document metadata = new Document("key", "value");
    ObjectId reference = operations.store(resource.getInputStream(), "foobar", metadata);
    GridFSFile file = operations.findOne(query(whereMetaData("key").is("value")));
    GridFsResource result = operations.getResource(file);
    assertThat(result.contentLength()).isEqualTo(resource.contentLength());
    assertThat(((BsonObjectId) result.getId()).getValue()).isEqualTo(reference);
}
Also used : BsonObjectId(org.bson.BsonObjectId) ObjectId(org.bson.types.ObjectId) GridFSFile(com.mongodb.client.gridfs.model.GridFSFile) Document(org.bson.Document) BsonObjectId(org.bson.BsonObjectId) Test(org.junit.Test)

Aggregations

BsonObjectId (org.bson.BsonObjectId)27 ObjectId (org.bson.types.ObjectId)23 Test (org.junit.Test)19 GridFSFile (com.mongodb.client.gridfs.model.GridFSFile)12 ArrayList (java.util.ArrayList)11 Document (org.bson.Document)9 GridFSFindIterable (com.mongodb.client.gridfs.GridFSFindIterable)8 BsonDocument (org.bson.BsonDocument)8 List (java.util.List)7 MongoGridFSException (com.mongodb.MongoGridFSException)6 BsonArray (org.bson.BsonArray)6 BsonString (org.bson.BsonString)6 BsonValue (org.bson.BsonValue)6 Date (java.util.Date)5 IOException (java.io.IOException)4 Assertions (org.assertj.core.api.Assertions)4 Before (org.junit.Before)4 RunWith (org.junit.runner.RunWith)4 Autowired (org.springframework.beans.factory.annotation.Autowired)3 ClassPathResource (org.springframework.core.io.ClassPathResource)3