SPRNET-994 - Null reference in SessionFactoryUtils.GetDbProvider

Side effect introduced fixing SPRNET-986.
Updated vs.net 2003 solution
Thanks to Roberto Paterlini and Marko Lahma
This commit is contained in:
markpollack
2008-08-07 20:34:46 +00:00
parent 40a806322d
commit 5815f0618f
13 changed files with 167 additions and 43 deletions

View File

@@ -51,10 +51,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Data.NHibernate.2003
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Data.NHibernate.Integration.Tests.2003", "test\Spring\Spring.Data.NHibernate.Integration.Tests\Spring.Data.NHibernate.Integration.Tests.2003.csproj", "{8DA67FF2-C473-4329-8FF6-3747182196D7}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Data.NHibernate.Tests.2003", "test\Spring\Spring.Data.NHibernate.Tests\Spring.Data.NHibernate.Tests.2003.csproj", "{8755D942-7828-4971-835B-37A5992C06C9}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
@@ -185,14 +181,6 @@ Global
{E8467024-8AE3-44A4-BAAD-1D78747EC7BD}.Release.Build.0 = Release-1.1|.NET
{E8467024-8AE3-44A4-BAAD-1D78747EC7BD}.Release-1.1.ActiveCfg = Release-1.1|.NET
{E8467024-8AE3-44A4-BAAD-1D78747EC7BD}.Release-1.1.Build.0 = Release-1.1|.NET
{8DA67FF2-C473-4329-8FF6-3747182196D7}.Debug.ActiveCfg = Debug-1.1|.NET
{8DA67FF2-C473-4329-8FF6-3747182196D7}.Debug.Build.0 = Debug-1.1|.NET
{8DA67FF2-C473-4329-8FF6-3747182196D7}.Debug-1.1.ActiveCfg = Debug-1.1|.NET
{8DA67FF2-C473-4329-8FF6-3747182196D7}.Debug-1.1.Build.0 = Debug-1.1|.NET
{8DA67FF2-C473-4329-8FF6-3747182196D7}.Release.ActiveCfg = Release-1.1|.NET
{8DA67FF2-C473-4329-8FF6-3747182196D7}.Release.Build.0 = Release-1.1|.NET
{8DA67FF2-C473-4329-8FF6-3747182196D7}.Release-1.1.ActiveCfg = Release-1.1|.NET
{8DA67FF2-C473-4329-8FF6-3747182196D7}.Release-1.1.Build.0 = Release-1.1|.NET
{8755D942-7828-4971-835B-37A5992C06C9}.Debug.ActiveCfg = Debug-1.1|.NET
{8755D942-7828-4971-835B-37A5992C06C9}.Debug.Build.0 = Debug-1.1|.NET
{8755D942-7828-4971-835B-37A5992C06C9}.Debug-1.1.ActiveCfg = Debug-1.1|.NET

View File

@@ -292,6 +292,11 @@
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Context\ILifecycle.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Context\IMessageSource.cs"
SubType = "Code"
@@ -502,6 +507,11 @@
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Core\MethodParameter.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Core\MethodParametersCountCriteria.cs"
SubType = "Code"
@@ -1515,6 +1525,11 @@
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Objects\Factory\Config\DependencyDescriptor.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Objects\Factory\Config\DictionaryFactoryObject.cs"
SubType = "Code"
@@ -1595,6 +1610,11 @@
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Objects\Factory\Config\ISingletonObjectRegistry.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Objects\Factory\Config\IVariableSource.cs"
SubType = "Code"
@@ -1760,6 +1780,11 @@
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Objects\Factory\Support\ConstructorResolver.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Objects\Factory\Support\DefaultListableObjectFactory.cs"
SubType = "Code"
@@ -1785,6 +1810,11 @@
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Objects\Factory\Support\IAutowireCandidateResolver.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Objects\Factory\Support\IConfigurableObjectDefinition.cs"
SubType = "Code"
@@ -1875,6 +1905,11 @@
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Objects\Factory\Support\ObjectDefinitionValueResolver.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Objects\Factory\Support\PropertiesObjectDefinitionReader.cs"
SubType = "Code"
@@ -1890,6 +1925,11 @@
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Objects\Factory\Support\SimpleAutowireCandidateResolver.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Objects\Factory\Support\SimpleInstantiationStrategy.cs"
SubType = "Code"

View File

@@ -641,7 +641,7 @@ namespace Spring.Data.NHibernate
if (sfi != null)
{
ConnectionProvider cp = sfi.ConnectionProvider as ConnectionProvider;
IConnectionProvider cp = sfi.ConnectionProvider as IConnectionProvider;
if (cp != null)
{
IConfigurableApplicationContext ctx =
@@ -653,11 +653,10 @@ namespace Spring.Data.NHibernate
}
DriverBase db = cp.Driver as DriverBase;
IDriver db = cp.Driver;
if (db != null)
{
Type hibCommandType = db.CreateCommand().GetType();
//Type hibConnectionType = cp.Driver.ConnectionType;
string[] providerNames = ctx.GetObjectNamesForType(typeof(DbProvider), true, false);
string hibCommandAQN = hibCommandType.AssemblyQualifiedName;
@@ -666,12 +665,10 @@ namespace Spring.Data.NHibernate
IObjectDefinition objectdef = ctx.ObjectFactory.GetObjectDefinition(providerName);
ConstructorArgumentValues ctorArgs = objectdef.ConstructorArgumentValues;
ConstructorArgumentValues.ValueHolder vh = ctorArgs.NamedArgumentValues["dbmetadata"] as ConstructorArgumentValues.ValueHolder;
IObjectDefinition od = vh.Value as IObjectDefinition;
IObjectDefinition od = ((ObjectDefinitionHolder) vh.Value).ObjectDefinition;
ConstructorArgumentValues dbmdCtorArgs = od.ConstructorArgumentValues;
string commandType = dbmdCtorArgs.GetArgumentValue("commandType", typeof(string)).Value as string;
string assemblyName = dbmdCtorArgs.GetArgumentValue("assemblyName", typeof(string)).Value as string;
if (hibCommandAQN.Equals(commandType))
{
IDbProvider prov = Spring.Data.Common.DbProviderFactory.GetDbProvider(providerName);

View File

@@ -1,7 +1,7 @@
<VisualStudioProject>
<CSHARP
ProjectType = "Local"
ProductVersion = "7.10.3077"
ProductVersion = "7.10.6030"
SchemaVersion = "2.0"
ProjectGuid = "{E8467024-8AE3-44A4-BAAD-1D78747EC7BD}"
>
@@ -109,11 +109,6 @@
AssemblyName = "antlr.runtime"
HintPath = "..\..\..\lib\Net\1.1\antlr.runtime.dll"
/>
<Reference
Name = "log4net"
AssemblyName = "log4net"
HintPath = "..\..\..\lib\NHibernate10\net\1.1\log4net.dll"
/>
<Reference
Name = "NHibernate"
AssemblyName = "NHibernate"
@@ -129,6 +124,11 @@
AssemblyName = "Iesi.Collections"
HintPath = "..\..\..\lib\NHibernate10\net\1.1\Iesi.Collections.dll"
/>
<Reference
Name = "log4net"
AssemblyName = "log4net"
HintPath = "..\..\..\lib\NHibernate10\net\1.1\log4net.dll"
/>
</References>
</Build>
<Files>

View File

@@ -662,7 +662,6 @@ namespace Spring.Data.NHibernate
if (db != null)
{
Type hibCommandType = db.CreateCommand().GetType();
//Type hibConnectionType = cp.Driver.ConnectionType;
string[] providerNames = ctx.GetObjectNamesForType(typeof(DbProvider), true, false);
string hibCommandAQN = hibCommandType.AssemblyQualifiedName;
@@ -671,12 +670,10 @@ namespace Spring.Data.NHibernate
IObjectDefinition objectdef = ctx.ObjectFactory.GetObjectDefinition(providerName);
ConstructorArgumentValues ctorArgs = objectdef.ConstructorArgumentValues;
ConstructorArgumentValues.ValueHolder vh = ctorArgs.NamedArgumentValues["dbmetadata"] as ConstructorArgumentValues.ValueHolder;
IObjectDefinition od = vh.Value as IObjectDefinition;
IObjectDefinition od = ((ObjectDefinitionHolder)vh.Value).ObjectDefinition;
ConstructorArgumentValues dbmdCtorArgs = od.ConstructorArgumentValues;
string commandType = dbmdCtorArgs.GetArgumentValue("commandType", typeof(string)).Value as string;
string assemblyName = dbmdCtorArgs.GetArgumentValue("assemblyName", typeof(string)).Value as string;
if (hibCommandAQN.Equals(commandType))
{
IDbProvider prov = Spring.Data.Common.DbProviderFactory.GetDbProvider(providerName);

View File

@@ -3,7 +3,7 @@
ProjectType = "Local"
ProductVersion = "7.10.6030"
SchemaVersion = "2.0"
ProjectGuid = "{2E12AE3E-5690-46A5-9F89-80F1D3004ADB}"
ProjectGuid = "{B573D2EF-56FD-4675-9031-F8057119B3C8}"
>
<Build>
<Settings

View File

@@ -15,18 +15,18 @@
<constructor-arg name="dbMetaData">
<object type="Spring.Data.Common.DbMetadata">
<constructor-arg name="productName" value="Microsoft SQL Server, provider V1.0.5000.0 in framework .NET V1.1"/>
<constructor-arg name="assemblyName" value="System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<constructor-arg name="connectionType" value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<constructor-arg name="commandType" value="System.Data.SqlClient.SqlCommand, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<constructor-arg name="parameterType" value="System.Data.SqlClient.SqlParameter, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<constructor-arg name="dataAdapterType" value="System.Data.SqlClient.SqlDataAdapter, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<constructor-arg name="commandBuilderType" value="System.Data.SqlClient.SqlCommandBuilder, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<constructor-arg name="assemblyName" value="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<constructor-arg name="connectionType" value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<constructor-arg name="commandType" value="System.Data.SqlClient.SqlCommand, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<constructor-arg name="parameterType" value="System.Data.SqlClient.SqlParameter, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<constructor-arg name="dataAdapterType" value="System.Data.SqlClient.SqlDataAdapter, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<constructor-arg name="commandBuilderType" value="System.Data.SqlClient.SqlCommandBuilder, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
<constructor-arg name="parameterDbType" value="System.Data.SqlDbType, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<constructor-arg name="parameterDbType" value="System.Data.SqlDbType, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<constructor-arg name="parameterDbTypeProperty" value="SqlDbType"/>
<constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
<constructor-arg name="parameterNamePrefix" value="@"/>
<constructor-arg name="exceptionType" value="System.Data.SqlClient.SqlException, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<constructor-arg name="exceptionType" value="System.Data.SqlClient.SqlException, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
<constructor-arg name="useParameterPrefixInSql" value="true"/>
<constructor-arg name="bindByName" value="true"/>

View File

@@ -1474,6 +1474,11 @@
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Objects\Factory\Xml\ArrayCtorDependencyObject.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Objects\Factory\Xml\ConstructorDependenciesObject.cs"
SubType = "Code"
@@ -1549,6 +1554,11 @@
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Objects\Factory\Xml\SiimpleCtorWiringTests.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Objects\Factory\Xml\SingleSimpleTypeConstructorObject.cs"
SubType = "Code"

View File

@@ -0,0 +1,75 @@
#region License
/*
* Copyright <20> 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
#region Imports
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Connection;
using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
using Rhino.Mocks;
using Spring.Data.Common;
#endregion
namespace Spring.Data.NHibernate
{
/// <summary>
/// This class contains tests for SessionFactoryUtilsTest
/// </summary>
/// <author>Marko Lahma</author>
[TestFixture]
public class SessionFactoryUtilsTests
{
[Test]
public void SessionFactoryUtilsWithGetDbProvider()
{
MockRepository mockery = new MockRepository();
ISessionFactoryImplementor sessionFactory = (ISessionFactoryImplementor) mockery.CreateMultiMock(typeof(ISessionFactory), typeof(ISessionFactoryImplementor));
IDriver driver = (IDriver)mockery.DynamicMock(typeof(IDriver));
Expect.Call(driver.CreateCommand()).Repeat.AtLeastOnce().Return(new SqlCommand());
IConnectionProvider cp = (IConnectionProvider) mockery.DynamicMock(typeof (IConnectionProvider));
Expect.Call(cp.Driver).Repeat.AtLeastOnce().Return(driver);
Expect.Call(sessionFactory.ConnectionProvider).Repeat.AtLeastOnce().Return(cp);
mockery.ReplayAll();
IDbProvider provider = SessionFactoryUtils.GetDbProvider(sessionFactory);
Assert.AreEqual(typeof(SqlCommand), provider.DbMetadata.CommandType);
mockery.VerifyAll();
}
}
}

View File

@@ -1,7 +1,7 @@
<VisualStudioProject>
<CSHARP
ProjectType = "Local"
ProductVersion = "7.10.3077"
ProductVersion = "7.10.6030"
SchemaVersion = "2.0"
ProjectGuid = "{8755D942-7828-4971-835B-37A5992C06C9}"
>
@@ -147,6 +147,11 @@
RelPath = "Spring.Data.NHibernate.Tests.dll.config"
BuildAction = "None"
/>
<File
RelPath = "Data\NHibernate\HibernateTransactionManagerTests.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Data\NHibernate\ISimpleService.cs"
SubType = "Code"
@@ -157,11 +162,21 @@
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Data\NHibernate\LocalSessionFactoryObjectTests.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Data\NHibernate\NHTestObjectDao.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Data\NHibernate\SessionFactoryUtilsTests.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "Data\NHibernate\SimpleService.cs"
SubType = "Code"

View File

@@ -89,6 +89,7 @@
<Compile Include="Data\NHibernate\ITestObjectDao.cs" />
<Compile Include="Data\NHibernate\LocalSessionFactoryObjectTests.cs" />
<Compile Include="Data\NHibernate\NHTestObjectDao.cs" />
<Compile Include="Data\NHibernate\SessionFactoryUtilsTests.cs" />
<Compile Include="Data\NHibernate\SimpleService.cs" />
<Compile Include="Data\NHibernate\Support\ConfigSectionSessionScopeSettingsTests.cs" />
<Compile Include="Data\NHibernate\Support\SessionScopeSettingsTests.cs" />
@@ -120,4 +121,4 @@
xcopy "$(ProjectDir)Data" ..\..\..\..\build\VS.Net.2005\Spring.Data.NHibernate.Tests\$(ConfigurationName)\ /y /s /q /d
xcopy "$(ProjectDir)$(TargetFileName).config" ..\..\..\..\build\VS.Net.2005\Spring.Data.NHibernate.Tests\$(ConfigurationName)\ /y /s /q</PostBuildEvent>
</PropertyGroup>
</Project>
</Project>

View File

@@ -85,6 +85,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Data\NHibernate\Config\AopConfiguration.cs" />
<Compile Include="Data\NHibernate\SessionFactoryUtilsTests.cs" />
<Compile Include="Data\NHibernate\HibernateTransactionManagerTests.cs" />
<Compile Include="Data\NHibernate\ISimpleService.cs" />
<Compile Include="Data\NHibernate\ITestObjectDao.cs" />
@@ -121,4 +122,4 @@
xcopy "$(ProjectDir)Data" ..\..\..\..\build\VS.Net.2008\Spring.Data.NHibernate.Tests\$(ConfigurationName)\ /y /s /q /d
xcopy "$(ProjectDir)$(TargetFileName).config" ..\..\..\..\build\VS.Net.2008\Spring.Data.NHibernate.Tests\$(ConfigurationName)\ /y /s /q</PostBuildEvent>
</PropertyGroup>
</Project>
</Project>

View File

@@ -291,7 +291,7 @@
/>
<File
RelPath = "Util\ControlInterceptionTests.cs"
SubType = "ASPXCodeBehind"
SubType = "Code"
BuildAction = "Compile"
/>
<File