Skip to content

Commit 9bbff47

Browse files
committed
Merge branch 'release/2.0.3' into production
2 parents 2b2e1d2 + de04783 commit 9bbff47

File tree

72 files changed

+411
-1156
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+411
-1156
lines changed

CSF.Entities/CSF.Entities.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<Authors>craigfowler</Authors>
1212
<Title>Entity &amp; identity types</Title>
1313
<Description>Interfaces &amp; base types to describe ORM-mapped entities and their identities.</Description>
14-
<ReleaseVersion>2.0.2</ReleaseVersion>
14+
<ReleaseVersion>2.0.3</ReleaseVersion>
1515
<Version>$(ReleaseVersion)</Version>
1616
<PackageVersion>$(ReleaseVersion)</PackageVersion>
1717
<PackageLicenseExpression>MIT</PackageLicenseExpression>

CSF.Entities/Identity.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@
2525
// THE SOFTWARE.
2626

2727
using System;
28-
using System.Collections.Generic;
29-
using System.Linq;
3028

3129
namespace CSF.Entities
3230
{

CSF.Entities/IdentityFactory.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,20 @@ public IIdentity Create(Type entityType, Type identityType, object identityValue
6363
throw new ArgumentNullException(nameof(identityType));
6464
if (Equals(identityValue, GetDefaultValue(identityType)))
6565
return null;
66-
if (!identityType.IsInstanceOfType(identityValue))
67-
throw new ArgumentException(String.Format(Resources.ExceptionMessages.InvalidIdentityType, identityType.Name, identityValue.GetType()), nameof(identityValue));
66+
67+
object convertedValue;
68+
try
69+
{
70+
convertedValue = Convert.ChangeType(identityValue, identityType);
71+
}
72+
catch (Exception e)
73+
{
74+
var message = String.Format(Resources.ExceptionMessages.InvalidIdentityType, identityType.Name, identityValue.GetType());
75+
throw new ArgumentException(message, nameof(identityValue), e);
76+
}
6877

6978
var closedIdentityType = typeof(Identity<,>).MakeGenericType(identityType, entityType);
70-
return (IIdentity)Activator.CreateInstance(closedIdentityType, new[] { identityValue });
79+
return (IIdentity)Activator.CreateInstance(closedIdentityType, new[] { convertedValue });
7180
}
7281

7382
object GetDefaultValue(Type identityType)

CSF.Entities/IdentityParser.cs

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ namespace CSF.Entities
3131
/// </summary>
3232
public class IdentityParser : IParsesIdentity
3333
{
34-
static readonly IGetsIdentityType identityTypeProvider = new IdentityTypeProvider();
3534
static readonly ICreatesIdentity identityFactory = new IdentityFactory();
3635

3736
/// <summary>
@@ -42,22 +41,15 @@ public class IdentityParser : IParsesIdentity
4241
/// <param name="value">The identity value.</param>
4342
public IIdentity Parse(Type entityType, object value)
4443
{
45-
if (entityType == null)
46-
throw new ArgumentNullException(nameof(entityType));
47-
if (value == null)
48-
return null;
49-
50-
var identityType = identityTypeProvider.GetIdentityType(entityType);
51-
if (identityType == null) return null;
52-
53-
object convertedValue;
5444
try
5545
{
56-
convertedValue = Convert.ChangeType(value, identityType);
46+
return identityFactory.Create(entityType, value);
47+
}
48+
catch(ArgumentException e)
49+
{
50+
if (e.ParamName == "identityValue") return null;
51+
throw;
5752
}
58-
catch(Exception) { return null; }
59-
60-
return identityFactory.Create(entityType, identityType, convertedValue);
6153
}
6254
}
6355
}

CSF.Entities/Resources/ExceptionMessages.resx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@
2222
<value>To up-cast an identity to a more specific entity type, the entity type to cast-as: `{1}' must derive from the specified identity's current entity type: `{0}'.</value>
2323
</data>
2424
<data name="InvalidIdentityType" xml:space="preserve">
25-
<value>Identity type `{0}' was specified but provided identity value was a `{1}'.</value>
25+
<value>Could not convert the identity value. Identity value type `{0}' is expected but the specified value is `{1}'. The specified value must be convertible to the expected value.</value>
2626
</data>
2727
</root>

CSF.ORM.Entities/CSF.ORM.Entities.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<Authors>craigfowler</Authors>
1414
<Title>ORM abstractions: Entity integration</Title>
1515
<Description>An integration between CSF.ORM and CSF.Entities, providing convenience functionality for projects which use both.</Description>
16-
<ReleaseVersion>2.0.2</ReleaseVersion>
16+
<ReleaseVersion>2.0.3</ReleaseVersion>
1717
<Version>$(ReleaseVersion)</Version>
1818
<PackageVersion>$(ReleaseVersion)</PackageVersion>
1919
<PackageLicenseExpression>MIT</PackageLicenseExpression>

CSF.ORM.Entities/EntityData.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public class EntityData : IEntityData
4040
{
4141
readonly IQuery query;
4242
readonly IPersister persister;
43-
readonly IParsesIdentity parser = new IdentityParser();
43+
readonly ICreatesIdentity idFactory = new IdentityFactory();
4444

4545
/// <summary>
4646
/// Add the specified entity.
@@ -57,11 +57,11 @@ public IIdentity<TEntity> Add<TEntity>(TEntity entity) where TEntity : class, IE
5757
if(identity != null)
5858
{
5959
idValue = persister.Add(entity, identity.Value);
60-
return ReferenceEquals(idValue, null)? null : (IIdentity<TEntity>) parser.Parse(typeof(TEntity), idValue);
60+
return ReferenceEquals(idValue, null)? null : (IIdentity<TEntity>) idFactory.Create(typeof(TEntity), idValue);
6161
}
6262

6363
idValue = persister.Add(entity);
64-
return ReferenceEquals(idValue, null) ? null : (IIdentity<TEntity>)parser.Parse(typeof(TEntity), idValue);
64+
return ReferenceEquals(idValue, null) ? null : (IIdentity<TEntity>) idFactory.Create(typeof(TEntity), idValue);
6565
}
6666

6767
/// <summary>
@@ -172,11 +172,11 @@ public void Update<TEntity>(TEntity entity) where TEntity : class, IEntity
172172
if (identity != null)
173173
{
174174
idValue = await persister.AddAsync(entity, identity.Value, token);
175-
return ReferenceEquals(idValue, null) ? null : (IIdentity<TEntity>)parser.Parse(typeof(TEntity), idValue);
175+
return ReferenceEquals(idValue, null) ? null : (IIdentity<TEntity>)idFactory.Create(typeof(TEntity), idValue);
176176
}
177177

178178
idValue = await persister.AddAsync(entity, null, token);
179-
return ReferenceEquals(idValue, null) ? null : (IIdentity<TEntity>)parser.Parse(typeof(TEntity), idValue);
179+
return ReferenceEquals(idValue, null) ? null : (IIdentity<TEntity>)idFactory.Create(typeof(TEntity), idValue);
180180
}
181181

182182
/// <summary>

CSF.ORM.NHibernate.Common/CSF.ORM.NHibernate.Common.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
<PropertyGroup>
1111
<IsPackable>false</IsPackable>
12-
<ReleaseVersion>2.0.2</ReleaseVersion>
12+
<ReleaseVersion>2.0.3</ReleaseVersion>
1313
<Version>$(ReleaseVersion)</Version>
1414
<SignAssembly>true</SignAssembly>
1515
<AssemblyOriginatorKeyFile>..\CSF-Software-OSS.snk</AssemblyOriginatorKeyFile>

CSF.ORM.NHibernate4/CSF.ORM.NHibernate4.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<Authors>craigfowler</Authors>
1313
<Title>ORM abstractions: Implementation for NHibernate 4</Title>
1414
<Description>Implementation of the ORM abstractions for users of NHibernate version 4.x.</Description>
15-
<ReleaseVersion>2.0.2</ReleaseVersion>
15+
<ReleaseVersion>2.0.3</ReleaseVersion>
1616
<Version>$(ReleaseVersion)</Version>
1717
<PackageVersion>$(ReleaseVersion)</PackageVersion>
1818
<PackageLicenseExpression>MIT</PackageLicenseExpression>

CSF.ORM.NHibernate4/CSF.ORM.NHibernate4.nuspec

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@
1515
<repository url="https://github.com/csf-dev/CSF.ORM" />
1616
<dependencies>
1717
<group targetFramework=".NETFramework4.5">
18-
<dependency id="CSF.ORM" version="[2.0.0,3.0.0)" />
18+
<dependency id="CSF.ORM" version="[2.0.3,3.0.0)" />
1919
<dependency id="Iesi.Collections" version="[4.0.0.4000,5.0.0)" />
2020
<dependency id="NHibernate" version="[4.0.0.4000,5.0.0)" />
2121
</group>
2222
<group targetFramework=".NETCoreApp2.0">
23-
<dependency id="CSF.ORM" version="[2.0.0,3.0.0)" />
23+
<dependency id="CSF.ORM" version="[2.0.3,3.0.0)" />
2424
<dependency id="Iesi.Collections" version="[4.0.0.4000,5.0.0)" />
2525
<dependency id="NHibernate" version="[4.0.0.4000,5.0.0)" />
2626
</group>
2727
<group targetFramework=".NETStandard2.0">
28-
<dependency id="CSF.ORM" version="[2.0.0,3.0.0)" />
28+
<dependency id="CSF.ORM" version="[2.0.3,3.0.0)" />
2929
<dependency id="Iesi.Collections" version="[4.0.0.4000,5.0.0)" />
3030
<dependency id="NHibernate" version="[4.0.0.4000,5.0.0)" />
3131
<dependency id="System.Configuration.ConfigurationManager" version="4.4.0" />

0 commit comments

Comments
 (0)