From: <dar...@us...> - 2009-02-04 04:19:04
|
Revision: 4030 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4030&view=rev Author: darioquintana Date: 2009-02-04 04:18:37 +0000 (Wed, 04 Feb 2009) Log Message: ----------- Exception Converter example for PostgreSQL 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/PostgresExceptionConverterExample.cs Added: trunk/nhibernate/src/NHibernate.Test/ExceptionsTest/PostgresExceptionConverterExample.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/ExceptionsTest/PostgresExceptionConverterExample.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/ExceptionsTest/PostgresExceptionConverterExample.cs 2009-02-04 04:18:37 UTC (rev 4030) @@ -0,0 +1,31 @@ +using System; +using System.Data.Common; +using NHibernate; +using NHibernate.Exceptions; +using NHibernate.SqlCommand; + +public class PostgresExceptionConverterExample : ISQLExceptionConverter +{ + #region ISQLExceptionConverter Members + + public ADOException Convert(Exception sqlException, string message, SqlString sql) + { + var sqle = ADOExceptionHelper.ExtractDbException(sqlException) as DbException; + if (sqle != null) + { + string code = (string) sqle.GetType().GetProperty("Code").GetValue(sqle, null); + + if (code == "23503") + { + return new ConstraintViolationException(message, sqle.InnerException, sql, null); + } + if (code == "42P01") + { + 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-04 03:40:06 UTC (rev 4029) +++ trunk/nhibernate/src/NHibernate.Test/ExceptionsTest/SQLExceptionConversionTest.cs 2009-02-04 04:18:37 UTC (rev 4030) @@ -33,6 +33,12 @@ configuration.SetProperty(Cfg.Environment.SqlExceptionConverter, typeof(OracleClientExceptionConverterExample).AssemblyQualifiedName); } + + if (Dialect is PostgreSQL82Dialect) + { + configuration.SetProperty(Cfg.Environment.SqlExceptionConverter, + typeof(PostgresExceptionConverterExample).AssemblyQualifiedName); + } } [Test] Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-04 03:40:06 UTC (rev 4029) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-04 04:18:37 UTC (rev 4030) @@ -196,6 +196,7 @@ <Compile Include="Events\Collections\IParentWithCollection.cs" /> <Compile Include="Events\Collections\Values\ParentWithCollectionOfValues.cs" /> <Compile Include="Events\Collections\Values\ValuesBagCollectionEventFixture.cs" /> + <Compile Include="ExceptionsTest\PostgresExceptionConverterExample.cs" /> <Compile Include="ExceptionsTest\Group.cs" /> <Compile Include="ExceptionsTest\MSSQLExceptionConverterExample.cs" /> <Compile Include="ExceptionsTest\OracleClientExceptionConverterExample.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |