Index: Rhino.Commons.NHibernate/NHibernate/XmlIn.cs
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- Rhino.Commons.NHibernate/NHibernate/XmlIn.cs	(revision 1676)
+++ Rhino.Commons.NHibernate/NHibernate/XmlIn.cs	(working copy)
@@ -117,6 +117,7 @@
=20
 			// Generate SqlString of the form:
 			// columnName1 in (xml query) and columnName2 in (xml query) and ...
+			criteriaQuery.AddUsedTypedValues(this.GetTypedValues(criteria, =
criteriaQuery));		=09
=20
 			for (int columnIndex =3D 0; columnIndex < columnNames.Length; =
columnIndex++)
 			{
Index: Rhino.Commons.Test/NHibernate/EmbeddedDBTests.cs
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- Rhino.Commons.Test/NHibernate/EmbeddedDBTests.cs	(revision 1676)
+++ Rhino.Commons.Test/NHibernate/EmbeddedDBTests.cs	(working copy)
@@ -37,18 +37,19 @@
=20
 namespace Rhino.Commons.Test.NHibernate
 {
-    [TestFixture]
+	[TestFixture]
     public class EmbeddedDBTests : DatabaseTestFixtureBase
     {
         private ISession session;
         private SMS sms;
+	=09
+		[TestFixtureSetUp]
+		public void OneTimeTestInitialize()
+		{
+			//IntializeNHibernate(PersistenceFramework.NHibernate, =
MappingInfo.FromAssemblyContaining<SMS>());		=09
+			IntializeNHibernateAndIoC(PersistenceFramework.NHibernate, "", =
DatabaseEngine.SQLite, MappingInfo.FromAssemblyContaining<SMS>());
+		}
=20
-        [TestFixtureSetUp]
-        public void OneTimeTestInitialize()
-        {
-            IntializeNHibernate(PersistenceFramework.NHibernate, =
MappingInfo.FromAssemblyContaining<SMS>());
-        }
-
         [SetUp]
         public void TestInitialize()
         {
@@ -121,7 +122,7 @@
             Assert.AreEqual(1, msg_count);
             Assert.IsNotNull(loadedMsg);
=20
-        }
+        }	=09
     }
=20
     public class SMS
@@ -140,5 +141,5 @@
             get { return message; }
             set { message =3D value; }
         }
-    }
+    }=09
 }
Index: Rhino.Commons.Test/NHibernate/Mail.hbm.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- Rhino.Commons.Test/NHibernate/Mail.hbm.xml	(revision 0)
+++ Rhino.Commons.Test/NHibernate/Mail.hbm.xml	(revision 0)
@@ -0,0 +1,15 @@
+=EF=BB=BF<?xml version=3D'1.0' encoding=3D'utf-8'?>
+<hibernate-mapping default-lazy=3D'false'
+	assembly=3D'Rhino.Commons.Test'
+	namespace=3D'Rhino.Commons.Test.NHibernate'
+	xmlns=3D'urn:nhibernate-mapping-2.2'>
+	<class name=3D'Mail'>
+		<id name=3D'Id'
+			column=3D'id'>
+			<generator class=3D'native'/>
+		</id>
+		<property name=3D'Subject'/>
+		<many-to-one name=3D'From' cascade=3D'save-update' class=3D'Person' =
column=3D'fromPersonId' not-null=3D'false' />
+		<many-to-one name=3D'To' cascade=3D'save-update' class=3D'Person' =
column=3D'toPersonId' not-null=3D'false' />
+	</class>
+</hibernate-mapping>
\ No newline at end of file
Index: Rhino.Commons.Test/NHibernate/Person.hbm.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- Rhino.Commons.Test/NHibernate/Person.hbm.xml	(revision 0)
+++ Rhino.Commons.Test/NHibernate/Person.hbm.xml	(revision 0)
@@ -0,0 +1,21 @@
+=EF=BB=BF<?xml version=3D"1.0" encoding=3D"utf-8" ?>
+<hibernate-mapping default-lazy=3D'false'
+	assembly=3D'Rhino.Commons.Test'
+	namespace=3D'Rhino.Commons.Test.NHibernate'
+	xmlns=3D'urn:nhibernate-mapping-2.2'>
+	<class name=3D'Person'>
+		<id name=3D'Id'
+			column=3D'id'>
+			<generator class=3D'native'/>
+		</id>
+		<property name=3D'Name'/>	=09
+		<bag name=3D'MailReceived' inverse=3D'true'>		=09
+			<key column=3D'mailRevicedId' />
+			<one-to-many class=3D'Mail' />
+		</bag>
+		<bag name=3D'MailSent' inverse=3D'true'>
+			<key column=3D'mailSentId' />
+			<one-to-many class=3D'Mail' />
+		</bag>	=09
+	</class>
+</hibernate-mapping>
\ No newline at end of file
Index: Rhino.Commons.Test/NHibernate/XmlInFixture.cs
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- Rhino.Commons.Test/NHibernate/XmlInFixture.cs	(revision 0)
+++ Rhino.Commons.Test/NHibernate/XmlInFixture.cs	(revision 0)
@@ -0,0 +1,187 @@
+namespace Rhino.Commons.Test.NHibernate
+{
+	using System;
+	using System.Collections.Generic;
+	using System.IO;
+	using Commons.ForTesting;=09
+	using MbUnit.Framework;
+	using global::NHibernate;
+	using global::NHibernate.Criterion;
+
+	[TestFixture]
+	public class XmlInFixture : DatabaseTestFixtureBase
+	{
+		private ISession session;
+		private Mail mailFromAdamToJane;
+		private Mail mailFromBobToJane;
+		private Person adam;
+		private Person jane;
+		private Person bob;
+
+		public string NHibernateWindsorFilePath
+		{
+			get
+			{
+				return
+					Path.GetFullPath(
+						Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
+									 @"ForTesting\Windsor-NH.config"));
+			}
+		}
+
+		[TestFixtureSetUp]
+		public void OneTimeTestInitialize()
+		{
+			IntializeNHibernateAndIoC(PersistenceFramework.NHibernate, =
NHibernateWindsorFilePath, DatabaseEngine.MsSql2005,
+									  "Test", MappingInfo.FromAssemblyContaining<Mail>());
+		}
+
+
+		[SetUp]
+		public void TestInitialize()
+		{
+			jane =3D new Person {Name =3D "Jane"};
+			adam =3D new Person {Name =3D "Adam"};
+			bob =3D new Person {Name =3D "Bob"};
+
+			session =3D CurrentContext.CreateSession();
+
+			mailFromAdamToJane =3D new Mail();
+			mailFromAdamToJane.Subject =3D "Bella vez";
+			mailFromAdamToJane.From =3D adam;
+			mailFromAdamToJane.To =3D jane;
+			session.Save(mailFromAdamToJane);
+
+			mailFromBobToJane =3D new Mail();
+			mailFromBobToJane.From =3D bob;
+			mailFromBobToJane.To =3D jane;
+			mailFromBobToJane.Subject =3D "Hello...";
+			session.Save(mailFromBobToJane);
+		}
+
+		[Test]
+		public void WithEntities()
+		{
+			System.Collections.IEnumerable persons =3D =
session.CreateCriteria(typeof (Person)).List<Person>();
+
+			Assert.AreEqual(2,
+			                session.CreateCriteria(typeof (Mail))
+			                	.Add(XmlIn.Create("To", persons, 1))
+								.List<Mail>()
+			                	.Count);
+		}
+
+		[Test]
+		public void WithValues()
+		{
+			int[] persons =3D new int[] {0, 1, 2};
+
+			Assert.AreEqual(1,
+			                session.CreateCriteria(typeof (Mail))
+			                	.Add(XmlIn.Create("From.Id", persons, 1))
+								.List<Mail>()
+			                	.Count);
+		}
+
+		[Test]
+		public void WithEntitiesAndNoResults()
+		{		=09
+			IList<Person> justBob =3D new List<Person>();
+			justBob.Add(bob);
+
+			Assert.AreEqual(0,
+							session.CreateCriteria(typeof(Mail))
+			                	.Add(XmlIn.Create("To", justBob))
+			                	.List<Mail>()
+			                	.Count);
+		}
+
+		[Test]
+		public void TwoXmlIn()
+		{
+			System.Collections.IEnumerable persons =3D =
session.CreateCriteria(typeof (Person)).List<Person>();
+
+			Assert.AreEqual(2,
+							session.CreateCriteria(typeof(Mail))
+			                	.Add(Restrictions.And(XmlIn.Create("From", persons, =
1),
+			                	                      XmlIn.Create("To", persons, =
1)))
+								.List<Mail>().Count);
+		}
+
+		[Test]
+		public void XmlInNotUseXml()
+		{
+			System.Collections.IEnumerable persons =3D =
session.CreateCriteria(typeof(Person)).List<Person>();
+
+			Assert.AreEqual(2,
+							session.CreateCriteria(typeof(Mail))
+								.Add(XmlIn.Create("To", persons))
+								.List<Mail>()
+								.Count);
+		}
+	}
+
+	public class Mail
+	{
+		private int id;
+		private string subject;
+		private Person from;
+		private Person to;
+
+		public int Id
+		{
+			get { return id; }
+			set { id =3D value; }
+		}
+
+		public string Subject
+		{
+			get { return subject; }
+			set { subject =3D value; }
+		}
+
+		public Person From
+		{
+			get { return from; }
+			set { from =3D value; }
+		}
+
+		public Person To
+		{
+			get { return to; }
+			set { to =3D value; }
+		}
+	}
+
+	public class Person
+	{
+		private int id;
+		private string name;
+		private IList<Mail> mailSent =3D new List<Mail>();
+		private IList<Mail> mailReceived =3D new List<Mail>();
+
+		public int Id
+		{
+			get { return id; }
+			set { id =3D value; }
+		}
+
+		public string Name
+		{
+			get { return name; }
+			set { name =3D value; }
+		}
+
+		public IList<Mail> MailSent
+		{
+			get { return mailSent; }
+			set { mailSent =3D value; }
+		}
+
+		public IList<Mail> MailReceived
+		{
+			get { return mailReceived; }
+			set { mailReceived =3D value; }
+		}
+	}
+}
\ No newline at end of file

Property changes on: Rhino.Commons.Test\NHibernate\XmlInFixture.cs
___________________________________________________________________
Added: svn:mergeinfo

Index: Rhino.Commons.Test/Rhino.Commons.Test-vs2008.csproj
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- Rhino.Commons.Test/Rhino.Commons.Test-vs2008.csproj	(revision 1676)
+++ Rhino.Commons.Test/Rhino.Commons.Test-vs2008.csproj	(working copy)
@@ -249,6 +249,8 @@
     <Content =
Include=3D"Facilities\MutlipleUnitOfWorkArtifacts\Database2.cfg.xml">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </Content>
+    <EmbeddedResource Include=3D"NHibernate\Mail.hbm.xml" />
+    <EmbeddedResource Include=3D"NHibernate\Person.hbm.xml" />
     <EmbeddedResource =
Include=3D"Facilities\MutlipleUnitOfWorkArtifacts\DomainObjectFromDatabas=
e1.hbm.xml">
     </EmbeddedResource>
     <EmbeddedResource =
Include=3D"Facilities\MutlipleUnitOfWorkArtifacts\DomainObjectFromDatabas=
e2.hbm.xml">
@@ -293,6 +295,7 @@
     <Compile Include=3D"NHibernate\EmbeddedDBTests.cs" />
     <Compile Include=3D"Logging\ActiveLoggerFilterScopeTests.cs" />
     <Compile Include=3D"NHibernate\FuturesFixture.cs" />
+    <Compile Include=3D"NHibernate\XmlInFixture.cs" />
     <Compile Include=3D"Repository\ActiveRecordRepositoryTests.cs" />
     <Compile =
Include=3D"Repository\NHibernateRepositoryProjectionTests.cs" />
     <Compile Include=3D"Repository\NHibernateRepositoryTests.cs" />
@@ -360,4 +363,4 @@
   <Target Name=3D"AfterBuild">
   </Target>
   -->
-</Project>
+</Project>
\ No newline at end of file
