Skip to content

Commit

Permalink
Use Enumerable.Contains() instead of ImmutableArray.Contains() and ad…
Browse files Browse the repository at this point in the history
…d missing cancellation tokens
  • Loading branch information
kevinchalet committed Oct 7, 2019
1 parent 51ea4c4 commit 8fdabc7
Show file tree
Hide file tree
Showing 12 changed files with 45 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ public OpenIddictApplicationStore(
/// whose result returns the number of applications in the database.
/// </returns>
public virtual Task<long> CountAsync(CancellationToken cancellationToken)
=> Applications.LongCountAsync();
=> Applications.LongCountAsync(cancellationToken);

/// <summary>
/// Determines the number of applications that match the specified query.
Expand All @@ -126,7 +126,7 @@ public virtual Task<long> CountAsync<TResult>([NotNull] Func<IQueryable<TApplica
throw new ArgumentNullException(nameof(query));
}

return query(Applications).LongCountAsync();
return query(Applications).LongCountAsync(cancellationToken);
}

/// <summary>
Expand Down Expand Up @@ -249,7 +249,7 @@ public virtual Task<TApplication> FindByIdAsync([NotNull] string identifier, Can

return (from application in Applications
where application.Id.Equals(key)
select application).FirstOrDefaultAsync();
select application).FirstOrDefaultAsync(cancellationToken);
}

/// <summary>
Expand All @@ -270,7 +270,7 @@ public virtual Task<TApplication> FindByClientIdAsync([NotNull] string identifie

return (from application in Applications
where application.ClientId == identifier
select application).FirstOrDefaultAsync();
select application).FirstOrDefaultAsync(cancellationToken);
}

/// <summary>
Expand Down Expand Up @@ -539,7 +539,7 @@ public virtual ValueTask<ImmutableArray<string>> GetPermissionsAsync([NotNull] T
.SetSlidingExpiration(TimeSpan.FromMinutes(1));

return JArray.Parse(application.Permissions)
.Select(element => (string) element)
.Select(permission => (string) permission)
.ToImmutableArray();
});

Expand Down Expand Up @@ -576,7 +576,7 @@ public virtual ValueTask<ImmutableArray<string>> GetPostLogoutRedirectUrisAsync(
.SetSlidingExpiration(TimeSpan.FromMinutes(1));

return JArray.Parse(application.PostLogoutRedirectUris)
.Select(element => (string) element)
.Select(address => (string) address)
.ToImmutableArray();
});

Expand Down Expand Up @@ -648,7 +648,7 @@ public virtual ValueTask<ImmutableArray<string>> GetRedirectUrisAsync([NotNull]
.SetSlidingExpiration(TimeSpan.FromMinutes(1));

return JArray.Parse(application.RedirectUris)
.Select(element => (string) element)
.Select(address => (string) address)
.ToImmutableArray();
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ public OpenIddictAuthorizationStore(
/// whose result returns the number of authorizations in the database.
/// </returns>
public virtual Task<long> CountAsync(CancellationToken cancellationToken)
=> Authorizations.LongCountAsync();
=> Authorizations.LongCountAsync(cancellationToken);

/// <summary>
/// Determines the number of authorizations that match the specified query.
Expand All @@ -126,7 +126,7 @@ public virtual Task<long> CountAsync<TResult>([NotNull] Func<IQueryable<TAuthori
throw new ArgumentNullException(nameof(query));
}

return query(Authorizations).LongCountAsync();
return query(Authorizations).LongCountAsync(cancellationToken);
}

/// <summary>
Expand Down Expand Up @@ -594,7 +594,7 @@ public virtual ValueTask<ImmutableArray<string>> GetScopesAsync([NotNull] TAutho
.SetSlidingExpiration(TimeSpan.FromMinutes(1));

return JArray.Parse(authorization.Scopes)
.Select(element => (string) element)
.Select(scope => (string) scope)
.ToImmutableArray();
});

Expand Down
10 changes: 6 additions & 4 deletions src/OpenIddict.EntityFramework/Stores/OpenIddictScopeStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ public OpenIddictScopeStore(
/// whose result returns the number of scopes in the database.
/// </returns>
public virtual Task<long> CountAsync(CancellationToken cancellationToken)
=> Scopes.LongCountAsync();
=> Scopes.LongCountAsync(cancellationToken);

/// <summary>
/// Determines the number of scopes that match the specified query.
Expand All @@ -108,7 +108,7 @@ public virtual Task<long> CountAsync<TResult>([NotNull] Func<IQueryable<TScope>,
throw new ArgumentNullException(nameof(query));
}

return query(Scopes).LongCountAsync();
return query(Scopes).LongCountAsync(cancellationToken);
}

/// <summary>
Expand Down Expand Up @@ -223,9 +223,11 @@ public virtual async Task<ImmutableArray<TScope>> FindByNamesAsync(
throw new ArgumentException("Scope names cannot be null or empty.", nameof(names));
}

// Note: Enumerable.Contains() is deliberately used without the extension method syntax to ensure
// ImmutableArray.Contains() (which is not fully supported by Entity Framework 6.x) is not used instead.
return ImmutableArray.CreateRange(
await (from scope in Scopes
where names.Contains(scope.Name)
where Enumerable.Contains(names, scope.Name)
select scope).ToListAsync(cancellationToken));
}

Expand Down Expand Up @@ -434,7 +436,7 @@ public virtual ValueTask<ImmutableArray<string>> GetResourcesAsync([NotNull] TSc
.SetSlidingExpiration(TimeSpan.FromMinutes(1));

return JArray.Parse(scope.Resources)
.Select(element => (string) element)
.Select(resource => (string) resource)
.ToImmutableArray();
});

Expand Down
4 changes: 2 additions & 2 deletions src/OpenIddict.EntityFramework/Stores/OpenIddictTokenStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ public OpenIddictTokenStore(
/// whose result returns the number of applications in the database.
/// </returns>
public virtual Task<long> CountAsync(CancellationToken cancellationToken)
=> Tokens.LongCountAsync();
=> Tokens.LongCountAsync(cancellationToken);

/// <summary>
/// Determines the number of tokens that match the specified query.
Expand All @@ -126,7 +126,7 @@ public virtual Task<long> CountAsync<TResult>([NotNull] Func<IQueryable<TToken>,
throw new ArgumentNullException(nameof(query));
}

return query(Tokens).LongCountAsync();
return query(Tokens).LongCountAsync(cancellationToken);
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ public OpenIddictApplicationStore(
/// whose result returns the number of applications in the database.
/// </returns>
public virtual Task<long> CountAsync(CancellationToken cancellationToken)
=> Applications.LongCountAsync();
=> Applications.LongCountAsync(cancellationToken);

/// <summary>
/// Determines the number of applications that match the specified query.
Expand All @@ -147,7 +147,7 @@ public virtual Task<long> CountAsync<TResult>([NotNull] Func<IQueryable<TApplica
throw new ArgumentNullException(nameof(query));
}

return query(Applications).LongCountAsync();
return query(Applications).LongCountAsync(cancellationToken);
}

/// <summary>
Expand Down Expand Up @@ -582,7 +582,7 @@ public virtual ValueTask<ImmutableArray<string>> GetPermissionsAsync([NotNull] T
.SetSlidingExpiration(TimeSpan.FromMinutes(1));

return JArray.Parse(application.Permissions)
.Select(element => (string) element)
.Select(permission => (string) permission)
.ToImmutableArray();
});

Expand Down Expand Up @@ -619,7 +619,7 @@ public virtual ValueTask<ImmutableArray<string>> GetPostLogoutRedirectUrisAsync(
.SetSlidingExpiration(TimeSpan.FromMinutes(1));

return JArray.Parse(application.PostLogoutRedirectUris)
.Select(element => (string) element)
.Select(address => (string) address)
.ToImmutableArray();
});

Expand Down Expand Up @@ -691,7 +691,7 @@ public virtual ValueTask<ImmutableArray<string>> GetRedirectUrisAsync([NotNull]
.SetSlidingExpiration(TimeSpan.FromMinutes(1));

return JArray.Parse(application.RedirectUris)
.Select(element => (string) element)
.Select(address => (string) address)
.ToImmutableArray();
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ public OpenIddictAuthorizationStore(
/// whose result returns the number of authorizations in the database.
/// </returns>
public virtual Task<long> CountAsync(CancellationToken cancellationToken)
=> Authorizations.LongCountAsync();
=> Authorizations.LongCountAsync(cancellationToken);

/// <summary>
/// Determines the number of authorizations that match the specified query.
Expand All @@ -147,7 +147,7 @@ public virtual Task<long> CountAsync<TResult>([NotNull] Func<IQueryable<TAuthori
throw new ArgumentNullException(nameof(query));
}

return query(Authorizations).LongCountAsync();
return query(Authorizations).LongCountAsync(cancellationToken);
}

/// <summary>
Expand Down Expand Up @@ -652,7 +652,7 @@ public virtual ValueTask<ImmutableArray<string>> GetScopesAsync([NotNull] TAutho
.SetSlidingExpiration(TimeSpan.FromMinutes(1));

return JArray.Parse(authorization.Scopes)
.Select(element => (string) element)
.Select(scope => (string) scope)
.ToImmutableArray();
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ public OpenIddictScopeStore(
/// whose result returns the number of scopes in the database.
/// </returns>
public virtual Task<long> CountAsync(CancellationToken cancellationToken)
=> Scopes.LongCountAsync();
=> Scopes.LongCountAsync(cancellationToken);

/// <summary>
/// Determines the number of scopes that match the specified query.
Expand All @@ -125,7 +125,7 @@ public virtual Task<long> CountAsync<TResult>([NotNull] Func<IQueryable<TScope>,
throw new ArgumentNullException(nameof(query));
}

return query(Scopes).LongCountAsync();
return query(Scopes).LongCountAsync(cancellationToken);
}

/// <summary>
Expand Down Expand Up @@ -240,9 +240,12 @@ public virtual async Task<ImmutableArray<TScope>> FindByNamesAsync(
throw new ArgumentException("Scope names cannot be null or empty.", nameof(names));
}

// Note: Enumerable.Contains() is deliberately used without the extension method syntax to ensure
// ImmutableArray.Contains() (which is not fully supported by Entity Framework Core) is not used instead.
return ImmutableArray.CreateRange(
await (from scope in Scopes.AsTracking()
where names.Contains(scope.Name)
where Enumerable.Contains(names, scope.Name)
select scope).ToListAsync(cancellationToken));
}

Expand Down Expand Up @@ -451,7 +454,7 @@ public virtual ValueTask<ImmutableArray<string>> GetResourcesAsync([NotNull] TSc
.SetSlidingExpiration(TimeSpan.FromMinutes(1));

return JArray.Parse(scope.Resources)
.Select(element => (string) element)
.Select(resource => (string) resource)
.ToImmutableArray();
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ public OpenIddictTokenStore(
/// whose result returns the number of applications in the database.
/// </returns>
public virtual Task<long> CountAsync(CancellationToken cancellationToken)
=> Tokens.LongCountAsync();
=> Tokens.LongCountAsync(cancellationToken);

/// <summary>
/// Determines the number of tokens that match the specified query.
Expand All @@ -147,7 +147,7 @@ public virtual Task<long> CountAsync<TResult>([NotNull] Func<IQueryable<TToken>,
throw new ArgumentNullException(nameof(query));
}

return query(Tokens).LongCountAsync();
return query(Tokens).LongCountAsync(cancellationToken);
}

/// <summary>
Expand Down
4 changes: 2 additions & 2 deletions src/OpenIddict.MongoDb/Stores/OpenIddictApplicationStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public virtual async Task<long> CountAsync(CancellationToken cancellationToken)
var database = await Context.GetDatabaseAsync(cancellationToken);
var collection = database.GetCollection<TApplication>(Options.CurrentValue.ApplicationsCollectionName);

return await collection.CountDocumentsAsync(FilterDefinition<TApplication>.Empty);
return await collection.CountDocumentsAsync(FilterDefinition<TApplication>.Empty, null, cancellationToken);
}

/// <summary>
Expand All @@ -85,7 +85,7 @@ public virtual async Task<long> CountAsync<TResult>(
var database = await Context.GetDatabaseAsync(cancellationToken);
var collection = database.GetCollection<TApplication>(Options.CurrentValue.ApplicationsCollectionName);

return await ((IMongoQueryable<TApplication>) query(collection.AsQueryable())).LongCountAsync();
return await ((IMongoQueryable<TApplication>) query(collection.AsQueryable())).LongCountAsync(cancellationToken);
}

/// <summary>
Expand Down
4 changes: 2 additions & 2 deletions src/OpenIddict.MongoDb/Stores/OpenIddictAuthorizationStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public virtual async Task<long> CountAsync(CancellationToken cancellationToken)
var database = await Context.GetDatabaseAsync(cancellationToken);
var collection = database.GetCollection<TAuthorization>(Options.CurrentValue.AuthorizationsCollectionName);

return await collection.CountDocumentsAsync(FilterDefinition<TAuthorization>.Empty);
return await collection.CountDocumentsAsync(FilterDefinition<TAuthorization>.Empty, null, cancellationToken);
}

/// <summary>
Expand All @@ -85,7 +85,7 @@ public virtual async Task<long> CountAsync<TResult>(
var database = await Context.GetDatabaseAsync(cancellationToken);
var collection = database.GetCollection<TAuthorization>(Options.CurrentValue.AuthorizationsCollectionName);

return await ((IMongoQueryable<TAuthorization>) query(collection.AsQueryable())).LongCountAsync();
return await ((IMongoQueryable<TAuthorization>) query(collection.AsQueryable())).LongCountAsync(cancellationToken);
}

/// <summary>
Expand Down
8 changes: 5 additions & 3 deletions src/OpenIddict.MongoDb/Stores/OpenIddictScopeStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public virtual async Task<long> CountAsync(CancellationToken cancellationToken)
var database = await Context.GetDatabaseAsync(cancellationToken);
var collection = database.GetCollection<TScope>(Options.CurrentValue.ScopesCollectionName);

return await collection.CountDocumentsAsync(FilterDefinition<TScope>.Empty);
return await collection.CountDocumentsAsync(FilterDefinition<TScope>.Empty, null, cancellationToken);
}

/// <summary>
Expand All @@ -85,7 +85,7 @@ public virtual async Task<long> CountAsync<TResult>(
var database = await Context.GetDatabaseAsync(cancellationToken);
var collection = database.GetCollection<TScope>(Options.CurrentValue.ScopesCollectionName);

return await ((IMongoQueryable<TScope>) query(collection.AsQueryable())).LongCountAsync();
return await ((IMongoQueryable<TScope>) query(collection.AsQueryable())).LongCountAsync(cancellationToken);
}

/// <summary>
Expand Down Expand Up @@ -202,7 +202,9 @@ public virtual async Task<ImmutableArray<TScope>> FindByNamesAsync(
var database = await Context.GetDatabaseAsync(cancellationToken);
var collection = database.GetCollection<TScope>(Options.CurrentValue.ScopesCollectionName);

return ImmutableArray.CreateRange(await collection.Find(scope => names.Contains(scope.Name)).ToListAsync(cancellationToken));
// Note: Enumerable.Contains() is deliberately used without the extension method syntax to ensure
// ImmutableArray.Contains() (which is not fully supported by MongoDB) is not used instead.
return ImmutableArray.CreateRange(await collection.Find(scope => Enumerable.Contains(names, scope.Name)).ToListAsync(cancellationToken));
}

/// <summary>
Expand Down
4 changes: 2 additions & 2 deletions src/OpenIddict.MongoDb/Stores/OpenIddictTokenStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public virtual async Task<long> CountAsync(CancellationToken cancellationToken)
var database = await Context.GetDatabaseAsync(cancellationToken);
var collection = database.GetCollection<TToken>(Options.CurrentValue.TokensCollectionName);

return await collection.CountDocumentsAsync(FilterDefinition<TToken>.Empty);
return await collection.CountDocumentsAsync(FilterDefinition<TToken>.Empty, null, cancellationToken);
}

/// <summary>
Expand All @@ -85,7 +85,7 @@ public virtual async Task<long> CountAsync<TResult>(
var database = await Context.GetDatabaseAsync(cancellationToken);
var collection = database.GetCollection<TToken>(Options.CurrentValue.TokensCollectionName);

return await ((IMongoQueryable<TToken>) query(collection.AsQueryable())).LongCountAsync();
return await ((IMongoQueryable<TToken>) query(collection.AsQueryable())).LongCountAsync(cancellationToken);
}

/// <summary>
Expand Down

0 comments on commit 8fdabc7

Please sign in to comment.