From 1eab3463dfbf650bd879b3642e10ec29d69324b0 Mon Sep 17 00:00:00 2001 From: markpollack Date: Tue, 10 Nov 2009 05:15:47 +0000 Subject: [PATCH] SPRNET-1041 - Add new DbProvider for Oracle 11g Tested provider by adding reference and then removing. oracleAdoTemplateTests.xml now refers to 11g database in SpringSource QA LAB Remove miscellaneous TODO comments that were not relevant. --- .../Data/AdoTemplateTests.cs | 2 +- .../Data/DeclarativeTxTests.cs | 2 +- .../Data/MappingAdoQueryTests.cs | 2 +- .../Data/Northwind/AdoTemplateShipperDao.cs | 2 +- .../Data/Northwind/IShipperDao.cs | 2 +- .../Data/OracleAdoTemplateTests.cs | 166 +++++++++--------- .../Data/TestObjectQuery.cs | 2 +- .../Data/TestObjectStoredProcedure.cs | 2 +- .../Data/TransactionTemplateTests.cs | 1 - .../Data/oracleAdoTemplateTests.xml | 13 +- 10 files changed, 95 insertions(+), 99 deletions(-) diff --git a/test/Spring/Spring.Data.Integration.Tests/Data/AdoTemplateTests.cs b/test/Spring/Spring.Data.Integration.Tests/Data/AdoTemplateTests.cs index 34c4a02d..1e04e9da 100644 --- a/test/Spring/Spring.Data.Integration.Tests/Data/AdoTemplateTests.cs +++ b/test/Spring/Spring.Data.Integration.Tests/Data/AdoTemplateTests.cs @@ -186,7 +186,7 @@ namespace Spring.Data myDataRow["Name"] = "OldManWinter"; dataSet.Tables["TestObjects"].Rows.Add(myDataRow); - //TODO - think about api... + IDbCommand insertCommand = dbProvider.CreateCommand(); insertCommand.CommandText = "insert into TestObjects(Age,Name) values (@Age,@Name)"; IDbParameters parameters = adoOperations.CreateDbParameters(); diff --git a/test/Spring/Spring.Data.Integration.Tests/Data/DeclarativeTxTests.cs b/test/Spring/Spring.Data.Integration.Tests/Data/DeclarativeTxTests.cs index 54484bae..dbc9b7fd 100644 --- a/test/Spring/Spring.Data.Integration.Tests/Data/DeclarativeTxTests.cs +++ b/test/Spring/Spring.Data.Integration.Tests/Data/DeclarativeTxTests.cs @@ -31,7 +31,7 @@ using Spring.Transaction; namespace Spring.Data { /// - /// TODO: + /// Test for declarative transaction management /// /// Mark Pollack (.NET) [TestFixture] diff --git a/test/Spring/Spring.Data.Integration.Tests/Data/MappingAdoQueryTests.cs b/test/Spring/Spring.Data.Integration.Tests/Data/MappingAdoQueryTests.cs index a4a440ea..95b5fee2 100644 --- a/test/Spring/Spring.Data.Integration.Tests/Data/MappingAdoQueryTests.cs +++ b/test/Spring/Spring.Data.Integration.Tests/Data/MappingAdoQueryTests.cs @@ -33,7 +33,7 @@ using Spring.Data.Common; namespace Spring.Data { /// - /// TODO: + /// Test a MappingAdoQuery implementation /// /// Mark Pollack (.NET) [TestFixture] diff --git a/test/Spring/Spring.Data.Integration.Tests/Data/Northwind/AdoTemplateShipperDao.cs b/test/Spring/Spring.Data.Integration.Tests/Data/Northwind/AdoTemplateShipperDao.cs index f631f25c..4c847f59 100644 --- a/test/Spring/Spring.Data.Integration.Tests/Data/Northwind/AdoTemplateShipperDao.cs +++ b/test/Spring/Spring.Data.Integration.Tests/Data/Northwind/AdoTemplateShipperDao.cs @@ -31,7 +31,7 @@ using Spring.Data.Support; namespace Spring.Data.Northwind { /// - /// TODO: + /// AdoTemplate based implementation of IShipperDao /// /// Mark Pollack (.NET) public class AdoTemplateShipperDao : AdoDaoSupport, IShipperDao diff --git a/test/Spring/Spring.Data.Integration.Tests/Data/Northwind/IShipperDao.cs b/test/Spring/Spring.Data.Integration.Tests/Data/Northwind/IShipperDao.cs index b5324d68..768fbad6 100644 --- a/test/Spring/Spring.Data.Integration.Tests/Data/Northwind/IShipperDao.cs +++ b/test/Spring/Spring.Data.Integration.Tests/Data/Northwind/IShipperDao.cs @@ -27,7 +27,7 @@ using System; namespace Spring.Data.Northwind { /// - /// TODO: + /// ShipperDao interface /// /// Mark Pollack (.NET) public interface IShipperDao diff --git a/test/Spring/Spring.Data.Integration.Tests/Data/OracleAdoTemplateTests.cs b/test/Spring/Spring.Data.Integration.Tests/Data/OracleAdoTemplateTests.cs index 112926aa..497a0b40 100644 --- a/test/Spring/Spring.Data.Integration.Tests/Data/OracleAdoTemplateTests.cs +++ b/test/Spring/Spring.Data.Integration.Tests/Data/OracleAdoTemplateTests.cs @@ -33,77 +33,81 @@ using Spring.Context; using Spring.Context.Support; using Spring.Data.Common; using Spring.Data.Core; -using Spring.Data.Support; using Spring.Objects; #endregion namespace Spring.Data { - /// - /// TODO: - /// - /// Mark Pollack (.NET) - /// $Id: OracleAdoTemplateTests.cs,v 1.8 2007/08/03 19:51:22 markpollack Exp $ - [TestFixture] - public class OracleAdoTemplateTests - { - #region Fields + /// + /// + /// + /// Mark Pollack (.NET) + [TestFixture] + public class OracleAdoTemplateTests + { + #region Setup/Teardown - private IAdoOperations adoOperations; - private IDbProvider dbProvider; - #endregion - - #region Constants - - /// - /// The shared ILog instance for this class (and derived classes). - /// - protected static readonly ILog log = - LogManager.GetLogger(typeof (OracleAdoTemplateTests)); - - #endregion - - #region Constructor (s) - /// - /// Initializes a new instance of the class. - /// - public OracleAdoTemplateTests() - { - - } - - #endregion - - #region Methods [SetUp] public void CreateAdoTemplate() { IApplicationContext ctx = - new XmlApplicationContext("assembly://Spring.Data.Integration.Tests/Spring.Data/oracleAdoTemplateTests.xml"); + new XmlApplicationContext( + "assembly://Spring.Data.Integration.Tests/Spring.Data/oracleAdoTemplateTests.xml"); Assert.IsNotNull(ctx); dbProvider = ctx["DbProvider"] as IDbProvider; Assert.IsNotNull(dbProvider); adoOperations = new AdoTemplate(dbProvider); + } + #endregion + + private IAdoOperations adoOperations; + private IDbProvider dbProvider; + + /// + /// The shared ILog instance for this class (and derived classes). + /// + protected static readonly ILog log = + LogManager.GetLogger(typeof (OracleAdoTemplateTests)); + + private class TestObjectExtractor : IResultSetExtractor + { + #region IResultSetExtractor Members + + public object ExtractData(IDataReader reader) + { + IList testObjects = new ArrayList(); + while (reader.Read()) + { + var to = new TestObject(); + //object foo = reader.GetDataTypeName(0); + to.ObjectNumber = (int) reader.GetInt64(0); + to.Name = reader.GetString(1); + testObjects.Add(to); + } + return testObjects; + } + + #endregion } [Test] public void DataSetFillNoParams() { String sql = "select USER_ID, USER_NAME from USER_TABLE"; - DataSet dataSet = new DataSet(); + var dataSet = new DataSet(); adoOperations.DataSetFill(dataSet, CommandType.Text, sql); Assert.AreEqual(1, dataSet.Tables.Count); Assert.AreEqual(18, dataSet.Tables["Table"].Rows.Count); dataSet = new DataSet(); - adoOperations.DataSetFill(dataSet, CommandType.Text, sql, new string[] {"TestObjects"}); + adoOperations.DataSetFill(dataSet, CommandType.Text, sql, new[] {"TestObjects"}); Assert.AreEqual(1, dataSet.Tables.Count); Assert.AreEqual(18, dataSet.Tables["TestObjects"].Rows.Count); dataSet = new DataSet(); - DataTableMappingCollection mappingCollection = + var mappingCollection = new DataTableMappingCollection(); DataTableMapping testObjectsMapping = mappingCollection.Add("Table", "TestObjects"); testObjectsMapping.ColumnMappings.Add("USER_ID", "UserID"); @@ -116,19 +120,18 @@ namespace Spring.Data Assert.IsNotNull(testObjectRow["UserID"]); Assert.IsNotNull(testObjectRow["UserName"]); } - } [Test] public void DataSetFillWithParameters() { String sql = "select USER_ID, USER_NAME from USER_TABLE where USER_ID < :maxId"; - DataSet dataSet = new DataSet(); + var dataSet = new DataSet(); IDbParameters parameters = adoOperations.CreateDbParameters(); parameters.Add("maxId", OracleType.Int32).Value = 10; adoOperations.DataSetFillWithParameters(dataSet, CommandType.Text, sql, - parameters, - new string[] {"TestObjects"}); + parameters, + new[] {"TestObjects"}); Assert.AreEqual(1, dataSet.Tables.Count); Assert.AreEqual(6, dataSet.Tables["TestObjects"].Rows.Count); } @@ -138,8 +141,8 @@ namespace Spring.Data { //'pretend' unique key is the age... String sql = "select USER_ID, USER_NAME from USER_TABLE"; - DataSet dataSet = new DataSet(); - adoOperations.DataSetFill(dataSet, CommandType.Text, sql, new string[] {"TestObjects"}); + var dataSet = new DataSet(); + adoOperations.DataSetFill(dataSet, CommandType.Text, sql, new[] {"TestObjects"}); //Create and add new row. DataRow myDataRow = dataSet.Tables["TestObjects"].NewRow(); @@ -156,9 +159,10 @@ namespace Spring.Data //Extanious CommandTypes.... adoOperations.DataSetUpdate(dataSet, "TestObjects", - CommandType.Text, "insert into USER_TABLE(USER_ID, USER_NAME) values (:id,:name)", parameters, - CommandType.Text, null, null, - CommandType.Text, null, null); + CommandType.Text, + "insert into USER_TABLE(USER_ID, USER_NAME) values (:id,:name)", parameters, + CommandType.Text, null, null, + CommandType.Text, null, null); //TODO - think about api... @@ -197,21 +201,27 @@ namespace Spring.Data // null, null); //TODO how about breaking up the operations... + } + [Test] + public void ExceptionTranslation() + { + try + { + adoOperations.ExecuteNonQuery(CommandType.Text, "select foo from bar"); + } + catch (BadSqlGrammarException e) + { + // should execute in here in sunny day scenario... + } + catch (Exception) + { + Assert.Fail("Exception translation not working."); + } } [Test] - public void ExecuteQueryWithResultSetExtractor() - { - IResultSetExtractor rse = new TestObjectExtractor(); - String sql = "select USER_ID, USER_NAME from USER_TABLE"; - IList testObjectList = (IList)adoOperations.QueryWithResultSetExtractor(CommandType.Text, sql, rse); - Assert.AreEqual(18, testObjectList.Count); - - } - - [Test] public void ExecuteNonQueryText() { int counter = 0; @@ -228,36 +238,30 @@ namespace Spring.Data sql = "insert into USER_TABLE(USER_ID, USER_NAME) values (:id,:name)"; IDbParameters parameters = adoOperations.CreateDbParameters(); - int user_id1 = 101; - string user_name1 = "George1"; + int user_id1 = 101; + string user_name1 = "George1"; parameters.Add("id", OracleType.Int32).Value = user_id1; - counter++; + counter++; parameters.Add("name", DbType.String, 12).Value = user_name1; - adoOperations.ExecuteNonQuery(CommandType.Text, sql, parameters); + adoOperations.ExecuteNonQuery(CommandType.Text, sql, parameters); } - #endregion - - private class TestObjectExtractor : IResultSetExtractor + [Test] + public void ExecuteQueryWithResultSetExtractor() { - public object ExtractData(IDataReader reader) - { - IList testObjects = new ArrayList(); - while(reader.Read()) - { - TestObject to = new TestObject(); - //object foo = reader.GetDataTypeName(0); - to.ObjectNumber = (int) reader.GetInt64(0); - to.Name = reader.GetString(1); - testObjects.Add(to); - } - return testObjects; - } + IResultSetExtractor rse = new TestObjectExtractor(); + String sql = "select USER_ID, USER_NAME from USER_TABLE"; + var testObjectList = (IList) adoOperations.QueryWithResultSetExtractor(CommandType.Text, sql, rse); + Assert.AreEqual(18, testObjectList.Count); } - - } + [Test] + public void SanityCheck() + { + adoOperations.ExecuteNonQuery(CommandType.Text, "select * from DUAL"); + } + } } #endif // (!NET_1_0) \ No newline at end of file diff --git a/test/Spring/Spring.Data.Integration.Tests/Data/TestObjectQuery.cs b/test/Spring/Spring.Data.Integration.Tests/Data/TestObjectQuery.cs index 873f8b51..85e20846 100644 --- a/test/Spring/Spring.Data.Integration.Tests/Data/TestObjectQuery.cs +++ b/test/Spring/Spring.Data.Integration.Tests/Data/TestObjectQuery.cs @@ -31,7 +31,7 @@ using Spring.Objects; namespace Spring.Data { /// - /// TODO: + /// Simple MappingAdoQuery implementation /// /// Mark Pollack (.NET) public class TestObjectQuery : MappingAdoQuery diff --git a/test/Spring/Spring.Data.Integration.Tests/Data/TestObjectStoredProcedure.cs b/test/Spring/Spring.Data.Integration.Tests/Data/TestObjectStoredProcedure.cs index 6cca1f7d..0247a643 100644 --- a/test/Spring/Spring.Data.Integration.Tests/Data/TestObjectStoredProcedure.cs +++ b/test/Spring/Spring.Data.Integration.Tests/Data/TestObjectStoredProcedure.cs @@ -30,7 +30,7 @@ using Spring.Data.Objects; namespace Spring.Data { /// - /// TODO: + /// Simple StoredProcedure implementation /// /// Mark Pollack (.NET) public class TestObjectStoredProcedure : StoredProcedure diff --git a/test/Spring/Spring.Data.Integration.Tests/Data/TransactionTemplateTests.cs b/test/Spring/Spring.Data.Integration.Tests/Data/TransactionTemplateTests.cs index afe3c57b..3cf76759 100644 --- a/test/Spring/Spring.Data.Integration.Tests/Data/TransactionTemplateTests.cs +++ b/test/Spring/Spring.Data.Integration.Tests/Data/TransactionTemplateTests.cs @@ -163,7 +163,6 @@ namespace Spring.Data DefaultTransactionDefinition def = new DefaultTransactionDefinition(); def.PropagationBehavior = TransactionPropagation.Required; - //TODO change to property of name TransactionStatus... ITransactionStatus status = transactionManager.GetTransaction(def); int iCount = 0; diff --git a/test/Spring/Spring.Data.Integration.Tests/Data/oracleAdoTemplateTests.xml b/test/Spring/Spring.Data.Integration.Tests/Data/oracleAdoTemplateTests.xml index db101150..c968500b 100644 --- a/test/Spring/Spring.Data.Integration.Tests/Data/oracleAdoTemplateTests.xml +++ b/test/Spring/Spring.Data.Integration.Tests/Data/oracleAdoTemplateTests.xml @@ -2,18 +2,11 @@ + + provider="OracleODP-11-2.0" + connectionString="Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.2.0.56)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = QADB))); User Id=mpollack; Password=springqa"/> -