diff --git a/driver-core/src/test/functional/com/mongodb/ClusterFixture.java b/driver-core/src/test/functional/com/mongodb/ClusterFixture.java index 1a5bead6207..80c09a5cf01 100644 --- a/driver-core/src/test/functional/com/mongodb/ClusterFixture.java +++ b/driver-core/src/test/functional/com/mongodb/ClusterFixture.java @@ -36,12 +36,10 @@ import com.mongodb.internal.async.SingleResultCallback; import com.mongodb.internal.binding.AsyncClusterBinding; import com.mongodb.internal.binding.AsyncConnectionSource; -import com.mongodb.internal.binding.AsyncOperationContextBinding; import com.mongodb.internal.binding.AsyncReadBinding; import com.mongodb.internal.binding.AsyncReadWriteBinding; import com.mongodb.internal.binding.AsyncSingleConnectionBinding; import com.mongodb.internal.binding.ClusterBinding; -import com.mongodb.internal.binding.OperationContextBinding; import com.mongodb.internal.binding.ReadWriteBinding; import com.mongodb.internal.binding.ReferenceCounted; import com.mongodb.internal.binding.SimpleSessionContext; @@ -373,33 +371,18 @@ public static ReadWriteBinding getBinding(final Cluster cluster) { return new ClusterBinding(cluster, ReadPreference.primary()); } - public static ReadWriteBinding getBinding(final TimeoutSettings timeoutSettings) { - return getBinding(getCluster(), ReadPreference.primary(), createNewOperationContext(timeoutSettings)); - } - - public static ReadWriteBinding getBinding(final OperationContext operationContext) { - return getBinding(getCluster(), ReadPreference.primary(), operationContext); - } - public static ReadWriteBinding getBinding(final ReadPreference readPreference) { - return getBinding(getCluster(), readPreference, OPERATION_CONTEXT); - } - - public static OperationContext createNewOperationContext(final TimeoutSettings timeoutSettings) { - return OPERATION_CONTEXT.withTimeoutContext(new TimeoutContext(timeoutSettings)); + return getBinding(getCluster(), readPreference); } private static ReadWriteBinding getBinding(final Cluster cluster, - final ReadPreference readPreference, - final OperationContext operationContext) { + final ReadPreference readPreference) { if (!BINDING_MAP.containsKey(readPreference)) { ReadWriteBinding binding = new ClusterBinding(cluster, readPreference); BINDING_MAP.put(readPreference, binding); SESSION_CONTEXT_MAP.put(readPreference, new SimpleSessionContext()); } - ReadWriteBinding readWriteBinding = BINDING_MAP.get(readPreference); - return new OperationContextBinding(readWriteBinding, - operationContext.withSessionContext(SESSION_CONTEXT_MAP.get(readPreference))); + return BINDING_MAP.get(readPreference); } public static SingleConnectionBinding getSingleConnectionBinding() { @@ -419,33 +402,18 @@ public static AsyncReadWriteBinding getAsyncBinding(final Cluster cluster) { } public static AsyncReadWriteBinding getAsyncBinding() { - return getAsyncBinding(getAsyncCluster(), ReadPreference.primary(), OPERATION_CONTEXT); - } - - public static AsyncReadWriteBinding getAsyncBinding(final TimeoutSettings timeoutSettings) { - return getAsyncBinding(createNewOperationContext(timeoutSettings)); - } - - public static AsyncReadWriteBinding getAsyncBinding(final OperationContext operationContext) { - return getAsyncBinding(getAsyncCluster(), ReadPreference.primary(), operationContext); - } - - public static AsyncReadWriteBinding getAsyncBinding(final ReadPreference readPreference) { - return getAsyncBinding(getAsyncCluster(), readPreference, OPERATION_CONTEXT); + return getAsyncBinding(getAsyncCluster(), ReadPreference.primary()); } public static AsyncReadWriteBinding getAsyncBinding( final Cluster cluster, - final ReadPreference readPreference, - final OperationContext operationContext) { + final ReadPreference readPreference) { if (!ASYNC_BINDING_MAP.containsKey(readPreference)) { AsyncReadWriteBinding binding = new AsyncClusterBinding(cluster, readPreference); ASYNC_BINDING_MAP.put(readPreference, binding); ASYNC_SESSION_CONTEXT_MAP.put(readPreference, new SimpleSessionContext()); } - AsyncReadWriteBinding readWriteBinding = ASYNC_BINDING_MAP.get(readPreference); - return new AsyncOperationContextBinding(readWriteBinding, - operationContext.withSessionContext(ASYNC_SESSION_CONTEXT_MAP.get(readPreference))); + return ASYNC_BINDING_MAP.get(readPreference); } public static synchronized Cluster getCluster() { @@ -713,12 +681,12 @@ public static T executeSync(final ReadOperation op) { @SuppressWarnings("overloads") public static T executeSync(final ReadOperation op, final ReadWriteBinding binding) { - return op.execute(binding, OPERATION_CONTEXT); + return op.execute(binding, applySessionContext(OPERATION_CONTEXT, binding.getReadPreference())); } @SuppressWarnings("overloads") public static T executeSync(final ReadOperation op, final ReadWriteBinding binding, final OperationContext operationContext) { - return op.execute(binding, operationContext); + return op.execute(binding, applySessionContext(operationContext, binding.getReadPreference())); } @SuppressWarnings("overloads") diff --git a/driver-core/src/test/functional/com/mongodb/internal/binding/AsyncOperationContextBinding.java b/driver-core/src/test/functional/com/mongodb/internal/binding/AsyncOperationContextBinding.java deleted file mode 100644 index 0a891b55a88..00000000000 --- a/driver-core/src/test/functional/com/mongodb/internal/binding/AsyncOperationContextBinding.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright 2008-present 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.internal.binding; - -import com.mongodb.ReadPreference; -import com.mongodb.connection.ServerDescription; -import com.mongodb.internal.async.SingleResultCallback; -import com.mongodb.internal.connection.AsyncConnection; -import com.mongodb.internal.connection.OperationContext; - -import static org.bson.assertions.Assertions.notNull; - -public final class AsyncOperationContextBinding implements AsyncReadWriteBinding { - - private final AsyncReadWriteBinding wrapped; - private final OperationContext operationContext; - - public AsyncOperationContextBinding(final AsyncReadWriteBinding wrapped, final OperationContext operationContext) { - this.wrapped = notNull("wrapped", wrapped); - this.operationContext = notNull("operationContext", operationContext); - } - - @Override - public ReadPreference getReadPreference() { - return wrapped.getReadPreference(); - } - - @Override - public void getWriteConnectionSource(final OperationContext operationContext, - final SingleResultCallback callback) { - wrapped.getWriteConnectionSource(operationContext, (result, t) -> { - if (t != null) { - callback.onResult(null, t); - } else { - callback.onResult(new SessionBindingAsyncConnectionSource(result), null); - } - }); - } - - - @Override - public void getReadConnectionSource(final OperationContext operationContext, - final SingleResultCallback callback) { - wrapped.getReadConnectionSource(operationContext, (result, t) -> { - if (t != null) { - callback.onResult(null, t); - } else { - callback.onResult(new SessionBindingAsyncConnectionSource(result), null); - } - }); - } - - - @Override - public void getReadConnectionSource(final int minWireVersion, final ReadPreference fallbackReadPreference, - final OperationContext operationContext, - final SingleResultCallback callback) { - wrapped.getReadConnectionSource(minWireVersion, fallbackReadPreference, operationContext, (result, t) -> { - if (t != null) { - callback.onResult(null, t); - } else { - callback.onResult(new SessionBindingAsyncConnectionSource(result), null); - } - }); - } - - public OperationContext getOperationContext() { - return operationContext; - } - - @Override - public int getCount() { - return wrapped.getCount(); - } - - @Override - public AsyncReadWriteBinding retain() { - wrapped.retain(); - return this; - } - - @Override - public int release() { - return wrapped.release(); - } - - private class SessionBindingAsyncConnectionSource implements AsyncConnectionSource { - private final AsyncConnectionSource wrapped; - - SessionBindingAsyncConnectionSource(final AsyncConnectionSource wrapped) { - this.wrapped = wrapped; - } - - @Override - public ServerDescription getServerDescription() { - return wrapped.getServerDescription(); - } - - @Override - public ReadPreference getReadPreference() { - return wrapped.getReadPreference(); - } - - @Override - public void getConnection(final OperationContext operationContext, final SingleResultCallback callback) { - wrapped.getConnection(operationContext, callback); - } - - @Override - public int getCount() { - return wrapped.getCount(); - } - - @Override - public AsyncConnectionSource retain() { - wrapped.retain(); - return this; - } - - @Override - public int release() { - return wrapped.release(); - } - } - - public AsyncReadWriteBinding getWrapped() { - return wrapped; - } -} diff --git a/driver-core/src/test/functional/com/mongodb/internal/binding/OperationContextBinding.java b/driver-core/src/test/functional/com/mongodb/internal/binding/OperationContextBinding.java deleted file mode 100644 index 3428db4f82e..00000000000 --- a/driver-core/src/test/functional/com/mongodb/internal/binding/OperationContextBinding.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2008-present 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.internal.binding; - -import com.mongodb.ReadPreference; -import com.mongodb.connection.ServerDescription; -import com.mongodb.internal.connection.Connection; -import com.mongodb.internal.connection.OperationContext; - -import static org.bson.assertions.Assertions.notNull; - -public class OperationContextBinding implements ReadWriteBinding { - private final ReadWriteBinding wrapped; - private final OperationContext operationContext; - - public OperationContextBinding(final ReadWriteBinding wrapped, final OperationContext operationContext) { - this.wrapped = notNull("wrapped", wrapped); - this.operationContext = notNull("operationContext", operationContext); - } - - @Override - public ReadPreference getReadPreference() { - return wrapped.getReadPreference(); - } - - @Override - public int getCount() { - return wrapped.getCount(); - } - - @Override - public ReadWriteBinding retain() { - wrapped.retain(); - return this; - } - - @Override - public int release() { - return wrapped.release(); - } - - @Override - public ConnectionSource getReadConnectionSource(final OperationContext operationContext) { - return new SessionBindingConnectionSource(wrapped.getReadConnectionSource(operationContext)); - } - - @Override - public ConnectionSource getReadConnectionSource(final int minWireVersion, final ReadPreference fallbackReadPreference, final OperationContext operationContext) { - return new SessionBindingConnectionSource(wrapped.getReadConnectionSource(minWireVersion, fallbackReadPreference, operationContext)); - } - - public OperationContext getOperationContext() { - return operationContext; - } - - @Override - public ConnectionSource getWriteConnectionSource(final OperationContext operationContext) { - return new SessionBindingConnectionSource(wrapped.getWriteConnectionSource(operationContext)); - } - - private class SessionBindingConnectionSource implements ConnectionSource { - private ConnectionSource wrapped; - - SessionBindingConnectionSource(final ConnectionSource wrapped) { - this.wrapped = wrapped; - } - - @Override - public ServerDescription getServerDescription() { - return wrapped.getServerDescription(); - } - - @Override - public ReadPreference getReadPreference() { - return wrapped.getReadPreference(); - } - - @Override - public Connection getConnection(final OperationContext operationContext) { - return wrapped.getConnection(operationContext); - } - - @Override - public ConnectionSource retain() { - wrapped = wrapped.retain(); - return this; - } - - @Override - public int getCount() { - return wrapped.getCount(); - } - - @Override - public int release() { - return wrapped.release(); - } - } - - public ReadWriteBinding getWrapped() { - return wrapped; - } -} diff --git a/driver-core/src/test/functional/com/mongodb/internal/operation/FindOperationSpecification.groovy b/driver-core/src/test/functional/com/mongodb/internal/operation/FindOperationSpecification.groovy index 5eb707201d5..261e036621a 100644 --- a/driver-core/src/test/functional/com/mongodb/internal/operation/FindOperationSpecification.groovy +++ b/driver-core/src/test/functional/com/mongodb/internal/operation/FindOperationSpecification.groovy @@ -655,9 +655,9 @@ class FindOperationSpecification extends OperationFunctionalSpecification { when: def cursor; if (async) { - cursor = execute(operation, ClusterFixture.getAsyncBinding(operationContext), operationContext) + cursor = execute(operation, ClusterFixture.getAsyncBinding(), operationContext) } else { - cursor = execute(operation, ClusterFixture.getBinding(operationContext), operationContext) + cursor = execute(operation, getBinding(), operationContext) } then: