Browse Source

New implementation for CSHARP-216 that avoids ambiguities between overloads.

pull/66/merge
rstam 14 years ago
parent
commit
efee416eb8
  1. 10
      Driver/Core/MongoDatabase.cs
  2. 1
      Driver/Driver.csproj
  3. 4
      DriverOnlineTests/Core/MongoDatabaseTests.cs
  4. 1
      DriverOnlineTests/DriverOnlineTests.csproj

10
Driver/Core/MongoDatabase.cs

@ -395,19 +395,19 @@ namespace MongoDB.Driver {
/// <summary>
/// Evaluates JavaScript code at the server.
/// </summary>
/// <param name="flags">Flags that control Eval options.</param>
/// <param name="code">The code to evaluate.</param>
/// <param name="args">Optional arguments (only used when the code is a function with parameters).</param>
/// <param name="nolock">Whether to run without taking a write lock.</param>
/// <returns>The result of evaluating the code.</returns>
public virtual BsonValue Eval(
EvalFlags flags,
BsonJavaScript code,
object[] args,
bool nolock
params object[] args
) {
var command = new CommandDocument {
{ "$eval", code },
{ "args", BsonArray.Create(args), args != null && args.Length > 0 },
{ "nolock", true, nolock }
{ "nolock", true, (flags & EvalFlags.NoLock) != 0 }
};
var result = RunCommand(command);
return result.Response["retval"];
@ -423,7 +423,7 @@ namespace MongoDB.Driver {
BsonJavaScript code,
params object[] args
) {
return Eval(code, args, false); // nolock = false
return Eval(EvalFlags.None, code, args);
}
/// <summary>

1
Driver/Driver.csproj

@ -99,6 +99,7 @@
<Compile Include="Core\CommandResults\SafeModeResult.cs" />
<Compile Include="Core\CommandResults\ValidateCollectionResult.cs" />
<Compile Include="Core\ConnectWaitFor.cs" />
<Compile Include="Core\EvalFlags.cs" />
<Compile Include="Core\Interfaces\IMongoCollectionOptions.cs" />
<Compile Include="Core\Interfaces\IMongoCommand.cs" />
<Compile Include="Core\Interfaces\IMongoFields.cs" />

4
DriverOnlineTests/Core/MongoDatabaseTests.cs

@ -79,7 +79,7 @@ namespace MongoDB.DriverOnlineTests {
[Test]
public void TestEvalNoArgsNoLock() {
var code = "function() { return 1; }";
var result = database.Eval(code, null, true);
var result = database.Eval(EvalFlags.NoLock, code);
Assert.AreEqual(1, result.ToInt32());
}
@ -93,7 +93,7 @@ namespace MongoDB.DriverOnlineTests {
[Test]
public void TestEvalWithArgsNoLock() {
var code = "function(x, y) { return x / y; }";
var result = database.Eval(code, new object[] { 6, 2 }, true);
var result = database.Eval(EvalFlags.NoLock, code, 6, 2);
Assert.AreEqual(3, result.ToInt32());
}

1
DriverOnlineTests/DriverOnlineTests.csproj

@ -99,6 +99,7 @@
<Compile Include="Jira\CSharp198Tests.cs" />
<Compile Include="Jira\CSharp199Tests.cs" />
<Compile Include="Jira\CSharp215Tests.cs" />
<Compile Include="Jira\CSharp216Tests.cs" />
<Compile Include="Jira\CSharp218Tests.cs" />
<Compile Include="Jira\CSharp230Tests.cs" />
<Compile Include="Jira\CSharp231Tests.cs" />

Loading…
Cancel
Save