You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by gb...@apache.org on 2005/05/27 22:51:54 UTC

svn commit: r178821 - /incubator/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities /incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper /incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test /incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests

Author: gbayon
Date: Fri May 27 13:51:53 2005
New Revision: 178821

URL: http://svn.apache.org/viewcvs?rev=178821&view=rev
Log:
- Fixed JIRA-71
Support
Relative Paths 
-----------------------
SqlMapper.Configure("sqlMap.Config") 
SqlMapper.ConfigureAndWatch("sqlMap.Config") 

Absolute Paths 
------------------------ 
SqlMapper.Configure("file://c:\MyDirectory\sqlMap.Config") 
SqlMapper.Configure(FileInfo absolutePath) 
SqlMapper.Configure(Uri location) [should be absolute!] 
SqlMapper.ConfigureAndWatch("file://c:\MyDirectory\sqlMap.Config") 
SqlMapper.ConfigureAndWatch(FileInfo absolutePath) 

Stream 
------------
SqlMapper.Configure(Stream resource) 

See ConfigureTest

Added:
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ConfigureTest.cs
Modified:
    incubator/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Resources.cs
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/IBatisNet.DataMapper.Test.csproj
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/BaseTest.cs
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/CacheTest.cs
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/SqlMapper.cs

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Resources.cs
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Resources.cs?rev=178821&r1=178820&r2=178821&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Resources.cs (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Resources.cs Fri May 27 13:51:53 2005
@@ -278,26 +278,62 @@
 		public static XmlDocument GetStreamAsXmlDocument(Stream resource)
 		{
 			XmlDocument config = new XmlDocument();
-			XmlTextReader reader = null;
 
 			try 
 			{
-				reader = new XmlTextReader( resource );
-				config.Load(reader);
+				config.Load(resource);
 			}
 			catch(Exception e)
 			{
 				throw new ConfigurationException(
 					string.Format("Unable to load XmlDocument via stream. Cause : {1}", 
 					e.Message ) ,e); 
+			}
+
+			return config;
+		}
+
+		/// <summary>
+		/// Get XmlDocument from a FileInfo resource
+		/// </summary>
+		/// <param name="resource"></param>
+		/// <returns></returns>
+		public static XmlDocument GetFileInfoAsXmlDocument(FileInfo resource)
+		{
+			XmlDocument config = new XmlDocument();
 
+			try 
+			{
+				config.Load( resource.FullName );
 			}
-			finally
+			catch(Exception e)
 			{
-				if (reader != null)
-				{
-					reader.Close();
-				}
+				throw new ConfigurationException(
+					string.Format("Unable to load XmlDocument via FileInfo. Cause : {1}", 
+					e.Message ) ,e); 
+			}
+
+			return config;
+		}
+
+		/// <summary>
+		/// Get XmlDocument from a Uri resource
+		/// </summary>
+		/// <param name="resource"></param>
+		/// <returns></returns>
+		public static XmlDocument GetUriAsXmlDocument(Uri resource)
+		{
+			XmlDocument config = new XmlDocument();
+
+			try 
+			{
+				config.Load( resource.AbsoluteUri );
+			}
+			catch(Exception e)
+			{
+				throw new ConfigurationException(
+					string.Format("Unable to load XmlDocument via Uri. Cause : {1}", 
+					e.Message ) ,e); 
 			}
 
 			return config;
@@ -311,12 +347,10 @@
 		public static XmlDocument GetResourceAsXmlDocument(string resource)
 		{
 			XmlDocument config = new XmlDocument();
-			XmlTextReader reader = null;
 
 			try 
 			{
-				reader = new XmlTextReader(Path.Combine(_applicationBase, resource));
-				config.Load(reader);
+				config.Load( Path.Combine(_applicationBase, resource) );
 			}
 			catch(Exception e)
 			{
@@ -324,14 +358,6 @@
 					string.Format("Unable to load file via resource \"{0}\" as resource. Cause : {1}", 
 					resource, 
 					e.Message ) ,e); 
-
-			}
-			finally
-			{
-				if (reader != null)
-				{
-					reader.Close();
-				}
 			}
 
 			return config;
@@ -346,12 +372,10 @@
 		public static XmlDocument GetUrlAsXmlDocument(string url)
 		{
 			XmlDocument config = new XmlDocument();
-			XmlTextReader reader = null;
 
 			try 
 			{
-				reader = new XmlTextReader(url);
-				config.Load(reader);
+				config.Load(url);
 			}
 			catch(Exception e)
 			{
@@ -360,13 +384,6 @@
 					url, 
 					e.Message  ) ,e);
 			}
-			finally
-			{
-				if (reader != null)
-				{
-					reader.Close();
-				}
-			}
 
 			return config;
 		}
@@ -375,15 +392,14 @@
 		/// <summary>
 		/// 
 		/// </summary>
-		/// <param name="fileResource"></param>
+		/// <param name="resource"></param>
 		/// <returns></returns>
-		public static XmlDocument GetEmbeddedResourceAsXmlDocument(string fileResource)
+		public static XmlDocument GetEmbeddedResourceAsXmlDocument(string resource)
 		{
 			XmlDocument config = new XmlDocument();
 			bool isLoad = false;
-			XmlTextReader reader = null;
 
-			FileAssemblyInfo fileInfo = new FileAssemblyInfo (fileResource);
+			FileAssemblyInfo fileInfo = new FileAssemblyInfo (resource);
 			if (fileInfo.IsAssemblyQualified)
 			{
 				Assembly assembly = Assembly.LoadWithPartialName (fileInfo.AssemblyName);
@@ -392,29 +408,21 @@
 //					Console.WriteLine(fileName);
 //				}
 
-				Stream resource = assembly.GetManifestResourceStream(fileInfo.ResourceFileName);
-				if (resource != null)
+				Stream stream = assembly.GetManifestResourceStream(fileInfo.ResourceFileName);
+				if (stream != null)
 				{
 					try
 					{
-						reader = new XmlTextReader(resource);
-						config.Load(reader);
+						config.Load(stream);
 						isLoad = true;
 					}
 					catch(Exception e)
 					{
 						throw new ConfigurationException(
 							string.Format("Unable to load file \"{0}\" in embedded resource. Cause : {1}",
-							fileResource, 
+							resource, 
 							e.Message  ) ,e);
 					}
-					finally
-					{
-						if (reader != null)
-						{
-							reader.Close();
-						}
-					}
 				}
 			} 
 			else
@@ -423,28 +431,20 @@
 				Assembly [] assemblies = AppDomain.CurrentDomain.GetAssemblies ();
 				foreach (Assembly assembly in assemblies)
 				{
-					Stream resource = assembly.GetManifestResourceStream(fileInfo.FileName);
-					if (resource != null)
+					Stream stream = assembly.GetManifestResourceStream(fileInfo.FileName);
+					if (stream != null)
 					{
 						try
 						{
-							reader = new XmlTextReader(resource);
-							config.Load(reader);
+							config.Load(stream);
 							isLoad = true;
 						}
 						catch(Exception e)
 						{
 							throw new ConfigurationException(
 								string.Format("Unable to load file \"{0}\" in embedded resource. Cause : ",
-								fileResource, 
+								resource, 
 								e.Message  ) ,e);
-						}
-						finally
-						{
-							if (reader != null)
-							{
-								reader.Close();
-							}
 						}
 						break;
 					}

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/IBatisNet.DataMapper.Test.csproj
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/IBatisNet.DataMapper.Test.csproj?rev=178821&r1=178820&r2=178821&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/IBatisNet.DataMapper.Test.csproj (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/IBatisNet.DataMapper.Test.csproj Fri May 27 13:51:53 2005
@@ -155,7 +155,7 @@
                 />
                 <File
                     RelPath = "bin\Debug\SqlMap_MSSQL_SqlClient.config"
-                    BuildAction = "None"
+                    BuildAction = "EmbeddedResource"
                 />
                 <File
                     RelPath = "bin\Debug\SqlMap_MySql_ByteFx.config"
@@ -667,6 +667,11 @@
                 />
                 <File
                     RelPath = "NUnit\SqlMapTests\ComplexTypeTest.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "NUnit\SqlMapTests\ConfigureTest.cs"
                     SubType = "Code"
                     BuildAction = "Compile"
                 />

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/BaseTest.cs
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/BaseTest.cs?rev=178821&r1=178820&r2=178821&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/BaseTest.cs (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/BaseTest.cs Fri May 27 13:51:53 2005
@@ -30,7 +30,7 @@
 		/// <summary>
 		/// The sqlMap
 		/// </summary>
-		protected static SqlMapper sqlMap;
+		protected static SqlMapper sqlMap = null;
 		private static readonly ILog _logger = LogManager.GetLogger( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType );
 
 		protected static string ScriptDirectory = null;

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/CacheTest.cs
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/CacheTest.cs?rev=178821&r1=178820&r2=178821&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/CacheTest.cs (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/CacheTest.cs Fri May 27 13:51:53 2005
@@ -22,7 +22,7 @@
 	[TestFixture] 
 	public class CacheTest : BaseTest
 	{
-		#region SetUp & TearDown
+			#region SetUp & TearDown
 
 		/// <summary>
 		/// SetUp

Added: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ConfigureTest.cs
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ConfigureTest.cs?rev=178821&view=auto
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ConfigureTest.cs (added)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ConfigureTest.cs Fri May 27 13:51:53 2005
@@ -0,0 +1,166 @@
+using System;
+using System.Configuration;
+using System.IO;
+using System.Reflection;
+using IBatisNet.Common.Utilities;
+using IBatisNet.DataMapper; // SqlMap API
+using NUnit.Framework;
+
+namespace IBatisNet.DataMapper.Test.NUnit.SqlMapTests
+{
+	/// <summary>
+	/// Description résumée de ConfigureTest.
+	/// </summary>
+	[TestFixture] 
+	public class ConfigureTest : BaseTest
+	{
+		private string _fileName = string.Empty;
+
+		#region SetUp
+
+		/// <summary>
+		/// SetUp
+		/// </summary>
+		[SetUp] 
+		public void Init() 
+		{
+			_fileName = "sqlmap" + "_" + ConfigurationSettings.AppSettings["database"] + "_" + ConfigurationSettings.AppSettings["providerType"] + ".config";
+		}
+		#endregion 
+
+		#region Relatives Path tests
+
+		/// <summary>
+		/// Test Configure via relative path
+		/// </summary>
+		[Test] 
+		public void TestConfigureRelativePath()
+		{
+			SqlMapper sqlMap = SqlMapper.Configure( _fileName );
+			Assert.IsNotNull(sqlMap);
+
+		}
+
+		/// <summary>
+		/// Test ConfigureAndWatch via relative path
+		/// </summary>
+		[Test] 
+		public void TestConfigureAndWatchRelativePath()
+		{
+			ConfigureHandler handler = new ConfigureHandler(Configure);
+			sqlMap = SqlMapper.ConfigureAndWatch( _fileName , handler);
+			Assert.IsNotNull(sqlMap);
+
+		}
+		#endregion 
+
+		#region Absolute Paths
+
+		/// <summary>
+		/// Test Configure via absolute path
+		/// </summary>
+		[Test] 
+		public void TestConfigureAbsolutePath()
+		{
+			_fileName = Resources.BaseDirectory+Path.DirectorySeparatorChar+_fileName;
+			SqlMapper sqlMap = SqlMapper.Configure( _fileName );
+			Assert.IsNotNull(sqlMap);
+		}
+
+		/// <summary>
+		/// Test Configure via absolute path with file suffix
+		/// </summary>
+		[Test] 
+		public void TestConfigureAbsolutePathWithFileSuffix()
+		{
+			_fileName = "file://"+Resources.BaseDirectory+Path.DirectorySeparatorChar+_fileName;
+			SqlMapper sqlMap = SqlMapper.Configure( _fileName );
+			Assert.IsNotNull(sqlMap);
+		}
+
+		/// <summary>
+		/// Test Configure via absolute path via FileIfno
+		/// </summary>
+		[Test] 
+		public void TestConfigureAbsolutePathViaFileInfo()
+		{
+			_fileName = Resources.BaseDirectory+Path.DirectorySeparatorChar+_fileName;
+			FileInfo fileInfo = new FileInfo(_fileName);
+			SqlMapper sqlMap = SqlMapper.Configure( fileInfo );
+			Assert.IsNotNull(sqlMap);
+		}
+
+		/// <summary>
+		/// Test Configure via absolute path via Uri
+		/// </summary>
+		[Test] 
+		public void TestConfigureAbsolutePathViaUri()
+		{
+			_fileName = Resources.BaseDirectory+Path.DirectorySeparatorChar+_fileName;
+			Uri uri = new Uri(_fileName);
+			SqlMapper sqlMap = SqlMapper.Configure( uri );
+			Assert.IsNotNull(sqlMap);
+		}
+
+		/// <summary>
+		/// Test Configure via absolute path
+		/// </summary>
+		[Test] 
+		public void TestConfigureAndWatchAbsolutePath()
+		{
+			_fileName = Resources.BaseDirectory+Path.DirectorySeparatorChar+_fileName;
+			ConfigureHandler handler = new ConfigureHandler(Configure);
+			sqlMap = SqlMapper.ConfigureAndWatch( _fileName , handler);
+
+			Assert.IsNotNull(sqlMap);
+		}
+
+		/// <summary>
+		/// Test Configure via absolute path 
+		/// </summary>
+		[Test] 
+		public void TestConfigureAndWatchAbsolutePathWithFileSuffix()
+		{
+			_fileName = "file://"+Resources.BaseDirectory+Path.DirectorySeparatorChar+_fileName;
+			ConfigureHandler handler = new ConfigureHandler(Configure);
+			sqlMap = SqlMapper.ConfigureAndWatch( _fileName , handler);
+
+			Assert.IsNotNull(sqlMap);
+		}
+
+		/// <summary>
+		/// Test Configure via absolute path via FileInfo
+		/// </summary>
+		[Test] 
+		public void TestConfigureAndWatchAbsolutePathViaFileInfo()
+		{
+			_fileName = Resources.BaseDirectory+Path.DirectorySeparatorChar+_fileName;
+			FileInfo fileInfo = new FileInfo(_fileName);
+			ConfigureHandler handler = new ConfigureHandler(Configure);
+			sqlMap = SqlMapper.ConfigureAndWatch( fileInfo , handler);
+
+			Assert.IsNotNull(sqlMap);
+		}
+		#endregion 
+
+		#region Stream / Embedded 
+
+		/// <summary>
+		/// Test Configure via Stream/embedded
+		/// </summary>
+		[Test] 
+		public void TestConfigureViaStream()
+		{
+			// embeddedResource = "bin.Debug.SqlMap_MSSQL_SqlClient.config, IBatisNet.DataMapper.Test";
+			
+			Assembly assembly = Assembly.LoadWithPartialName ("IBatisNet.DataMapper.Test");
+			Stream stream = assembly.GetManifestResourceStream("IBatisNet.DataMapper.Test.bin.Debug.SqlMap_MSSQL_SqlClient.config");
+
+			SqlMapper sqlMap = SqlMapper.Configure( stream );
+			Assert.IsNotNull(sqlMap);
+		}
+		#endregion 
+
+
+	}
+}

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/SqlMapper.cs
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/SqlMapper.cs?rev=178821&r1=178820&r2=178821&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/SqlMapper.cs (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/SqlMapper.cs Fri May 27 13:51:53 2005
@@ -201,7 +201,15 @@
 		/// <returns>An SqlMap</returns>
 		public static SqlMapper Configure(string resource)
 		{
-			XmlDocument document = Resources.GetResourceAsXmlDocument( resource );
+			XmlDocument document = null;
+			if (resource.StartsWith("file://"))
+			{
+				document = Resources.GetUrlAsXmlDocument( resource.Remove(0, 7) );	
+			}
+			else
+			{
+				document = Resources.GetResourceAsXmlDocument( resource );	
+			}
 			return new DomSqlMapBuilder().Build( document, false);
 		}
 
@@ -209,7 +217,7 @@
 		///  Configure an SqlMap from via a stream.
 		/// </summary>
 		/// <param name="resource">A stream resource</param>
-		/// <returns></returns>
+		/// <returns>An SqlMap</returns>
 		public static SqlMapper Configure(Stream resource)
 		{
 			XmlDocument document = Resources.GetStreamAsXmlDocument( resource );
@@ -220,19 +228,22 @@
 		///  Configure an SqlMap from via a FileInfo.
 		/// </summary>
 		/// <param name="resource">A FileInfo resource</param>
-		/// <returns></returns>
+		/// <returns>An SqlMap</returns>
 		public static SqlMapper Configure(FileInfo resource)
 		{
-			XmlDocument document = new XmlDocument();
-			try
-			{
-				document.Load(resource.FullName);
-			}
-			catch(Exception e)
-			{
-				throw new ConfigurationException(string.Format("Unable to load configuration file from FileInfo. Cause : \"{0}\"",e.Message),e);
-			}
+			XmlDocument document = Resources.GetFileInfoAsXmlDocument( resource );
+			return new DomSqlMapBuilder().Build( document, false);
+		}
 
+
+		/// <summary>
+		///  Configure an SqlMap from via an Uri.
+		/// </summary>
+		/// <param name="resource">A Uri resource</param>
+		/// <returns></returns>
+		public static SqlMapper Configure(Uri resource)
+		{
+			XmlDocument document = Resources.GetUriAsXmlDocument( resource );
 			return new DomSqlMapBuilder().Build( document, false);
 		}
 
@@ -260,7 +271,15 @@
 		/// <returns>An SqlMap</returns>
 		public static SqlMapper ConfigureAndWatch( string resource, ConfigureHandler configureDelegate )
 		{
-			XmlDocument document = Resources.GetResourceAsXmlDocument( resource );
+			XmlDocument document = null;
+			if (resource.StartsWith("file://"))
+			{
+				document = Resources.GetUrlAsXmlDocument( resource.Remove(0, 7) );	
+			}
+			else
+			{
+				document = Resources.GetResourceAsXmlDocument( resource );	
+			}
 
 			ConfigWatcherHandler.ClearFilesMonitored();
 			ConfigWatcherHandler.AddFileToWatch( Resources.GetFileInfo( resource ) );
@@ -289,15 +308,7 @@
 		/// <returns>An SqlMap</returns>
 		public static SqlMapper ConfigureAndWatch( FileInfo resource, ConfigureHandler configureDelegate )
 		{
-			XmlDocument document = new XmlDocument();
-			try
-			{
-				document.Load(resource.FullName);
-			}
-			catch(Exception e)
-			{
-				throw new ConfigurationException(string.Format("Unable to load configuration file from FileInfo. Cause : \"{0}\"",e.Message),e);
-			}
+			XmlDocument document = Resources.GetFileInfoAsXmlDocument(resource);
 
 			ConfigWatcherHandler.ClearFilesMonitored();
 			ConfigWatcherHandler.AddFileToWatch( resource );