Skip to content

Commit

Permalink
added immutable IMongoConfiguration since when it gets built, it shou…
Browse files Browse the repository at this point in the history
…ld never change.
  • Loading branch information
craiggwilson committed May 9, 2010
1 parent 262f39c commit bdc8135
Show file tree
Hide file tree
Showing 14 changed files with 89 additions and 40 deletions.
Expand Up @@ -24,7 +24,7 @@ protected override IMappingStore MappingStore
mapping.Map<ClassD>();
});

return configure.BuildMappingStore();
return configure.BuildConfiguration().MappingStore;
}
}

Expand Down
2 changes: 1 addition & 1 deletion source/MongoDB/CollectionMetadata.cs
Expand Up @@ -25,7 +25,7 @@ public class CollectionMetadata
/// <param name = "databaseName">Name of the database.</param>
/// <param name = "name">The name.</param>
/// <param name = "connection">The connection.</param>
public CollectionMetadata(MongoConfiguration configuration, string databaseName, string name, Connection connection)
public CollectionMetadata(IMongoConfiguration configuration, string databaseName, string name, Connection connection)
{
_fullName = databaseName + "." + name;
_name = name;
Expand Down
31 changes: 31 additions & 0 deletions source/MongoDB/Configuration/IMongoConfiguration.cs
@@ -0,0 +1,31 @@
using System;
using MongoDB.Configuration.Mapping;
namespace MongoDB.Configuration
{
public interface IMongoConfiguration
{
/// <summary>
/// Gets the connection string.
/// </summary>
/// <value>The connection string.</value>
string ConnectionString { get; }

/// <summary>
/// Gets the mapping store.
/// </summary>
/// <value>The mapping store.</value>
IMappingStore MappingStore { get; }

/// <summary>
/// Gets a value indicating whether [read local time].
/// </summary>
/// <value><c>true</c> if [read local time]; otherwise, <c>false</c>.</value>
bool ReadLocalTime { get; }

/// <summary>
/// Gets the serialization factory.
/// </summary>
/// <value>The serialization factory.</value>
MongoDB.Serialization.ISerializationFactory SerializationFactory { get; }
}
}
20 changes: 20 additions & 0 deletions source/MongoDB/Configuration/IMongoConfigurationExtensions.cs
@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MongoDB.Configuration
{
public static class IMongoConfigurationExtensions
{
public static void Validate(this IMongoConfiguration configuration)
{
if (configuration.ConnectionString == null)
throw new MongoConfigurationException("ConnectionString can not be null");
if (configuration.MappingStore == null)
throw new MongoConfigurationException("MappingStore can not be null");
if (configuration.SerializationFactory == null)
throw new MongoConfigurationException("SerializationFactory can not be null");
}
}
}
14 changes: 1 addition & 13 deletions source/MongoDB/Configuration/MongoConfiguration.cs
Expand Up @@ -6,7 +6,7 @@ namespace MongoDB.Configuration
/// <summary>
///
/// </summary>
public class MongoConfiguration
public class MongoConfiguration : IMongoConfiguration
{
/// <summary>
/// MongoDB-CSharp default configuration.
Expand Down Expand Up @@ -50,17 +50,5 @@ public class MongoConfiguration
/// time is converted from UTC to local timezone after is was read.
/// </remarks>
public bool ReadLocalTime { get; set; }

/// <summary>
/// Validates this instance.
/// </summary>
public void Validate(){
if(ConnectionString == null)
throw new MongoException("ConnectionString can not be null");
if(MappingStore == null)
throw new MongoException("MappingStore can not be null");
if(SerializationFactory == null)
throw new MongoException("SerializationFactory can not be null");
}
}
}
13 changes: 1 addition & 12 deletions source/MongoDB/Configuration/MongoConfigurationBuilder.cs
Expand Up @@ -18,7 +18,7 @@ public class MongoConfigurationBuilder
/// Builds the configuration.
/// </summary>
/// <returns></returns>
public MongoConfiguration BuildConfiguration()
public IMongoConfiguration BuildConfiguration()
{
if (_mappingStoreBuilder == null)
return new MongoConfiguration {
Expand All @@ -31,17 +31,6 @@ public MongoConfiguration BuildConfiguration()
};
}

/// <summary>
/// Builds the mapping store.
/// </summary>
public IMappingStore BuildMappingStore()
{
if (_mappingStoreBuilder == null)
return new AutoMappingStore();

return _mappingStoreBuilder.BuildMappingStore();
}

/// <summary>
/// Sets the connection string.
/// </summary>
Expand Down
4 changes: 2 additions & 2 deletions source/MongoDB/DatabaseMetadata.cs
Expand Up @@ -9,7 +9,7 @@ namespace MongoDB
/// </summary>
public class DatabaseMetadata
{
private readonly MongoConfiguration _configuration;
private readonly IMongoConfiguration _configuration;
private readonly Connection _connection;
private readonly MongoDatabase _database;
private readonly string _name;
Expand All @@ -20,7 +20,7 @@ public class DatabaseMetadata
/// <param name = "configuration">The configuration.</param>
/// <param name = "name">The name.</param>
/// <param name = "conn">The conn.</param>
public DatabaseMetadata(MongoConfiguration configuration, string name, Connection conn)
public DatabaseMetadata(IMongoConfiguration configuration, string name, Connection conn)
{
_configuration = configuration;
_connection = conn;
Expand Down
18 changes: 18 additions & 0 deletions source/MongoDB/Exceptions/MongoConfigurationException.cs
@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MongoDB.Configuration
{
[Serializable]
public class MongoConfigurationException : MongoException
{
public MongoConfigurationException(string message) : base(message)
{ }

public MongoConfigurationException(string message, Exception inner)
: base(message, inner)
{ }
}
}
4 changes: 2 additions & 2 deletions source/MongoDB/Mongo.cs
Expand Up @@ -9,7 +9,7 @@ namespace MongoDB
/// </summary>
public class Mongo : IDisposable, IMongo
{
private readonly MongoConfiguration _configuration;
private readonly IMongoConfiguration _configuration;
private readonly Connection _connection;

/// <summary>
Expand All @@ -31,7 +31,7 @@ public Mongo(string connectionString)
/// Initializes a new instance of the <see cref = "Mongo" /> class.
/// </summary>
/// <param name = "configuration">The mongo configuration.</param>
public Mongo(MongoConfiguration configuration){
public Mongo(IMongoConfiguration configuration){
if(configuration == null)
throw new ArgumentNullException("configuration");

Expand Down
4 changes: 2 additions & 2 deletions source/MongoDB/MongoCollection_1.cs
Expand Up @@ -15,7 +15,7 @@ namespace MongoDB
/// </summary>
public class MongoCollection<T> : IMongoCollection<T> where T : class
{
private readonly MongoConfiguration _configuration;
private readonly IMongoConfiguration _configuration;
private readonly Connection _connection;
private MongoDatabase _database;
private CollectionMetadata _metaData;
Expand All @@ -27,7 +27,7 @@ public class MongoCollection<T> : IMongoCollection<T> where T : class
/// <param name="connection">The connection.</param>
/// <param name="databaseName">Name of the database.</param>
/// <param name="name">The name.</param>
public MongoCollection(MongoConfiguration configuration, Connection connection, string databaseName, string name)
public MongoCollection(IMongoConfiguration configuration, Connection connection, string databaseName, string name)
{
//Todo: This should be internal
Name = name;
Expand Down
3 changes: 3 additions & 0 deletions source/MongoDB/MongoDB.csproj
Expand Up @@ -112,6 +112,8 @@
<Compile Include="Bson\IBsonObjectDescriptor.cs" />
<Compile Include="Configuration\CollectionAdapters\ArrayCollectionAdapter.cs" />
<Compile Include="Configuration\Builders\MappingStoreBuilder.cs" />
<Compile Include="Configuration\IMongoConfiguration.cs" />
<Compile Include="Configuration\IMongoConfigurationExtensions.cs" />
<Compile Include="Configuration\MongoConfigurationBuilder.cs" />
<Compile Include="Configuration\Builders\AutoMappingProfileBuilder.cs" />
<Compile Include="Configuration\Builders\ClassOverridesBuilder.cs" />
Expand All @@ -120,6 +122,7 @@
<Compile Include="Configuration\Mapping\Auto\OverridableAutoMappingProfile.cs" />
<Compile Include="Configuration\Mapping\Conventions\MemberFinderBase.cs" />
<Compile Include="Configuration\MongoConfiguration.cs" />
<Compile Include="Exceptions\MongoConfigurationException.cs" />
<Compile Include="IMongoDatabase.cs" />
<Compile Include="Linq\ExecutionBuilder.cs" />
<Compile Include="Linq\Expressions\Alias.cs" />
Expand Down
8 changes: 4 additions & 4 deletions source/MongoDB/MongoDatabase.cs
Expand Up @@ -11,7 +11,7 @@ namespace MongoDB
/// </summary>
public class MongoDatabase : IMongoDatabase
{
private readonly MongoConfiguration _configuration;
private readonly IMongoConfiguration _configuration;
private readonly Connection _connection;
private DatabaseJavascript _javascript;
private DatabaseMetadata _metadata;
Expand All @@ -21,15 +21,15 @@ public class MongoDatabase : IMongoDatabase
/// </summary>
/// <param name="connectionString">The connection string.</param>
public MongoDatabase(string connectionString)
: this(new MongoConfiguration {ConnectionString = connectionString})
: this(new MongoConfiguration { ConnectionString = connectionString })
{
}

/// <summary>
/// Initializes a new instance of the <see cref="MongoDatabase"/> class.
/// </summary>
/// <param name="configuration">The configuration.</param>
public MongoDatabase(MongoConfiguration configuration)
public MongoDatabase(IMongoConfiguration configuration)
: this(configuration,
ConnectionFactory.GetConnection(configuration.ConnectionString),
new MongoConnectionStringBuilder(configuration.ConnectionString).Database)
Expand All @@ -42,7 +42,7 @@ public MongoDatabase(MongoConfiguration configuration)
/// <param name="configuration">The configuration.</param>
/// <param name="connection">The conn.</param>
/// <param name="name">The name.</param>
public MongoDatabase(MongoConfiguration configuration, Connection connection, string name)
public MongoDatabase(IMongoConfiguration configuration, Connection connection, string name)
{
if(configuration == null)
throw new ArgumentNullException("configuration");
Expand Down
2 changes: 1 addition & 1 deletion source/MongoDB/Obsolete/MongoCollection.cs
Expand Up @@ -59,7 +59,7 @@ public class MongoCollection : IMongoCollection
/// <param name="connection">The connection.</param>
/// <param name="databaseName">Name of the database.</param>
/// <param name="name">The name.</param>
public MongoCollection(MongoConfiguration configuration, Connection connection, string databaseName, string name)
public MongoCollection(IMongoConfiguration configuration, Connection connection, string databaseName, string name)
{
_collection = new MongoCollection<Document>(configuration, connection, databaseName, name);
}
Expand Down
4 changes: 2 additions & 2 deletions source/MongoDB/Serialization/SerializationFactory.cs
Expand Up @@ -9,7 +9,7 @@ namespace MongoDB.Serialization
/// </summary>
public class SerializationFactory : ISerializationFactory
{
private readonly MongoConfiguration _configuration;
private readonly IMongoConfiguration _configuration;

/// <summary>
/// Initializes a new instance of the <see cref="SerializationFactory"/> class.
Expand All @@ -22,7 +22,7 @@ public SerializationFactory()
/// Initializes a new instance of the <see cref="SerializationFactory"/> class.
/// </summary>
/// <param name="configuration">The mongo configuration.</param>
public SerializationFactory(MongoConfiguration configuration)
public SerializationFactory(IMongoConfiguration configuration)
{
_configuration = configuration;
if(configuration == null)
Expand Down

0 comments on commit bdc8135

Please sign in to comment.