From: <fab...@us...> - 2009-02-03 12:45:35
|
Revision: 4017 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4017&view=rev Author: fabiomaulo Date: 2009-02-03 12:45:32 +0000 (Tue, 03 Feb 2009) Log Message: ----------- Example of OracleClientExceptionConverterExample Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/ExceptionsTest/SQLExceptionConversionTest.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/ExceptionsTest/OracleClientExceptionConverterExample.cs Added: trunk/nhibernate/src/NHibernate.Test/ExceptionsTest/OracleClientExceptionConverterExample.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/ExceptionsTest/OracleClientExceptionConverterExample.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/ExceptionsTest/OracleClientExceptionConverterExample.cs 2009-02-03 12:45:32 UTC (rev 4017) @@ -0,0 +1,31 @@ +using System; +using System.Data.OracleClient; +using NHibernate.Exceptions; +using NHibernate.SqlCommand; + +namespace NHibernate.Test.ExceptionsTest +{ + public class OracleClientExceptionConverterExample : ISQLExceptionConverter + { + #region ISQLExceptionConverter Members + + public ADOException Convert(Exception sqlException, string message, SqlString sql) + { + var sqle = ADOExceptionHelper.ExtractDbException(sqlException) as OracleException; + if (sqle != null) + { + if (sqle.Code == 1036) + { + return new ConstraintViolationException(message, sqle.InnerException, sql, null); + } + if (sqle.Code == 942) + { + return new SQLGrammarException(message, sqle.InnerException, sql); + } + } + return SQLStateConverter.HandledNonSpecificException(sqlException, message, sql); + } + + #endregion + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/ExceptionsTest/SQLExceptionConversionTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/ExceptionsTest/SQLExceptionConversionTest.cs 2009-02-03 04:21:15 UTC (rev 4016) +++ trunk/nhibernate/src/NHibernate.Test/ExceptionsTest/SQLExceptionConversionTest.cs 2009-02-03 12:45:32 UTC (rev 4017) @@ -18,16 +18,21 @@ protected override IList Mappings { - get { return new string[] { "ExceptionsTest.User.hbm.xml", "ExceptionsTest.Group.hbm.xml" }; } + get { return new[] { "ExceptionsTest.User.hbm.xml", "ExceptionsTest.Group.hbm.xml" }; } } protected override void Configure(Cfg.Configuration configuration) { if(Dialect is MsSql2000Dialect) { - configuration.SetProperty(NHibernate.Cfg.Environment.SqlExceptionConverter, + configuration.SetProperty(Cfg.Environment.SqlExceptionConverter, typeof (MSSQLExceptionConverterExample).AssemblyQualifiedName); } + if (Dialect is Oracle8iDialect) + { + configuration.SetProperty(Cfg.Environment.SqlExceptionConverter, + typeof(OracleClientExceptionConverterExample).AssemblyQualifiedName); + } } [Test] Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-03 04:21:15 UTC (rev 4016) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-03 12:45:32 UTC (rev 4017) @@ -65,6 +65,7 @@ <Reference Include="System" /> <Reference Include="System.configuration" /> <Reference Include="System.Data" /> + <Reference Include="System.Data.OracleClient" /> <Reference Include="System.Transactions" /> <Reference Include="System.Xml" /> </ItemGroup> @@ -197,6 +198,7 @@ <Compile Include="Events\Collections\Values\ValuesBagCollectionEventFixture.cs" /> <Compile Include="ExceptionsTest\Group.cs" /> <Compile Include="ExceptionsTest\MSSQLExceptionConverterExample.cs" /> + <Compile Include="ExceptionsTest\OracleClientExceptionConverterExample.cs" /> <Compile Include="ExceptionsTest\PropertyAccessExceptionFixture.cs" /> <Compile Include="ExceptionsTest\SQLExceptionConversionTest.cs" /> <Compile Include="ExceptionsTest\User.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |