Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CSHARP-4894: Mark API that will be removed in 3.0 as obsolete: MongoDB.Driver.Core #1251

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,12 @@ public void Setup()
encryptedValuesDocument.Add(new BsonElement($"key{(i + 1):D4}", encryptedString));
}
}
_encryptedValuesDocumentBytes = encryptedValuesDocument.ToBson();

// Create libmongocrypt binding that will be used for decryption
_cryptClient = CryptClientCreator.CreateCryptClient(autoEncryptionOptions.ToCryptClientSettings());
_encryptedValuesDocumentBytes = encryptedValuesDocument.ToBson();

// Create libmongocrypt binding that will be used for decryption
#pragma warning disable CS0618 // Type or member is obsolete
_cryptClient = CryptClientCreator.CreateCryptClient(autoEncryptionOptions.ToCryptClientSettings());
#pragma warning restore CS0618 // Type or member is obsolete
_libMongoCryptController = AutoEncryptionLibMongoCryptController.Create(_disposableKeyVaultClient, _cryptClient, autoEncryptionOptions);
}

Expand Down
229 changes: 115 additions & 114 deletions src/MongoDB.Driver.Core/BatchTransformingAsyncCursor.cs
Original file line number Diff line number Diff line change
@@ -1,114 +1,115 @@
/* Copyright 2010-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.
*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using MongoDB.Driver.Core.Misc;

namespace MongoDB.Driver
{
/// <summary>
/// Represents a cursor that wraps another cursor with a transformation function on the documents.
/// </summary>
/// <typeparam name="TFromDocument">The type of from document.</typeparam>
/// <typeparam name="TToDocument">The type of to document.</typeparam>
/// <seealso cref="MongoDB.Driver.IAsyncCursor{TToDocument}" />
public sealed class BatchTransformingAsyncCursor<TFromDocument, TToDocument> : IAsyncCursor<TToDocument>
{
private bool _disposed;
private readonly Func<IEnumerable<TFromDocument>, IEnumerable<TToDocument>> _transformer;
private readonly IAsyncCursor<TFromDocument> _wrapped;
private List<TToDocument> _current;

/// <summary>
/// Initializes a new instance of the <see cref="BatchTransformingAsyncCursor{TFromDocument, TToDocument}"/> class.
/// </summary>
/// <param name="wrapped">The wrapped.</param>
/// <param name="transformer">The transformer.</param>
public BatchTransformingAsyncCursor(IAsyncCursor<TFromDocument> wrapped, Func<IEnumerable<TFromDocument>, IEnumerable<TToDocument>> transformer)
{
_wrapped = Ensure.IsNotNull(wrapped, nameof(wrapped));
_transformer = Ensure.IsNotNull(transformer, nameof(transformer));
}

/// <inheritdoc/>
public IEnumerable<TToDocument> Current
{
get
{
ThrowIfDisposed();
if (_current == null)
{
throw new InvalidOperationException("Must call MoveNextAsync first.");
}

return _current;
}
}

// methods
/// <inheritdoc/>
public bool MoveNext(CancellationToken cancellationToken)
{
ThrowIfDisposed();
while (_wrapped.MoveNext(cancellationToken))
{
_current = _transformer(_wrapped.Current).ToList();
if (_current.Count > 0)
{
return true;
}
}

return false;
}

/// <inheritdoc/>
public async Task<bool> MoveNextAsync(CancellationToken cancellationToken)
{
ThrowIfDisposed();
while (await _wrapped.MoveNextAsync(cancellationToken).ConfigureAwait(false))
{
_current = _transformer(_wrapped.Current).ToList();
if (_current.Count > 0)
{
return true;
}
}

return false;
}

/// <inheritdoc/>
public void Dispose()
{
_disposed = true;
_current = null;
_wrapped.Dispose();
}

private void ThrowIfDisposed()
{
if (_disposed)
{
throw new ObjectDisposedException(GetType().Name);
}
}
}
}
/* Copyright 2010-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.
*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using MongoDB.Driver.Core.Misc;

namespace MongoDB.Driver
{
/// <summary>
/// Represents a cursor that wraps another cursor with a transformation function on the documents.
/// </summary>
/// <typeparam name="TFromDocument">The type of from document.</typeparam>
/// <typeparam name="TToDocument">The type of to document.</typeparam>
/// <seealso cref="MongoDB.Driver.IAsyncCursor{TToDocument}" />
[Obsolete("This class will be removed in later release.")]
public sealed class BatchTransformingAsyncCursor<TFromDocument, TToDocument> : IAsyncCursor<TToDocument>
{
private bool _disposed;
private readonly Func<IEnumerable<TFromDocument>, IEnumerable<TToDocument>> _transformer;
private readonly IAsyncCursor<TFromDocument> _wrapped;
private List<TToDocument> _current;

/// <summary>
/// Initializes a new instance of the <see cref="BatchTransformingAsyncCursor{TFromDocument, TToDocument}"/> class.
/// </summary>
/// <param name="wrapped">The wrapped.</param>
/// <param name="transformer">The transformer.</param>
public BatchTransformingAsyncCursor(IAsyncCursor<TFromDocument> wrapped, Func<IEnumerable<TFromDocument>, IEnumerable<TToDocument>> transformer)
{
_wrapped = Ensure.IsNotNull(wrapped, nameof(wrapped));
_transformer = Ensure.IsNotNull(transformer, nameof(transformer));
}

/// <inheritdoc/>
public IEnumerable<TToDocument> Current
{
get
{
ThrowIfDisposed();
if (_current == null)
{
throw new InvalidOperationException("Must call MoveNextAsync first.");
}

return _current;
}
}

// methods
/// <inheritdoc/>
public bool MoveNext(CancellationToken cancellationToken)
{
ThrowIfDisposed();
while (_wrapped.MoveNext(cancellationToken))
{
_current = _transformer(_wrapped.Current).ToList();
if (_current.Count > 0)
{
return true;
}
}

return false;
}

/// <inheritdoc/>
public async Task<bool> MoveNextAsync(CancellationToken cancellationToken)
{
ThrowIfDisposed();
while (await _wrapped.MoveNextAsync(cancellationToken).ConfigureAwait(false))
{
_current = _transformer(_wrapped.Current).ToList();
if (_current.Count > 0)
{
return true;
}
}

return false;
}

/// <inheritdoc/>
public void Dispose()
{
_disposed = true;
_current = null;
_wrapped.Dispose();
}

private void ThrowIfDisposed()
{
if (_disposed)
{
throw new ObjectDisposedException(GetType().Name);
}
}
}
}