
com.mongodb.rx.client.MongoCollectionImpl Maven / Gradle / Ivy
/*
* Copyright 2015 MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mongodb.rx.client;
import com.mongodb.Block;
import com.mongodb.MongoNamespace;
import com.mongodb.ReadConcern;
import com.mongodb.ReadPreference;
import com.mongodb.WriteConcern;
import com.mongodb.async.SingleResultCallback;
import com.mongodb.async.client.Observables;
import com.mongodb.bulk.BulkWriteResult;
import com.mongodb.client.model.BulkWriteOptions;
import com.mongodb.client.model.CountOptions;
import com.mongodb.client.model.FindOneAndDeleteOptions;
import com.mongodb.client.model.FindOneAndReplaceOptions;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.IndexModel;
import com.mongodb.client.model.IndexOptions;
import com.mongodb.client.model.InsertManyOptions;
import com.mongodb.client.model.InsertOneOptions;
import com.mongodb.client.model.RenameCollectionOptions;
import com.mongodb.client.model.UpdateOptions;
import com.mongodb.client.model.WriteModel;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import org.bson.BsonDocument;
import org.bson.Document;
import org.bson.codecs.configuration.CodecRegistry;
import org.bson.conversions.Bson;
import rx.Observable;
import java.util.List;
import static com.mongodb.assertions.Assertions.notNull;
import static com.mongodb.rx.client.ObservableHelper.voidToSuccessCallback;
class MongoCollectionImpl implements MongoCollection {
private final com.mongodb.async.client.MongoCollection wrapped;
private final ObservableAdapter observableAdapter;
MongoCollectionImpl(final com.mongodb.async.client.MongoCollection wrapped, final ObservableAdapter observableAdapter) {
this.wrapped = notNull("wrapped", wrapped);
this.observableAdapter = notNull("observableAdapter", observableAdapter);
}
@Override
public MongoNamespace getNamespace() {
return wrapped.getNamespace();
}
@Override
public Class getDocumentClass() {
return wrapped.getDocumentClass();
}
@Override
public ObservableAdapter getObservableAdapter() {
return observableAdapter;
}
@Override
public CodecRegistry getCodecRegistry() {
return wrapped.getCodecRegistry();
}
@Override
public ReadPreference getReadPreference() {
return wrapped.getReadPreference();
}
@Override
public WriteConcern getWriteConcern() {
return wrapped.getWriteConcern();
}
@Override
public ReadConcern getReadConcern() {
return wrapped.getReadConcern();
}
@Override
public MongoCollection withDocumentClass(final Class clazz) {
return new MongoCollectionImpl(wrapped.withDocumentClass(clazz), observableAdapter);
}
@Override
public MongoCollection withCodecRegistry(final CodecRegistry codecRegistry) {
return new MongoCollectionImpl(wrapped.withCodecRegistry(codecRegistry), observableAdapter);
}
@Override
public MongoCollection withReadPreference(final ReadPreference readPreference) {
return new MongoCollectionImpl(wrapped.withReadPreference(readPreference), observableAdapter);
}
@Override
public MongoCollection withWriteConcern(final WriteConcern writeConcern) {
return new MongoCollectionImpl(wrapped.withWriteConcern(writeConcern), observableAdapter);
}
@Override
public MongoCollection withReadConcern(final ReadConcern readConcern) {
return new MongoCollectionImpl(wrapped.withReadConcern(readConcern), observableAdapter);
}
@Override
public MongoCollection withObservableAdapter(final ObservableAdapter observableAdapter) {
return new MongoCollectionImpl(wrapped, observableAdapter);
}
@Override
public Observable count() {
return count(new BsonDocument(), new CountOptions());
}
@Override
public Observable count(final Bson filter) {
return count(filter, new CountOptions());
}
@Override
public Observable count(final Bson filter, final CountOptions options) {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.count(filter, options, callback);
}
}), observableAdapter);
}
@Override
public DistinctObservable distinct(final String fieldName, final Class resultClass) {
return distinct(fieldName, new BsonDocument(), resultClass);
}
@Override
public DistinctObservable distinct(final String fieldName, final Bson filter, final Class resultClass) {
return new DistinctObservableImpl(wrapped.distinct(fieldName, resultClass), observableAdapter).filter(filter);
}
@Override
public FindObservable find() {
return find(new BsonDocument(), getDocumentClass());
}
@Override
public FindObservable find(final Class clazz) {
return find(new BsonDocument(), clazz);
}
@Override
public FindObservable find(final Bson filter) {
return find(filter, getDocumentClass());
}
@Override
public FindObservable find(final Bson filter, final Class clazz) {
return new FindObservableImpl(wrapped.find(filter, clazz), observableAdapter);
}
@Override
public AggregateObservable aggregate(final List extends Bson> pipeline) {
return aggregate(pipeline, Document.class);
}
@Override
public AggregateObservable aggregate(final List extends Bson> pipeline, final Class clazz) {
return new AggregateObservableImpl(wrapped.aggregate(pipeline, clazz), observableAdapter);
}
@Override
public MapReduceObservable mapReduce(final String mapFunction, final String reduceFunction) {
return mapReduce(mapFunction, reduceFunction, Document.class);
}
@Override
public MapReduceObservable mapReduce(final String mapFunction, final String reduceFunction,
final Class clazz) {
return new MapReduceObservableImpl(wrapped.mapReduce(mapFunction, reduceFunction, clazz), observableAdapter);
}
@Override
public Observable bulkWrite(final List extends WriteModel extends TDocument>> requests) {
return bulkWrite(requests, new BulkWriteOptions());
}
@Override
public Observable bulkWrite(final List extends WriteModel extends TDocument>> requests,
final BulkWriteOptions options) {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.bulkWrite(requests, options, callback);
}
}), observableAdapter);
}
@Override
public Observable insertOne(final TDocument document) {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.insertOne(document, voidToSuccessCallback(callback));
}
}), observableAdapter);
}
@Override
public Observable insertOne(final TDocument document, final InsertOneOptions options) {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.insertOne(document, options, voidToSuccessCallback(callback));
}
}), observableAdapter);
}
@Override
public Observable insertMany(final List extends TDocument> documents) {
return insertMany(documents, new InsertManyOptions());
}
@Override
public Observable insertMany(final List extends TDocument> documents, final InsertManyOptions options) {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.insertMany(documents, options, voidToSuccessCallback(callback));
}
}), observableAdapter);
}
@Override
public Observable deleteOne(final Bson filter) {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.deleteOne(filter, callback);
}
}), observableAdapter);
}
@Override
public Observable deleteMany(final Bson filter) {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.deleteMany(filter, callback);
}
}), observableAdapter);
}
@Override
public Observable replaceOne(final Bson filter, final TDocument replacement) {
return replaceOne(filter, replacement, new UpdateOptions());
}
@Override
public Observable replaceOne(final Bson filter, final TDocument replacement, final UpdateOptions options) {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.replaceOne(filter, replacement, options, callback);
}
}), observableAdapter);
}
@Override
public Observable updateOne(final Bson filter, final Bson update) {
return updateOne(filter, update, new UpdateOptions());
}
@Override
public Observable updateOne(final Bson filter, final Bson update, final UpdateOptions options) {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.updateOne(filter, update, options, callback);
}
}), observableAdapter);
}
@Override
public Observable updateMany(final Bson filter, final Bson update) {
return updateMany(filter, update, new UpdateOptions());
}
@Override
public Observable updateMany(final Bson filter, final Bson update, final UpdateOptions options) {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.updateMany(filter, update, options, callback);
}
}), observableAdapter);
}
@Override
public Observable findOneAndDelete(final Bson filter) {
return findOneAndDelete(filter, new FindOneAndDeleteOptions());
}
@Override
public Observable findOneAndDelete(final Bson filter, final FindOneAndDeleteOptions options) {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.findOneAndDelete(filter, options, callback);
}
}), observableAdapter);
}
@Override
public Observable findOneAndReplace(final Bson filter, final TDocument replacement) {
return findOneAndReplace(filter, replacement, new FindOneAndReplaceOptions());
}
@Override
public Observable findOneAndReplace(final Bson filter, final TDocument replacement, final FindOneAndReplaceOptions options) {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.findOneAndReplace(filter, replacement, options, callback);
}
}), observableAdapter);
}
@Override
public Observable findOneAndUpdate(final Bson filter, final Bson update) {
return findOneAndUpdate(filter, update, new FindOneAndUpdateOptions());
}
@Override
public Observable findOneAndUpdate(final Bson filter, final Bson update, final FindOneAndUpdateOptions options) {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.findOneAndUpdate(filter, update, options, callback);
}
}), observableAdapter);
}
@Override
public Observable drop() {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.drop(voidToSuccessCallback(callback));
}
}), observableAdapter);
}
@Override
public Observable createIndex(final Bson key) {
return createIndex(key, new IndexOptions());
}
@Override
public Observable createIndex(final Bson key, final IndexOptions options) {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.createIndex(key, options, callback);
}
}), observableAdapter);
}
@Override
public Observable createIndexes(final List indexes) {
return RxObservables.create(Observables.observeAndFlatten(new Block>>() {
@Override
public void apply(final SingleResultCallback> callback) {
wrapped.createIndexes(indexes, callback);
}
}), observableAdapter);
}
@Override
public ListIndexesObservable listIndexes() {
return listIndexes(Document.class);
}
@Override
public ListIndexesObservable listIndexes(final Class clazz) {
return new ListIndexesObservableImpl(wrapped.listIndexes(clazz), observableAdapter);
}
@Override
public Observable dropIndex(final String indexName) {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.dropIndex(indexName, voidToSuccessCallback(callback));
}
}), observableAdapter);
}
@Override
public Observable dropIndex(final Bson keys) {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.dropIndex(keys, voidToSuccessCallback(callback));
}
}), observableAdapter);
}
@Override
public Observable dropIndexes() {
return dropIndex("*");
}
@Override
public Observable renameCollection(final MongoNamespace newCollectionNamespace) {
return renameCollection(newCollectionNamespace, new RenameCollectionOptions());
}
@Override
public Observable renameCollection(final MongoNamespace newCollectionNamespace, final RenameCollectionOptions options) {
return RxObservables.create(Observables.observe(new Block>() {
@Override
public void apply(final SingleResultCallback callback) {
wrapped.renameCollection(newCollectionNamespace, options, voidToSuccessCallback(callback));
}
}), observableAdapter);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy