Skip to content
This repository has been archived by the owner on Dec 30, 2020. It is now read-only.

Commit

Permalink
finished integration of id configuration additions.
Browse files Browse the repository at this point in the history
  • Loading branch information
craiggwilson committed Jun 21, 2010
1 parent 28c9c8e commit 804c3fd
Show file tree
Hide file tree
Showing 5 changed files with 101 additions and 86 deletions.
149 changes: 75 additions & 74 deletions source/MongoDB/Configuration/Builders/ClassOverridesBuilder.cs
@@ -1,37 +1,37 @@
using System;
using MongoDB.Configuration.Mapping.Auto;
using System.Linq.Expressions;
using System.Reflection;

namespace MongoDB.Configuration.Builders
{
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
public class ClassOverridesBuilder<T>
{
private readonly ClassOverrides _overrides;

/// <summary>
/// Initializes a new instance of the <see cref="ClassOverridesBuilder&lt;T&gt;"/> class.
/// </summary>
/// <param name="overrides">The overrides.</param>
internal ClassOverridesBuilder(ClassOverrides overrides)
{
if (overrides == null)
throw new ArgumentNullException("overrides");

_overrides = overrides;
}

/// <summary>
/// Collections the name.
/// </summary>
/// <param name="name">The name.</param>
public void CollectionName(string name)
{
_overrides.CollectionName = name;
using System;
using MongoDB.Configuration.Mapping.Auto;
using System.Linq.Expressions;
using System.Reflection;

namespace MongoDB.Configuration.Builders
{
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
public class ClassOverridesBuilder<T>
{
private readonly ClassOverrides _overrides;

/// <summary>
/// Initializes a new instance of the <see cref="ClassOverridesBuilder&lt;T&gt;"/> class.
/// </summary>
/// <param name="overrides">The overrides.</param>
internal ClassOverridesBuilder(ClassOverrides overrides)
{
if (overrides == null)
throw new ArgumentNullException("overrides");

_overrides = overrides;
}

/// <summary>
/// Collections the name.
/// </summary>
/// <param name="name">The name.</param>
public void CollectionName(string name)
{
_overrides.CollectionName = name;
}

/// <summary>
Expand All @@ -41,8 +41,9 @@ public void CollectionName(string name)
/// <returns></returns>
public IdOverridesBuilder Id(MemberInfo member)
{
var overrides = new IdOverrides { Member = member };
return new IdOverridesBuilder(overrides);
var id = new IdOverrides { Member = member };
_overrides.IdOverrides = id;
return new IdOverridesBuilder(id);
}

/// <summary>
Expand Down Expand Up @@ -70,44 +71,44 @@ public IdOverridesBuilder Id(Expression<Func<T, object>> member)
{
var mex = GetMemberExpression(member);
return Id(mex.Member.Name);
}

/// <summary>
/// Members the specified member.
/// </summary>
/// <param name="member">The member.</param>
/// <returns></returns>
public MemberOverridesBuilder Member(MemberInfo member)
{
var overrides = _overrides.GetOverridesFor(member);
return new MemberOverridesBuilder(overrides);
}

/// <summary>
/// Members the specified name.
/// </summary>
/// <param name="name">The name.</param>
/// <returns></returns>
public MemberOverridesBuilder Member(string name)
{
var members = typeof(T).GetMember(name, MemberTypes.Field | MemberTypes.Property, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
if (members == null || members.Length == 0)
throw new InvalidOperationException("No member was found.");
if (members.Length > 1)
throw new InvalidOperationException("More than one member matched the specified name.");

return Member(members[0]);
}

/// <summary>
/// Members the specified member.
/// </summary>
/// <param name="member">The member.</param>
/// <returns></returns>
public MemberOverridesBuilder Member(Expression<Func<T, object>> member)
}

/// <summary>
/// Members the specified member.
/// </summary>
/// <param name="member">The member.</param>
/// <returns></returns>
public MemberOverridesBuilder Member(MemberInfo member)
{
var overrides = _overrides.GetOverridesFor(member);
return new MemberOverridesBuilder(overrides);
}

/// <summary>
/// Members the specified name.
/// </summary>
/// <param name="name">The name.</param>
/// <returns></returns>
public MemberOverridesBuilder Member(string name)
{
var members = typeof(T).GetMember(name, MemberTypes.Field | MemberTypes.Property, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
if (members == null || members.Length == 0)
throw new InvalidOperationException("No member was found.");
if (members.Length > 1)
throw new InvalidOperationException("More than one member matched the specified name.");

return Member(members[0]);
}

/// <summary>
/// Members the specified member.
/// </summary>
/// <param name="member">The member.</param>
/// <returns></returns>
public MemberOverridesBuilder Member(Expression<Func<T, object>> member)
{
var mex = GetMemberExpression(member);
return Member(mex.Member.Name);
return Member(mex.Member.Name);
}

/// <summary>
Expand All @@ -125,6 +126,6 @@ private MemberExpression GetMemberExpression(Expression<Func<T, object>> member)
}

return memberExpression;
}
}
}
}
}
15 changes: 15 additions & 0 deletions source/MongoDB/Configuration/Builders/IdOverridesBuilder.cs
Expand Up @@ -23,17 +23,32 @@ internal IdOverridesBuilder(IdOverrides overrides)
_overrides = overrides;
}

/// <summary>
/// Generateds the by.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public IdOverridesBuilder GeneratedBy<T>() where T : IIdGenerator, new()
{
return GeneratedBy(new T());
}

/// <summary>
/// Generateds the by.
/// </summary>
/// <param name="generator">The generator.</param>
/// <returns></returns>
public IdOverridesBuilder GeneratedBy(IIdGenerator generator)
{
_overrides.Generator = generator;
return this;
}

/// <summary>
/// Unsaveds the value.
/// </summary>
/// <param name="unsavedValue">The unsaved value.</param>
/// <returns></returns>
public IdOverridesBuilder UnsavedValue(object unsavedValue)
{
_overrides.UnsavedValue = unsavedValue;
Expand Down
18 changes: 7 additions & 11 deletions source/MongoDB/Configuration/Mapping/Auto/ClassOverrides.cs
Expand Up @@ -8,7 +8,6 @@ namespace MongoDB.Configuration.Mapping.Auto
/// </summary>
public class ClassOverrides
{
private IdOverrides _idOverrides;
private readonly Dictionary<MemberInfo, MemberOverrides> _memberOverrides;

/// <summary>
Expand All @@ -18,20 +17,17 @@ public class ClassOverrides
public string CollectionName { get; set; }

/// <summary>
/// Initializes a new instance of the <see cref="ClassOverrides"/> class.
/// Gets or sets the id overrides.
/// </summary>
public ClassOverrides()
{
_memberOverrides = new Dictionary<MemberInfo, MemberOverrides>();
}
/// <value>The id overrides.</value>
public IdOverrides IdOverrides { get; set; }

/// <summary>
/// Gets the id overrides.
/// Initializes a new instance of the <see cref="ClassOverrides"/> class.
/// </summary>
/// <returns></returns>
public IdOverrides GetIdOverrides()
public ClassOverrides()
{
return _idOverrides;
_memberOverrides = new Dictionary<MemberInfo, MemberOverrides>();
}

/// <summary>
Expand All @@ -48,4 +44,4 @@ public MemberOverrides GetOverridesFor(MemberInfo memberInfo)
return memberOverrides;
}
}
}
}
3 changes: 3 additions & 0 deletions source/MongoDB/Configuration/Mapping/Auto/IdOverrides.cs
Expand Up @@ -7,6 +7,9 @@

namespace MongoDB.Configuration.Mapping.Auto
{
/// <summary>
/// Overrides the Id member.
/// </summary>
public class IdOverrides
{
/// <summary>
Expand Down
Expand Up @@ -253,7 +253,7 @@ private T GetClassOverrideValue<T>(Type classType, Func<ClassOverrides, T> overr
if (!_overrides.HasOverridesForType(classType))
return defaultValue;

var idOverrides = _overrides.GetOverridesForType(classType).GetIdOverrides();
var idOverrides = _overrides.GetOverridesForType(classType).IdOverrides;
if (idOverrides == null)
return defaultValue;

Expand Down

0 comments on commit 804c3fd

Please sign in to comment.