folder renaming

This commit is contained in:
Steve Bohlen
2012-12-23 08:07:45 -05:00
parent 617ee3fe0f
commit fde548385d
103 changed files with 8105 additions and 8105 deletions

View File

@@ -1,25 +1,25 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Reflection;
[assembly: AssemblyTitle("Spring.ConversationWA.NH32. NHibernate 3.2 support.")]
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Reflection;
[assembly: AssemblyTitle("Spring.ConversationWA.NH32. NHibernate 3.2 support.")]
[assembly: AssemblyDescription("Interfaces and classes that provide 'Conversation Workaround' support in Spring.Net")]

View File

@@ -1,173 +1,173 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using Spring.Context.Support;
using Common.Logging;
using Spring.Data.NHibernate.Support;
using System.Web.UI;
using Spring.Context;
namespace Spring.ConversationWA.HttpModule
{
/// <summary>
/// HttpModule for ending Conversations with Timeout exceeded.
/// </summary>
/// <author>Hailton de Castro</author>
public class ConversationModule : IHttpModule, IApplicationContextAware
{
private static readonly ILog LOG = LogManager.GetLogger(typeof(ConversationModule));
private IList<String> conversationManagerName;
/// <summary>
/// The Names of the <see cref="IConversationManager"/>s in the <see cref="IApplicationContext"/>
/// </summary>
public IList<String> ConversationManagerNameList
{
get { return conversationManagerName; }
set { conversationManagerName = value; }
}
#region IHttpModule Members
/// <summary>
/// Add PostRequestHandlerExecute event to clear conversations with timeout exceeded.
/// </summary>
/// <param name="context"></param>
public void Init(HttpApplication context)
{
context.PreRequestHandlerExecute += context_PreRequestHandlerExecute;
context.PostRequestHandlerExecute += context_PostRequestHandlerExecute;
context.EndRequest += context_EndRequest;
}
/// <summary>
/// Disposes of the resources (other than memory) used by the module that implements <see cref="T:System.Web.IHttpModule"/>.
/// </summary>
public void Dispose()
{
//noop
}
void context_PreRequestHandlerExecute(object sender, EventArgs e)
{
if (HttpContext.Current.Handler is Page)
{
Page page = (Page)HttpContext.Current.Handler;
page.Unload += new EventHandler(page_Unload);
if (HttpContext.Current.Session != null)
{
if (LOG.IsDebugEnabled) LOG.Debug("context_PreRequestHandlerExecute: Processing HttpContext.Current.Session");
foreach (String convMngName in this.ConversationManagerNameList)
{
if (LOG.IsDebugEnabled) LOG.Debug(string.Format("context_PreRequestHandlerExecute: Processing ConversationManager: {0}", convMngName));
IConversationManager convMng = (IConversationManager)this.applicationContext.GetObject(convMngName);
convMng.EndOnTimeOut();
convMng.FreeEnded();
}
}
else
{
if (LOG.IsDebugEnabled) LOG.Debug("context_PreRequestHandlerExecute: no HttpContext.Current.Session found.");
}
}
}
/// <summary>
/// Handles the Unload event of the page control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
/// <remarks>
/// Necessary for Redirect or Abort for any reason.
/// </remarks>
void page_Unload(object sender, EventArgs e)
{
if (LOG.IsDebugEnabled) LOG.Debug("page_Unload HttpContext.Current.Session is null: " + (HttpContext.Current.Session == null));
foreach (String convMngName in this.ConversationManagerNameList)
{
if (LOG.IsDebugEnabled) LOG.Debug(string.Format("page_Unload: Processing ConversationManager: {0}", convMngName));
IConversationManager convMng = (IConversationManager)this.applicationContext.GetObject(convMngName);
convMng.EndOnTimeOut();
convMng.FreeEnded();
convMng.PauseConversations();
}
}
void context_EndRequest(object sender, EventArgs e)
{
if (LOG.IsDebugEnabled) LOG.Debug("context_EndRequest HttpContext.Current.Session is null: " + (HttpContext.Current.Session == null));
}
void context_PostRequestHandlerExecute(object sender, EventArgs e)
{
if (LOG.IsDebugEnabled) LOG.Debug("context_PostRequestHandlerExecute HttpContext.Current.Session is null: " + (HttpContext.Current.Session == null));
if (HttpContext.Current.Session != null)
{
}
}
#endregion
#region IApplicationContextAware Members
private IApplicationContext applicationContext;
/// <summary>
/// Sets the <see cref="Spring.Context.IApplicationContext"/> that this
/// object runs in.
/// </summary>
/// <value></value>
/// <remarks>
/// <p>
/// Used to obtain the instances of <see cref="IConversationManager"/>
/// </p>
/// <p>
/// Invoked after population of normal object properties but before an
/// init callback such as
/// <see cref="Spring.Objects.Factory.IInitializingObject"/>'s
/// <see cref="Spring.Objects.Factory.IInitializingObject.AfterPropertiesSet"/>
/// or a custom init-method. Invoked after the setting of any
/// <see cref="Spring.Context.IResourceLoaderAware"/>'s
/// <see cref="Spring.Context.IResourceLoaderAware.ResourceLoader"/>
/// property.
/// </p>
/// </remarks>
/// <exception cref="Spring.Context.ApplicationContextException">
/// In the case of application context initialization errors.
/// </exception>
/// <exception cref="Spring.Objects.ObjectsException">
/// If thrown by any application context methods.
/// </exception>
/// <exception cref="Spring.Objects.Factory.ObjectInitializationException"/>
public IApplicationContext ApplicationContext
{
set { this.applicationContext = value; }
}
#endregion
}
}
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using Spring.Context.Support;
using Common.Logging;
using Spring.Data.NHibernate.Support;
using System.Web.UI;
using Spring.Context;
namespace Spring.ConversationWA.HttpModule
{
/// <summary>
/// HttpModule for ending Conversations with Timeout exceeded.
/// </summary>
/// <author>Hailton de Castro</author>
public class ConversationModule : IHttpModule, IApplicationContextAware
{
private static readonly ILog LOG = LogManager.GetLogger(typeof(ConversationModule));
private IList<String> conversationManagerName;
/// <summary>
/// The Names of the <see cref="IConversationManager"/>s in the <see cref="IApplicationContext"/>
/// </summary>
public IList<String> ConversationManagerNameList
{
get { return conversationManagerName; }
set { conversationManagerName = value; }
}
#region IHttpModule Members
/// <summary>
/// Add PostRequestHandlerExecute event to clear conversations with timeout exceeded.
/// </summary>
/// <param name="context"></param>
public void Init(HttpApplication context)
{
context.PreRequestHandlerExecute += context_PreRequestHandlerExecute;
context.PostRequestHandlerExecute += context_PostRequestHandlerExecute;
context.EndRequest += context_EndRequest;
}
/// <summary>
/// Disposes of the resources (other than memory) used by the module that implements <see cref="T:System.Web.IHttpModule"/>.
/// </summary>
public void Dispose()
{
//noop
}
void context_PreRequestHandlerExecute(object sender, EventArgs e)
{
if (HttpContext.Current.Handler is Page)
{
Page page = (Page)HttpContext.Current.Handler;
page.Unload += new EventHandler(page_Unload);
if (HttpContext.Current.Session != null)
{
if (LOG.IsDebugEnabled) LOG.Debug("context_PreRequestHandlerExecute: Processing HttpContext.Current.Session");
foreach (String convMngName in this.ConversationManagerNameList)
{
if (LOG.IsDebugEnabled) LOG.Debug(string.Format("context_PreRequestHandlerExecute: Processing ConversationManager: {0}", convMngName));
IConversationManager convMng = (IConversationManager)this.applicationContext.GetObject(convMngName);
convMng.EndOnTimeOut();
convMng.FreeEnded();
}
}
else
{
if (LOG.IsDebugEnabled) LOG.Debug("context_PreRequestHandlerExecute: no HttpContext.Current.Session found.");
}
}
}
/// <summary>
/// Handles the Unload event of the page control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
/// <remarks>
/// Necessary for Redirect or Abort for any reason.
/// </remarks>
void page_Unload(object sender, EventArgs e)
{
if (LOG.IsDebugEnabled) LOG.Debug("page_Unload HttpContext.Current.Session is null: " + (HttpContext.Current.Session == null));
foreach (String convMngName in this.ConversationManagerNameList)
{
if (LOG.IsDebugEnabled) LOG.Debug(string.Format("page_Unload: Processing ConversationManager: {0}", convMngName));
IConversationManager convMng = (IConversationManager)this.applicationContext.GetObject(convMngName);
convMng.EndOnTimeOut();
convMng.FreeEnded();
convMng.PauseConversations();
}
}
void context_EndRequest(object sender, EventArgs e)
{
if (LOG.IsDebugEnabled) LOG.Debug("context_EndRequest HttpContext.Current.Session is null: " + (HttpContext.Current.Session == null));
}
void context_PostRequestHandlerExecute(object sender, EventArgs e)
{
if (LOG.IsDebugEnabled) LOG.Debug("context_PostRequestHandlerExecute HttpContext.Current.Session is null: " + (HttpContext.Current.Session == null));
if (HttpContext.Current.Session != null)
{
}
}
#endregion
#region IApplicationContextAware Members
private IApplicationContext applicationContext;
/// <summary>
/// Sets the <see cref="Spring.Context.IApplicationContext"/> that this
/// object runs in.
/// </summary>
/// <value></value>
/// <remarks>
/// <p>
/// Used to obtain the instances of <see cref="IConversationManager"/>
/// </p>
/// <p>
/// Invoked after population of normal object properties but before an
/// init callback such as
/// <see cref="Spring.Objects.Factory.IInitializingObject"/>'s
/// <see cref="Spring.Objects.Factory.IInitializingObject.AfterPropertiesSet"/>
/// or a custom init-method. Invoked after the setting of any
/// <see cref="Spring.Context.IResourceLoaderAware"/>'s
/// <see cref="Spring.Context.IResourceLoaderAware.ResourceLoader"/>
/// property.
/// </p>
/// </remarks>
/// <exception cref="Spring.Context.ApplicationContextException">
/// In the case of application context initialization errors.
/// </exception>
/// <exception cref="Spring.Objects.ObjectsException">
/// If thrown by any application context methods.
/// </exception>
/// <exception cref="Spring.Objects.Factory.ObjectInitializationException"/>
public IApplicationContext ApplicationContext
{
set { this.applicationContext = value; }
}
#endregion
}
}

View File

@@ -1,112 +1,112 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using NHibernate;
namespace Spring.ConversationWA
{
/// <summary>
/// manager for Conversations.
/// </summary>
/// <author>Hailton de Castro</author>
public interface IConversationManager
{
/// <summary>
/// Returns the conversation if it is still alive, otherwise it returns null.
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
IConversationState GetConversationById(String id);
/// <summary>
/// Ends all conversations with the timeout exceeded.
/// </summary>
void EndOnTimeOut();
/// <summary>
/// Close IDbConnections for <see cref="IConversationState"/> that
/// use 'session-per-conversation'. It calls
/// <see cref="IConversationState.PauseConversation"/> in all conversations.
/// </summary>
void PauseConversations();
/// <summary>
/// Release the ended conversations And removes them.
/// If the conversation supports 'session-per-conversation', also close the session.
/// </summary>
void FreeEnded();
/// <summary>
/// Add conversation. If <see cref="IConversationManager"/> is null
/// it resolves to 'this'.
/// </summary>
/// <param name="conversation"></param>
/// <exception cref="InvalidOperationException">
/// If <paramref name="conversation"/> already has another manager.
/// </exception>
void AddConversation(IConversationState conversation);
/// <summary>
/// Makes the 'root conversation' of <paramref name="conversation"/>
/// the current active conversation and open/reopen the
/// <see cref="IConversationState.RootSessionPerConversation"/> if
/// the conversation supports 'session-per-conversation'. Close all
/// the connection for all session before.
/// If <see cref="EndPaused"/> is <c>true</c> will end all
/// paused conversations.
/// </summary>
void SetActiveConversation(IConversationState conversation);
/// <summary>
/// Returns the active conversation if exists, otherwise returns null.
/// It depends on <see cref="SetActiveConversation"/>
/// </summary>
/// <returns></returns>
IConversationState ActiveConversation{ get; }
/// <summary>
/// <para>If this is non-null run pattern 'session-per-conversation'.
/// Must be the same SessionFactory of the managed conversations.
/// </para>
/// </summary>
ISessionFactory SessionFactory { get; }
/// <summary>
/// Ends the "paused conversations" in call to <see cref="ActiveConversation"/>.
/// Important: Unexpected behavior may occur if there are nested conversations,
/// as in <see cref="IConversationState.StartResumeConversation"/> only the current conversation and its parents
/// are started, the 'conversations children' remain paused, so these will be ended.
/// Defaul value: <c>false</c>.
/// </summary>
/// <remarks>
/// <para>When it is true, "start/resume a conversation" will cause the other to be
/// ended and cleaned up.
/// </para>
/// <para>This is useful to avoid memory leak where there are many conversations.
/// This leak can be very considerable, as the conversation may keep a "NHibernate session"
/// that can contain many objects in its cache from the database queries.
/// </para>
/// </remarks>
bool EndPaused { get; set; }
}
}
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using NHibernate;
namespace Spring.ConversationWA
{
/// <summary>
/// manager for Conversations.
/// </summary>
/// <author>Hailton de Castro</author>
public interface IConversationManager
{
/// <summary>
/// Returns the conversation if it is still alive, otherwise it returns null.
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
IConversationState GetConversationById(String id);
/// <summary>
/// Ends all conversations with the timeout exceeded.
/// </summary>
void EndOnTimeOut();
/// <summary>
/// Close IDbConnections for <see cref="IConversationState"/> that
/// use 'session-per-conversation'. It calls
/// <see cref="IConversationState.PauseConversation"/> in all conversations.
/// </summary>
void PauseConversations();
/// <summary>
/// Release the ended conversations And removes them.
/// If the conversation supports 'session-per-conversation', also close the session.
/// </summary>
void FreeEnded();
/// <summary>
/// Add conversation. If <see cref="IConversationManager"/> is null
/// it resolves to 'this'.
/// </summary>
/// <param name="conversation"></param>
/// <exception cref="InvalidOperationException">
/// If <paramref name="conversation"/> already has another manager.
/// </exception>
void AddConversation(IConversationState conversation);
/// <summary>
/// Makes the 'root conversation' of <paramref name="conversation"/>
/// the current active conversation and open/reopen the
/// <see cref="IConversationState.RootSessionPerConversation"/> if
/// the conversation supports 'session-per-conversation'. Close all
/// the connection for all session before.
/// If <see cref="EndPaused"/> is <c>true</c> will end all
/// paused conversations.
/// </summary>
void SetActiveConversation(IConversationState conversation);
/// <summary>
/// Returns the active conversation if exists, otherwise returns null.
/// It depends on <see cref="SetActiveConversation"/>
/// </summary>
/// <returns></returns>
IConversationState ActiveConversation{ get; }
/// <summary>
/// <para>If this is non-null run pattern 'session-per-conversation'.
/// Must be the same SessionFactory of the managed conversations.
/// </para>
/// </summary>
ISessionFactory SessionFactory { get; }
/// <summary>
/// Ends the "paused conversations" in call to <see cref="ActiveConversation"/>.
/// Important: Unexpected behavior may occur if there are nested conversations,
/// as in <see cref="IConversationState.StartResumeConversation"/> only the current conversation and its parents
/// are started, the 'conversations children' remain paused, so these will be ended.
/// Defaul value: <c>false</c>.
/// </summary>
/// <remarks>
/// <para>When it is true, "start/resume a conversation" will cause the other to be
/// ended and cleaned up.
/// </para>
/// <para>This is useful to avoid memory leak where there are many conversations.
/// This leak can be very considerable, as the conversation may keep a "NHibernate session"
/// that can contain many objects in its cache from the database queries.
/// </para>
/// </remarks>
bool EndPaused { get; set; }
}
}

View File

@@ -1,192 +1,192 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using System.Collections;
using NHibernate;
using Spring.Data.Common;
namespace Spring.ConversationWA
{
/// <summary>
/// Port to conversation. If the object is not found in the current
/// conversation, will be tried on the parent if the parent is
/// not null.
/// </summary>
/// <exception cref="InvalidOperationException">
/// If <see cref="Id"/> is different from spring name for this instance.
/// </exception>
/// <author>Hailton de Castro</author>
public interface IConversationState: IDictionary<String, Object>
{
/// <summary>
/// Conversation id.
/// </summary>
String Id { get; set; }
/// <summary>
/// Starts or resumes the conversation and the <see cref="ParentConversation"/>.
/// <para>If <see cref="RootSessionPerConversation"/> is not null, so
/// <see cref="ISessionFactory.GetCurrentSession"/> is called to
/// Raise SessionHolder for make the reconnection.
/// </para>
/// <para>Make <see cref="IsNew"/> return false.
/// </para>
/// <para>Update the <see cref="LastAccess"/>.
/// </para>
/// </summary>
/// <exception cref="InvalidOperationException">
/// <list type="bullet">
/// <item>If this conversation is ended.
/// </item>
/// <item>If <see cref="RootSessionPerConversation"/> is not null and
/// <see cref="RootSessionPerConversation"/> different from
/// <see cref="ISessionFactory.GetCurrentSession"/>
/// </item>
/// </list>
/// </exception>
void StartResumeConversation();
/// <summary>
/// Return true until <see cref="StartResumeConversation"/> is called.
/// </summary>
bool IsNew { get; }
/// <summary>
/// Ends the conversation. End each of the 'inner conversations' in
/// <see cref="InnerConversations"/>. Returns false if the
/// conversation and all <see cref="IConversationState"/> of
/// <see cref="InnerConversations"/> has already been ended.
/// </summary>
/// <returns></returns>
/// <exception cref="InvalidOperationException">
/// <list type="bullet">
/// <item>If <see cref="System.Web.HttpContext.Current"/>.
/// <see cref="System.Web.SessionState.HttpSessionState">Session</see>["spring.objects"]
/// is null.
/// </item>
/// <item>The 'spring session scopes' are not located in the key
/// 'spring.objects' of HttpSessionState.
/// </item>
/// </list>
/// </exception>
void EndConversation();
/// <summary>
/// Return true if this conversation is ended.
/// </summary>
bool Ended { get; }
/// <summary>
/// Inner conversation. After added if the <see cref="ParentConversation"/>
/// is null it will resolve to 'this'.
/// </summary>
/// <exception cref="InvalidOperationException">at
/// <see cref="T:System.Collections.Generic.ICollection`1.Add(T)"/>,
/// <see cref="T:System.Collections.Generic.IList`1.this[int]"/>,
/// <see cref="T:System.Collections.Generic.IList`1.Insert(int, T)"/>
/// if Circular Dependency is detected.</exception>
IList<IConversationState> InnerConversations { get; }
/// <summary>
/// Conversation parent.
/// </summary>
/// <exception cref="InvalidOperationException">
/// <list type="bullet">
/// <item>If this conversation already has a different parent.
/// </item>
/// <item>If this Conversation is not new.
/// </item>
/// <item>If Circular Dependency is detected.
/// </item>
/// <item>The Parent conversation is not new.
/// </item>
/// </list>
/// </exception>
IConversationState ParentConversation { get; set;}
/// <summary>
/// TimeOut for the conversation in milliseconds.
/// If <c>0</c> TimeOut will be ignored.
/// </summary>
Int32 TimeOut { get; set; }
/// <summary>
/// Last acces for a value into this Conversation or Inner Conversation.
/// Reset to DateTime.Now each time <see cref="StartResumeConversation()"/>
/// is called.
/// </summary>
DateTime LastAccess { get; set; }
/// <summary>
/// Conversation Manager. When this is setted if
/// <see cref="IConversationManager.GetConversationById(String)"/>
/// returns null so AddConversation is called.
/// </summary>
IConversationManager ConversationManager { get; set; }
/// <summary>
/// <para><see cref="ISession"/> that is stored in the root conversation.
/// </para>
/// <para>
/// <see cref="ConversationManager"/> must support 'session-per-conversation'.
/// </para>
/// </summary>
ISession RootSessionPerConversation { get; set; }
/// <summary>
/// <para>If this is non-null run pattern 'session-per-conversation'.
/// It also depends on <see cref="DbProvider"/> and <see cref="ConversationManager"/>.
/// <see cref="ConversationManager"/> must support ConversationManager.
/// </para>
/// </summary>
ISessionFactory SessionFactory { get; }
/// <summary>
/// <para>If this is non-null run pattern 'session-per-conversation'.
/// It also depends on <see cref="SessionFactory"/> and <see cref="ConversationManager"/>.
/// <see cref="ConversationManager"/> must support ConversationManager.
/// </para>
/// </summary>
IDbProvider DbProvider { get; }
/// <summary>
/// Indicates that the conversation is paused.
/// </summary>
bool IsPaused { get; }
/// <summary>
/// Starts or resumes the conversation and each 'inner conversation' in
/// <see cref="InnerConversations"/>.
/// It is not about 'Session-per-conversation' because it is done by
/// <see cref="IConversationManager"/>.
/// </summary>
void PauseConversation();
}
}
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using System.Collections;
using NHibernate;
using Spring.Data.Common;
namespace Spring.ConversationWA
{
/// <summary>
/// Port to conversation. If the object is not found in the current
/// conversation, will be tried on the parent if the parent is
/// not null.
/// </summary>
/// <exception cref="InvalidOperationException">
/// If <see cref="Id"/> is different from spring name for this instance.
/// </exception>
/// <author>Hailton de Castro</author>
public interface IConversationState: IDictionary<String, Object>
{
/// <summary>
/// Conversation id.
/// </summary>
String Id { get; set; }
/// <summary>
/// Starts or resumes the conversation and the <see cref="ParentConversation"/>.
/// <para>If <see cref="RootSessionPerConversation"/> is not null, so
/// <see cref="ISessionFactory.GetCurrentSession"/> is called to
/// Raise SessionHolder for make the reconnection.
/// </para>
/// <para>Make <see cref="IsNew"/> return false.
/// </para>
/// <para>Update the <see cref="LastAccess"/>.
/// </para>
/// </summary>
/// <exception cref="InvalidOperationException">
/// <list type="bullet">
/// <item>If this conversation is ended.
/// </item>
/// <item>If <see cref="RootSessionPerConversation"/> is not null and
/// <see cref="RootSessionPerConversation"/> different from
/// <see cref="ISessionFactory.GetCurrentSession"/>
/// </item>
/// </list>
/// </exception>
void StartResumeConversation();
/// <summary>
/// Return true until <see cref="StartResumeConversation"/> is called.
/// </summary>
bool IsNew { get; }
/// <summary>
/// Ends the conversation. End each of the 'inner conversations' in
/// <see cref="InnerConversations"/>. Returns false if the
/// conversation and all <see cref="IConversationState"/> of
/// <see cref="InnerConversations"/> has already been ended.
/// </summary>
/// <returns></returns>
/// <exception cref="InvalidOperationException">
/// <list type="bullet">
/// <item>If <see cref="System.Web.HttpContext.Current"/>.
/// <see cref="System.Web.SessionState.HttpSessionState">Session</see>["spring.objects"]
/// is null.
/// </item>
/// <item>The 'spring session scopes' are not located in the key
/// 'spring.objects' of HttpSessionState.
/// </item>
/// </list>
/// </exception>
void EndConversation();
/// <summary>
/// Return true if this conversation is ended.
/// </summary>
bool Ended { get; }
/// <summary>
/// Inner conversation. After added if the <see cref="ParentConversation"/>
/// is null it will resolve to 'this'.
/// </summary>
/// <exception cref="InvalidOperationException">at
/// <see cref="T:System.Collections.Generic.ICollection`1.Add(T)"/>,
/// <see cref="T:System.Collections.Generic.IList`1.this[int]"/>,
/// <see cref="T:System.Collections.Generic.IList`1.Insert(int, T)"/>
/// if Circular Dependency is detected.</exception>
IList<IConversationState> InnerConversations { get; }
/// <summary>
/// Conversation parent.
/// </summary>
/// <exception cref="InvalidOperationException">
/// <list type="bullet">
/// <item>If this conversation already has a different parent.
/// </item>
/// <item>If this Conversation is not new.
/// </item>
/// <item>If Circular Dependency is detected.
/// </item>
/// <item>The Parent conversation is not new.
/// </item>
/// </list>
/// </exception>
IConversationState ParentConversation { get; set;}
/// <summary>
/// TimeOut for the conversation in milliseconds.
/// If <c>0</c> TimeOut will be ignored.
/// </summary>
Int32 TimeOut { get; set; }
/// <summary>
/// Last acces for a value into this Conversation or Inner Conversation.
/// Reset to DateTime.Now each time <see cref="StartResumeConversation()"/>
/// is called.
/// </summary>
DateTime LastAccess { get; set; }
/// <summary>
/// Conversation Manager. When this is setted if
/// <see cref="IConversationManager.GetConversationById(String)"/>
/// returns null so AddConversation is called.
/// </summary>
IConversationManager ConversationManager { get; set; }
/// <summary>
/// <para><see cref="ISession"/> that is stored in the root conversation.
/// </para>
/// <para>
/// <see cref="ConversationManager"/> must support 'session-per-conversation'.
/// </para>
/// </summary>
ISession RootSessionPerConversation { get; set; }
/// <summary>
/// <para>If this is non-null run pattern 'session-per-conversation'.
/// It also depends on <see cref="DbProvider"/> and <see cref="ConversationManager"/>.
/// <see cref="ConversationManager"/> must support ConversationManager.
/// </para>
/// </summary>
ISessionFactory SessionFactory { get; }
/// <summary>
/// <para>If this is non-null run pattern 'session-per-conversation'.
/// It also depends on <see cref="SessionFactory"/> and <see cref="ConversationManager"/>.
/// <see cref="ConversationManager"/> must support ConversationManager.
/// </para>
/// </summary>
IDbProvider DbProvider { get; }
/// <summary>
/// Indicates that the conversation is paused.
/// </summary>
bool IsPaused { get; }
/// <summary>
/// Starts or resumes the conversation and each 'inner conversation' in
/// <see cref="InnerConversations"/>.
/// It is not about 'Session-per-conversation' because it is done by
/// <see cref="IConversationManager"/>.
/// </summary>
void PauseConversation();
}
}

View File

@@ -1,450 +1,450 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
#region Imports
using System;
using System.Diagnostics;
using System.Reflection;
using System.Text;
using Common.Logging;
using NHibernate;
using Spring.Threading;
using Spring.Transaction.Support;
using Spring.Util;
using System.Data;
using Spring.ConversationWA;
using System.Collections.Generic;
#endregion
namespace Spring.Data.NHibernate.Support
{
///<summary>
///Based on <see cref="Spring.Data.NHibernate.Support.SessionScope"/>
/// for support of 'session-per-conversation' pattern.
///</summary>
///<author>Hailton de Castro</author>
[Serializable]
public class SessionPerConversationScope : IDisposable
{
#region Fields
/// <summary>
/// The logging instance.
/// </summary>
protected readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private readonly SessionPerConversationScopeSettings settings;
// Keys into LogicalThreadContext for runtime values.
private readonly string ISOPEN_KEY;
private readonly string OPENER_CONVERSATION_ID_KEY;
#endregion
#region Constructor (s)
/// <summary>
/// Initializes a new instance of the <see cref="SessionPerConversationScopeSettings"/> class.
/// Uses default values for <see cref="SessionPerConversationScopeSettings"/>
/// </summary>
public SessionPerConversationScope()
: this(new SessionPerConversationScopeSettings())
{
// noop
}
/// <summary>
/// Initializes a new instance of the <see cref="SessionPerConversationScopeSettings"/> class.
/// </summary>
/// <param name="entityInterceptor">Specify the <see cref="IInterceptor"/> to be set on each session provided by this <see cref="SessionPerConversationScope"/> instance.</param>
/// <param name="defaultFlushMode">Specify the flushmode to be applied on each session provided by this <see cref="SessionPerConversationScope"/> instance.
/// </param>
public SessionPerConversationScope(IInterceptor entityInterceptor, FlushMode defaultFlushMode)
: this(new SessionPerConversationScopeSettings(entityInterceptor, defaultFlushMode))
{
// noop
}
/// <summary>
/// Initializes a new instance of the <see cref="SessionScope"/> class.
/// </summary>
/// <param name="settings">An <see cref="SessionPerConversationScopeSettings"/> instance holding the scope configuration</param>
public SessionPerConversationScope(SessionPerConversationScopeSettings settings)
{
log = LogManager.GetLogger(this.GetType());
this.settings = settings;
ISOPEN_KEY = UniqueKey.GetInstanceScopedString(this, "IsOpen");
OPENER_CONVERSATION_ID_KEY = UniqueKey.GetInstanceScopedString(this, "OpenerConversationId");
}
#endregion
#region Properties
/// <summary>
/// Gets the flushmode to be applied on each newly created session.
/// </summary>
/// <remarks>
/// This property defaults to <see cref="FlushMode.Never"/> to ensure that modifying objects outside the boundaries
/// of a transaction will not be persisted. It is recommended to not change this value but wrap any modifying operation
/// within a transaction.
/// </remarks>
public FlushMode DefaultFlushMode
{
get { return settings.DefaultFlushMode; }
}
/// <summary>
/// Get the configured EntityInterceptor
/// </summary>
public IInterceptor EntityInterceptor
{
get
{
return settings.EntityInterceptor;
}
}
/// <summary>
/// Id for conversation that open the Session.
/// </summary>
public String OpenerConversationId
{
get
{
return (String)LogicalThreadContext.GetData(OPENER_CONVERSATION_ID_KEY);
}
set
{
LogicalThreadContext.SetData(OPENER_CONVERSATION_ID_KEY, value);
}
}
/// <summary>
/// Gets a flag, whether this scope is in "open" state on the current logical thread.
/// </summary>
public bool IsOpen
{
get
{
return (null != LogicalThreadContext.GetData(ISOPEN_KEY));
}
}
/// <summary>
/// Sets a flag, whether this scope is in "open" state on the current logical thread.
/// </summary>
/// <param name="isOpen"></param>
private void SetOpen(bool isOpen)
{
if (isOpen)
{
LogicalThreadContext.SetData(ISOPEN_KEY, ISOPEN_KEY);
}
else
{
LogicalThreadContext.FreeNamedDataSlot(ISOPEN_KEY);
}
}
#endregion
#region IDisposable Members
/// <summary>
/// NOOP.
/// </summary>
public virtual void Dispose()
{
//no OP
}
#endregion
#region Methods
/// <summary>
/// Open a new session or reconect the
/// <see cref="IConversationState.RootSessionPerConversation"/> in <paramref name="activeConversation"/>.
/// Participating in an existing session registed with <see cref="TransactionSynchronizationManager"/>
/// is not alowed.
/// </summary>
/// <param name="activeConversation"></param>
/// <param name="allManagedConversation"></param>
/// <exception cref="InvalidOperationException">
/// <list type="bullet">
/// <item>If there is another conversation with a <see cref="ISession"/> with opened
/// <see cref="IDbConnection"/>.</item>
/// <item>If attempting to participate in an existing NHibernate <see cref="ISessionFactory"/>
/// managed by <see cref="TransactionSynchronizationManager"/>.
/// </item>
/// </list>
/// </exception>
public void Open(IConversationState activeConversation, ICollection<IConversationState> allManagedConversation)
{
bool isDebugEnabled = log.IsDebugEnabled;
if (IsOpen)
{
if (activeConversation.Id != this.OpenerConversationId)
{
throw new InvalidOperationException("There is another conversation with a ISession with opened IDbConnection.");
}
else
{
if (isDebugEnabled) log.Debug(String.Format("SessionPerConversationScope is already open for this conversation: Id:'{0}'.", activeConversation.Id));
}
}
else
{
if (activeConversation.SessionFactory != null)
{
if (isDebugEnabled) log.Debug(String.Format("activeConversation with 'session-per-conversation': Id:'{0}'.", activeConversation.Id));
// single session mode
if (TransactionSynchronizationManager.HasResource(activeConversation.SessionFactory))
{
// Do not modify the Session: just set the participate flag.
if (isDebugEnabled) log.Debug("Participating in existing NHibernate SessionFactory IS NOT ALLOWED.");
throw new InvalidOperationException("Participating in existing NHibernate SessionFactory IS NOT ALLOWED.");
}
else
{
if (isDebugEnabled) log.Debug("Opening single NHibernate Session in SessionPerConversationScope");
TransactionSynchronizationManager.BindResource(activeConversation.SessionFactory, new LazySessionPerConversationHolder(this, activeConversation, allManagedConversation));
SetOpen(true);
this.OpenerConversationId = activeConversation.Id;
}
}
else
{
if (isDebugEnabled) log.Debug(String.Format("activeConversation with NO 'session-per-conversation': Id:'{0}'.", activeConversation.Id));
}
}
}
/// <summary>
/// Close the current view's session and unregisters
/// from <see cref="TransactionSynchronizationManager"/>.
/// </summary>
/// <param name="sessionFactory">The session factory that <see cref="IConversationState"/> on <paramref name="allManagedConversation"/> use</param>
/// <param name="allManagedConversation">A list of conversations which the session can be closed or disconnected</param>
/// <exception cref="InvalidOperationException">
/// <list type="bullet">
/// <item>If start/resume a conversation from a
/// <see cref="IConversationManager"/> when exists a different <see cref="IConversationManager"/>
/// with open <see cref="ISession"/> registered on <see cref="TransactionSynchronizationManager"/>
/// </item>
/// <item>If the holder on <see cref="TransactionSynchronizationManager"/>, is not a <see cref="LazySessionPerConversationHolder"/>.</item>
/// </list>
/// </exception>
public void Close(ISessionFactory sessionFactory, ICollection<IConversationState> allManagedConversation)
{
bool isDebugEnabled = log.IsDebugEnabled;
if (isDebugEnabled) log.Debug("Trying to close SessionPerConversationScope");
if (IsOpen)
{
try
{
DoClose(sessionFactory, allManagedConversation, isDebugEnabled);
}
finally
{
SetOpen(false);
this.OpenerConversationId = null;
}
}
else
{
if (isDebugEnabled) log.Debug("No open conversation - doing nothing");
}
}
private void DoClose(ISessionFactory sessionFactory, ICollection<IConversationState> allManagedConversation, bool isLogDebugEnabled)
{
// single session mode
if (isLogDebugEnabled) log.Debug("DoClose: Closing SessionPerConversationScope");
Object holderObj = TransactionSynchronizationManager.UnbindResource(sessionFactory);
if (holderObj != null)
{
if (holderObj is LazySessionPerConversationHolder)
{
LazySessionPerConversationHolder holder = (LazySessionPerConversationHolder)holderObj;
if (holder.Owner == this)
{
holder.CloseAll();
}
else
{
throw new InvalidOperationException(
"Can not close session beacause 'holder owner' is not 'this'." +
" You are trying to start/resume a conversation from a" +
" IConversationManager when exists a diferent IConversationManager " +
" with open ISession registered on TransactionSynchronizationManager.");
}
}
else
{
throw new InvalidOperationException("Can not close session beacause holder, on TransactionSynchronizationManager, is not a LazySessionPerConversationHolder.");
}
}
else
{
if (isLogDebugEnabled) log.Warn("DoClose: TransactionSynchronizationManager.UnbindResource(sessionFactory) has no SessionHolder. Should I throw error?");
}
}
private void DoOpenSession(IConversationState conversation)
{
lock (this)
{
ISession session = null;
if (conversation.RootSessionPerConversation == null)
{
//new session
session = (
(EntityInterceptor != null)
? conversation.SessionFactory.OpenSession(EntityInterceptor)
: conversation.SessionFactory.OpenSession()
);
conversation.RootSessionPerConversation = session;
}
else
{
//reconnect existing one.
if (conversation.DbProvider != null)
{
if (log.IsDebugEnabled) log.Debug(String.Format("DoOpenSession: Conversation has a DbProvider: Id='{0}'", conversation.Id));
if (!conversation.RootSessionPerConversation.IsConnected)
{
if (log.IsDebugEnabled) log.Debug(String.Format("DoOpenSession: Conversation is not Connected: Id='{0}'", conversation.Id));
IDbConnection connection = conversation.DbProvider.CreateConnection();
connection.Open();
conversation.RootSessionPerConversation.Reconnect(connection);
}
else
{
if (log.IsDebugEnabled) log.Debug(String.Format("DoOpenSession: Conversation is already Connected: Id='{0}'", conversation.Id));
}
}
else
{
if (log.IsDebugEnabled) log.Debug(String.Format("DoOpenSession: Conversation has NO DbProvider: Id='{0}'", conversation.Id));
conversation.RootSessionPerConversation.Reconnect();
}
session = conversation.RootSessionPerConversation;
}
session.FlushMode = DefaultFlushMode;
}
}
#endregion
#region LazySessionPerConversationHolder utility class
/// <summary>
/// This sessionHolder creates a session for the active conversation only if it is
/// needed (<see cref="Spring.ConversationWA.IConversationState.StartResumeConversation"/>).
/// </summary>
/// <remarks>
/// Although a NHibernateSession defers creation of db-connections until they are really
/// needed, instantiation a session is still more expensive than using LazySessionHolder.
/// </remarks>
private class LazySessionPerConversationHolder : SessionHolder
{
private readonly ILog log = LogManager.GetLogger(typeof(LazySessionPerConversationHolder));
private SessionPerConversationScope owner;
public SessionPerConversationScope Owner
{
get { return owner; }
}
IConversationState activeConversation;
ICollection<IConversationState> allManagedConversation;
/// <summary>
/// Initialize a new instance.
/// </summary>
public LazySessionPerConversationHolder(SessionPerConversationScope owner, IConversationState activeConversation, ICollection<IConversationState> allManagedConversation)
{
if (log.IsDebugEnabled) log.Debug("Created LazyReconnectableSessionHolder");
this.owner = owner;
this.activeConversation = activeConversation;
this.allManagedConversation = allManagedConversation;
}
/// <summary>
/// Create a new session on demand
/// </summary>
protected override void EnsureInitialized()
{
if (this.activeConversation.RootSessionPerConversation == null || !this.activeConversation.RootSessionPerConversation.IsConnected)
{
if (log.IsDebugEnabled) log.Debug("EnsureInitialized: 'session-per-conversation' instance requested - opening new session");
owner.DoOpenSession(this.activeConversation);
AddSession(this.activeConversation.RootSessionPerConversation);
}
}
public void CloseAll()
{
foreach (IConversationState conversation in this.allManagedConversation)
{
this.CloseConversation(conversation);
}
owner = null;
this.activeConversation = null;
this.allManagedConversation = null;
if (log.IsDebugEnabled) log.Debug("CloseAll LazySessionPerConversationHolder");
}
private void CloseConversation(IConversationState conversation)
{
if (log.IsDebugEnabled) log.Debug(String.Format("CloseConversation: Id='{0}'", conversation.Id));
if (conversation.RootSessionPerConversation != null)
{
ISession tmpSession = conversation.RootSessionPerConversation;
if (conversation.Ended)
{
SessionFactoryUtils.CloseSession(tmpSession);
conversation.RootSessionPerConversation = null;
}
else
{
if (tmpSession.IsConnected)
tmpSession.Disconnect();
}
RemoveSession(tmpSession);
}
if (log.IsDebugEnabled) log.Debug("Closed LazySessionPerConversationHolder");
}
}
#endregion
}
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
#region Imports
using System;
using System.Diagnostics;
using System.Reflection;
using System.Text;
using Common.Logging;
using NHibernate;
using Spring.Threading;
using Spring.Transaction.Support;
using Spring.Util;
using System.Data;
using Spring.ConversationWA;
using System.Collections.Generic;
#endregion
namespace Spring.Data.NHibernate.Support
{
///<summary>
///Based on <see cref="Spring.Data.NHibernate.Support.SessionScope"/>
/// for support of 'session-per-conversation' pattern.
///</summary>
///<author>Hailton de Castro</author>
[Serializable]
public class SessionPerConversationScope : IDisposable
{
#region Fields
/// <summary>
/// The logging instance.
/// </summary>
protected readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private readonly SessionPerConversationScopeSettings settings;
// Keys into LogicalThreadContext for runtime values.
private readonly string ISOPEN_KEY;
private readonly string OPENER_CONVERSATION_ID_KEY;
#endregion
#region Constructor (s)
/// <summary>
/// Initializes a new instance of the <see cref="SessionPerConversationScopeSettings"/> class.
/// Uses default values for <see cref="SessionPerConversationScopeSettings"/>
/// </summary>
public SessionPerConversationScope()
: this(new SessionPerConversationScopeSettings())
{
// noop
}
/// <summary>
/// Initializes a new instance of the <see cref="SessionPerConversationScopeSettings"/> class.
/// </summary>
/// <param name="entityInterceptor">Specify the <see cref="IInterceptor"/> to be set on each session provided by this <see cref="SessionPerConversationScope"/> instance.</param>
/// <param name="defaultFlushMode">Specify the flushmode to be applied on each session provided by this <see cref="SessionPerConversationScope"/> instance.
/// </param>
public SessionPerConversationScope(IInterceptor entityInterceptor, FlushMode defaultFlushMode)
: this(new SessionPerConversationScopeSettings(entityInterceptor, defaultFlushMode))
{
// noop
}
/// <summary>
/// Initializes a new instance of the <see cref="SessionScope"/> class.
/// </summary>
/// <param name="settings">An <see cref="SessionPerConversationScopeSettings"/> instance holding the scope configuration</param>
public SessionPerConversationScope(SessionPerConversationScopeSettings settings)
{
log = LogManager.GetLogger(this.GetType());
this.settings = settings;
ISOPEN_KEY = UniqueKey.GetInstanceScopedString(this, "IsOpen");
OPENER_CONVERSATION_ID_KEY = UniqueKey.GetInstanceScopedString(this, "OpenerConversationId");
}
#endregion
#region Properties
/// <summary>
/// Gets the flushmode to be applied on each newly created session.
/// </summary>
/// <remarks>
/// This property defaults to <see cref="FlushMode.Never"/> to ensure that modifying objects outside the boundaries
/// of a transaction will not be persisted. It is recommended to not change this value but wrap any modifying operation
/// within a transaction.
/// </remarks>
public FlushMode DefaultFlushMode
{
get { return settings.DefaultFlushMode; }
}
/// <summary>
/// Get the configured EntityInterceptor
/// </summary>
public IInterceptor EntityInterceptor
{
get
{
return settings.EntityInterceptor;
}
}
/// <summary>
/// Id for conversation that open the Session.
/// </summary>
public String OpenerConversationId
{
get
{
return (String)LogicalThreadContext.GetData(OPENER_CONVERSATION_ID_KEY);
}
set
{
LogicalThreadContext.SetData(OPENER_CONVERSATION_ID_KEY, value);
}
}
/// <summary>
/// Gets a flag, whether this scope is in "open" state on the current logical thread.
/// </summary>
public bool IsOpen
{
get
{
return (null != LogicalThreadContext.GetData(ISOPEN_KEY));
}
}
/// <summary>
/// Sets a flag, whether this scope is in "open" state on the current logical thread.
/// </summary>
/// <param name="isOpen"></param>
private void SetOpen(bool isOpen)
{
if (isOpen)
{
LogicalThreadContext.SetData(ISOPEN_KEY, ISOPEN_KEY);
}
else
{
LogicalThreadContext.FreeNamedDataSlot(ISOPEN_KEY);
}
}
#endregion
#region IDisposable Members
/// <summary>
/// NOOP.
/// </summary>
public virtual void Dispose()
{
//no OP
}
#endregion
#region Methods
/// <summary>
/// Open a new session or reconect the
/// <see cref="IConversationState.RootSessionPerConversation"/> in <paramref name="activeConversation"/>.
/// Participating in an existing session registed with <see cref="TransactionSynchronizationManager"/>
/// is not alowed.
/// </summary>
/// <param name="activeConversation"></param>
/// <param name="allManagedConversation"></param>
/// <exception cref="InvalidOperationException">
/// <list type="bullet">
/// <item>If there is another conversation with a <see cref="ISession"/> with opened
/// <see cref="IDbConnection"/>.</item>
/// <item>If attempting to participate in an existing NHibernate <see cref="ISessionFactory"/>
/// managed by <see cref="TransactionSynchronizationManager"/>.
/// </item>
/// </list>
/// </exception>
public void Open(IConversationState activeConversation, ICollection<IConversationState> allManagedConversation)
{
bool isDebugEnabled = log.IsDebugEnabled;
if (IsOpen)
{
if (activeConversation.Id != this.OpenerConversationId)
{
throw new InvalidOperationException("There is another conversation with a ISession with opened IDbConnection.");
}
else
{
if (isDebugEnabled) log.Debug(String.Format("SessionPerConversationScope is already open for this conversation: Id:'{0}'.", activeConversation.Id));
}
}
else
{
if (activeConversation.SessionFactory != null)
{
if (isDebugEnabled) log.Debug(String.Format("activeConversation with 'session-per-conversation': Id:'{0}'.", activeConversation.Id));
// single session mode
if (TransactionSynchronizationManager.HasResource(activeConversation.SessionFactory))
{
// Do not modify the Session: just set the participate flag.
if (isDebugEnabled) log.Debug("Participating in existing NHibernate SessionFactory IS NOT ALLOWED.");
throw new InvalidOperationException("Participating in existing NHibernate SessionFactory IS NOT ALLOWED.");
}
else
{
if (isDebugEnabled) log.Debug("Opening single NHibernate Session in SessionPerConversationScope");
TransactionSynchronizationManager.BindResource(activeConversation.SessionFactory, new LazySessionPerConversationHolder(this, activeConversation, allManagedConversation));
SetOpen(true);
this.OpenerConversationId = activeConversation.Id;
}
}
else
{
if (isDebugEnabled) log.Debug(String.Format("activeConversation with NO 'session-per-conversation': Id:'{0}'.", activeConversation.Id));
}
}
}
/// <summary>
/// Close the current view's session and unregisters
/// from <see cref="TransactionSynchronizationManager"/>.
/// </summary>
/// <param name="sessionFactory">The session factory that <see cref="IConversationState"/> on <paramref name="allManagedConversation"/> use</param>
/// <param name="allManagedConversation">A list of conversations which the session can be closed or disconnected</param>
/// <exception cref="InvalidOperationException">
/// <list type="bullet">
/// <item>If start/resume a conversation from a
/// <see cref="IConversationManager"/> when exists a different <see cref="IConversationManager"/>
/// with open <see cref="ISession"/> registered on <see cref="TransactionSynchronizationManager"/>
/// </item>
/// <item>If the holder on <see cref="TransactionSynchronizationManager"/>, is not a <see cref="LazySessionPerConversationHolder"/>.</item>
/// </list>
/// </exception>
public void Close(ISessionFactory sessionFactory, ICollection<IConversationState> allManagedConversation)
{
bool isDebugEnabled = log.IsDebugEnabled;
if (isDebugEnabled) log.Debug("Trying to close SessionPerConversationScope");
if (IsOpen)
{
try
{
DoClose(sessionFactory, allManagedConversation, isDebugEnabled);
}
finally
{
SetOpen(false);
this.OpenerConversationId = null;
}
}
else
{
if (isDebugEnabled) log.Debug("No open conversation - doing nothing");
}
}
private void DoClose(ISessionFactory sessionFactory, ICollection<IConversationState> allManagedConversation, bool isLogDebugEnabled)
{
// single session mode
if (isLogDebugEnabled) log.Debug("DoClose: Closing SessionPerConversationScope");
Object holderObj = TransactionSynchronizationManager.UnbindResource(sessionFactory);
if (holderObj != null)
{
if (holderObj is LazySessionPerConversationHolder)
{
LazySessionPerConversationHolder holder = (LazySessionPerConversationHolder)holderObj;
if (holder.Owner == this)
{
holder.CloseAll();
}
else
{
throw new InvalidOperationException(
"Can not close session beacause 'holder owner' is not 'this'." +
" You are trying to start/resume a conversation from a" +
" IConversationManager when exists a diferent IConversationManager " +
" with open ISession registered on TransactionSynchronizationManager.");
}
}
else
{
throw new InvalidOperationException("Can not close session beacause holder, on TransactionSynchronizationManager, is not a LazySessionPerConversationHolder.");
}
}
else
{
if (isLogDebugEnabled) log.Warn("DoClose: TransactionSynchronizationManager.UnbindResource(sessionFactory) has no SessionHolder. Should I throw error?");
}
}
private void DoOpenSession(IConversationState conversation)
{
lock (this)
{
ISession session = null;
if (conversation.RootSessionPerConversation == null)
{
//new session
session = (
(EntityInterceptor != null)
? conversation.SessionFactory.OpenSession(EntityInterceptor)
: conversation.SessionFactory.OpenSession()
);
conversation.RootSessionPerConversation = session;
}
else
{
//reconnect existing one.
if (conversation.DbProvider != null)
{
if (log.IsDebugEnabled) log.Debug(String.Format("DoOpenSession: Conversation has a DbProvider: Id='{0}'", conversation.Id));
if (!conversation.RootSessionPerConversation.IsConnected)
{
if (log.IsDebugEnabled) log.Debug(String.Format("DoOpenSession: Conversation is not Connected: Id='{0}'", conversation.Id));
IDbConnection connection = conversation.DbProvider.CreateConnection();
connection.Open();
conversation.RootSessionPerConversation.Reconnect(connection);
}
else
{
if (log.IsDebugEnabled) log.Debug(String.Format("DoOpenSession: Conversation is already Connected: Id='{0}'", conversation.Id));
}
}
else
{
if (log.IsDebugEnabled) log.Debug(String.Format("DoOpenSession: Conversation has NO DbProvider: Id='{0}'", conversation.Id));
conversation.RootSessionPerConversation.Reconnect();
}
session = conversation.RootSessionPerConversation;
}
session.FlushMode = DefaultFlushMode;
}
}
#endregion
#region LazySessionPerConversationHolder utility class
/// <summary>
/// This sessionHolder creates a session for the active conversation only if it is
/// needed (<see cref="Spring.ConversationWA.IConversationState.StartResumeConversation"/>).
/// </summary>
/// <remarks>
/// Although a NHibernateSession defers creation of db-connections until they are really
/// needed, instantiation a session is still more expensive than using LazySessionHolder.
/// </remarks>
private class LazySessionPerConversationHolder : SessionHolder
{
private readonly ILog log = LogManager.GetLogger(typeof(LazySessionPerConversationHolder));
private SessionPerConversationScope owner;
public SessionPerConversationScope Owner
{
get { return owner; }
}
IConversationState activeConversation;
ICollection<IConversationState> allManagedConversation;
/// <summary>
/// Initialize a new instance.
/// </summary>
public LazySessionPerConversationHolder(SessionPerConversationScope owner, IConversationState activeConversation, ICollection<IConversationState> allManagedConversation)
{
if (log.IsDebugEnabled) log.Debug("Created LazyReconnectableSessionHolder");
this.owner = owner;
this.activeConversation = activeConversation;
this.allManagedConversation = allManagedConversation;
}
/// <summary>
/// Create a new session on demand
/// </summary>
protected override void EnsureInitialized()
{
if (this.activeConversation.RootSessionPerConversation == null || !this.activeConversation.RootSessionPerConversation.IsConnected)
{
if (log.IsDebugEnabled) log.Debug("EnsureInitialized: 'session-per-conversation' instance requested - opening new session");
owner.DoOpenSession(this.activeConversation);
AddSession(this.activeConversation.RootSessionPerConversation);
}
}
public void CloseAll()
{
foreach (IConversationState conversation in this.allManagedConversation)
{
this.CloseConversation(conversation);
}
owner = null;
this.activeConversation = null;
this.allManagedConversation = null;
if (log.IsDebugEnabled) log.Debug("CloseAll LazySessionPerConversationHolder");
}
private void CloseConversation(IConversationState conversation)
{
if (log.IsDebugEnabled) log.Debug(String.Format("CloseConversation: Id='{0}'", conversation.Id));
if (conversation.RootSessionPerConversation != null)
{
ISession tmpSession = conversation.RootSessionPerConversation;
if (conversation.Ended)
{
SessionFactoryUtils.CloseSession(tmpSession);
conversation.RootSessionPerConversation = null;
}
else
{
if (tmpSession.IsConnected)
tmpSession.Disconnect();
}
RemoveSession(tmpSession);
}
if (log.IsDebugEnabled) log.Debug("Closed LazySessionPerConversationHolder");
}
}
#endregion
}
}

View File

@@ -1,118 +1,118 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using NHibernate;
using Spring.Util;
namespace Spring.Data.NHibernate.Support
{
/// <summary>
/// Setting for <see cref="SessionPerConversationScope"/>
/// </summary>
/// <author>Hailton de Castro</author>
[Serializable]
public class SessionPerConversationScopeSettings
{
/// <summary>
/// Default value for <see cref="DefaultFlushMode"/> property.
/// </summary>
public static readonly FlushMode FLUSHMODE_DEFAULT = FlushMode.Never;
private IInterceptor entityInterceptor;
private FlushMode defaultFlushMode;
/// <summary>
/// Initialize a new instance of <see cref="SessionScopeSettings"/> with default values.
/// </summary>
/// <remarks>
/// Calling this constructor from your derived class leaves <see cref="EntityInterceptor"/>
/// uninitialized. See <see cref="ResolveEntityInterceptor"/> for more.
/// </remarks>
public SessionPerConversationScopeSettings()
{
this.entityInterceptor = null;
this.defaultFlushMode = FLUSHMODE_DEFAULT;
}
/// <summary>
/// Initialize a new instance of <see cref="SessionPerConversationScopeSettings"/> with the given values and references.
/// </summary>
/// <param name="entityInterceptor">
/// Specify the <see cref="IInterceptor"/> to be set on each session provided by the <see cref="SessionPerConversationScope"/> instance.
/// </param>
/// <param name="defaultFlushMode">
/// Specify the flushmode to be applied on each session provided by the <see cref="SessionScope"/> instance.
/// </param>
/// <remarks>
/// Calling this constructor marks all properties initialized.
/// </remarks>
public SessionPerConversationScopeSettings(IInterceptor entityInterceptor, FlushMode defaultFlushMode)
{
this.entityInterceptor = entityInterceptor;
this.defaultFlushMode = defaultFlushMode;
}
#region Properties
/// <summary>
/// Gets the configured <see cref="IInterceptor"/> instance to be used.
/// </summary>
/// <remarks>
/// </remarks>
public virtual IInterceptor EntityInterceptor
{
get
{
return entityInterceptor;
}
set
{
entityInterceptor = value;
}
}
/// <summary>
/// Gets or Sets the flushmode to be applied on each newly created session.
/// </summary>
/// <remarks>
/// This property defaults to <see cref="FlushMode.Never"/> to ensure that modifying objects outside the boundaries
/// of a transaction will not be persisted. It is recommended to not change this value but wrap any modifying operation
/// within a transaction.
/// </remarks>
public FlushMode DefaultFlushMode
{
get { return defaultFlushMode; }
set { defaultFlushMode = value; }
}
#endregion
/// <summary>
/// Override this method to resolve an <see cref="IInterceptor"/> instance according to your chosen strategy.
/// </summary>
protected virtual IInterceptor ResolveEntityInterceptor()
{
return null;
}
}
}
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using NHibernate;
using Spring.Util;
namespace Spring.Data.NHibernate.Support
{
/// <summary>
/// Setting for <see cref="SessionPerConversationScope"/>
/// </summary>
/// <author>Hailton de Castro</author>
[Serializable]
public class SessionPerConversationScopeSettings
{
/// <summary>
/// Default value for <see cref="DefaultFlushMode"/> property.
/// </summary>
public static readonly FlushMode FLUSHMODE_DEFAULT = FlushMode.Never;
private IInterceptor entityInterceptor;
private FlushMode defaultFlushMode;
/// <summary>
/// Initialize a new instance of <see cref="SessionScopeSettings"/> with default values.
/// </summary>
/// <remarks>
/// Calling this constructor from your derived class leaves <see cref="EntityInterceptor"/>
/// uninitialized. See <see cref="ResolveEntityInterceptor"/> for more.
/// </remarks>
public SessionPerConversationScopeSettings()
{
this.entityInterceptor = null;
this.defaultFlushMode = FLUSHMODE_DEFAULT;
}
/// <summary>
/// Initialize a new instance of <see cref="SessionPerConversationScopeSettings"/> with the given values and references.
/// </summary>
/// <param name="entityInterceptor">
/// Specify the <see cref="IInterceptor"/> to be set on each session provided by the <see cref="SessionPerConversationScope"/> instance.
/// </param>
/// <param name="defaultFlushMode">
/// Specify the flushmode to be applied on each session provided by the <see cref="SessionScope"/> instance.
/// </param>
/// <remarks>
/// Calling this constructor marks all properties initialized.
/// </remarks>
public SessionPerConversationScopeSettings(IInterceptor entityInterceptor, FlushMode defaultFlushMode)
{
this.entityInterceptor = entityInterceptor;
this.defaultFlushMode = defaultFlushMode;
}
#region Properties
/// <summary>
/// Gets the configured <see cref="IInterceptor"/> instance to be used.
/// </summary>
/// <remarks>
/// </remarks>
public virtual IInterceptor EntityInterceptor
{
get
{
return entityInterceptor;
}
set
{
entityInterceptor = value;
}
}
/// <summary>
/// Gets or Sets the flushmode to be applied on each newly created session.
/// </summary>
/// <remarks>
/// This property defaults to <see cref="FlushMode.Never"/> to ensure that modifying objects outside the boundaries
/// of a transaction will not be persisted. It is recommended to not change this value but wrap any modifying operation
/// within a transaction.
/// </remarks>
public FlushMode DefaultFlushMode
{
get { return defaultFlushMode; }
set { defaultFlushMode = value; }
}
#endregion
/// <summary>
/// Override this method to resolve an <see cref="IInterceptor"/> instance according to your chosen strategy.
/// </summary>
protected virtual IInterceptor ResolveEntityInterceptor()
{
return null;
}
}
}

View File

@@ -1,102 +1,102 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{64400FF8-2E9F-4809-B5F4-0C7EB8ABFF87}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Spring</RootNamespace>
<AssemblyName>Spring.ConversationWA.NH32</AssemblyName>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>2.0</OldToolsVersion>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<TargetFrameworkSubset>
</TargetFrameworkSubset>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.Net.2008\Spring.ConversationWA.NH32\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Debug\Spring.ConversationWA.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Common.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate32\net\3.5\Iesi.Collections.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=3.2.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate32\net\3.5\NHibernate.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\CommonAssemblyInfo.cs">
<Link>CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="AssemblyInfo.cs" />
<Compile Include="ConversationWA\HttpModule\ConversationModule.cs" />
<Compile Include="ConversationWA\IConversationManager.cs" />
<Compile Include="ConversationWA\IConversationState.cs" />
<Compile Include="ConversationWA\Imple\InnerConversationList.cs" />
<Compile Include="ConversationWA\Imple\WebConversationManager.cs" />
<Compile Include="ConversationWA\Imple\WebConversationSpringState.cs" />
<Compile Include="Data\NHibernate\Support\SessionPerConversationScope.cs" />
<Compile Include="Data\NHibernate\Support\SessionPerConversationSettings.cs" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\build-support\tools\nant\schema\nant.xsd">
<Link>nant.xsd</Link>
</None>
<None Include="app.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Spring.Core\Spring.Core.2008.csproj">
<Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project>
<Name>Spring.Core.2008</Name>
</ProjectReference>
<ProjectReference Include="..\Spring.Data.NHibernate32\Spring.Data.NHibernate32.2008.csproj">
<Project>{1C8E0481-A70D-445E-AB4D-4A963CF7DC83}</Project>
<Name>Spring.Data.NHibernate32.2008</Name>
</ProjectReference>
<ProjectReference Include="..\Spring.Data\Spring.Data.2008.csproj">
<Project>{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}</Project>
<Name>Spring.Data.2008</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{64400FF8-2E9F-4809-B5F4-0C7EB8ABFF87}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Spring</RootNamespace>
<AssemblyName>Spring.ConversationWA.NH32</AssemblyName>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>2.0</OldToolsVersion>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<TargetFrameworkSubset>
</TargetFrameworkSubset>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.Net.2008\Spring.ConversationWA.NH32\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Debug\Spring.ConversationWA.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Common.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate32\net\3.5\Iesi.Collections.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=3.2.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate32\net\3.5\NHibernate.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\CommonAssemblyInfo.cs">
<Link>CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="AssemblyInfo.cs" />
<Compile Include="ConversationWA\HttpModule\ConversationModule.cs" />
<Compile Include="ConversationWA\IConversationManager.cs" />
<Compile Include="ConversationWA\IConversationState.cs" />
<Compile Include="ConversationWA\Imple\InnerConversationList.cs" />
<Compile Include="ConversationWA\Imple\WebConversationManager.cs" />
<Compile Include="ConversationWA\Imple\WebConversationSpringState.cs" />
<Compile Include="Data\NHibernate\Support\SessionPerConversationScope.cs" />
<Compile Include="Data\NHibernate\Support\SessionPerConversationSettings.cs" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\build-support\tools\nant\schema\nant.xsd">
<Link>nant.xsd</Link>
</None>
<None Include="app.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Spring.Core\Spring.Core.2008.csproj">
<Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project>
<Name>Spring.Core.2008</Name>
</ProjectReference>
<ProjectReference Include="..\Spring.Data.NHibernate32\Spring.Data.NHibernate32.2008.csproj">
<Project>{1C8E0481-A70D-445E-AB4D-4A963CF7DC83}</Project>
<Name>Spring.Data.NHibernate32.2008</Name>
</ProjectReference>
<ProjectReference Include="..\Spring.Data\Spring.Data.2008.csproj">
<Project>{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}</Project>
<Name>Spring.Data.2008</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -1,101 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{64400FF8-2E9F-4809-B5F4-0C7EB8ABFF87}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Spring</RootNamespace>
<AssemblyName>Spring.ConversationWA.NH32</AssemblyName>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>3.5</OldToolsVersion>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.Net.2010\Spring.ConversationWA.NH32\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Debug\Spring.ConversationWA.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Common.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate32\net\3.5\Iesi.Collections.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=3.2.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate32\net\3.5\NHibernate.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\CommonAssemblyInfo.cs">
<Link>CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="AssemblyInfo.cs" />
<Compile Include="ConversationWA\HttpModule\ConversationModule.cs" />
<Compile Include="ConversationWA\IConversationManager.cs" />
<Compile Include="ConversationWA\IConversationState.cs" />
<Compile Include="ConversationWA\Impl\InnerConversationList.cs" />
<Compile Include="ConversationWA\Impl\WebConversationManager.cs" />
<Compile Include="ConversationWA\Impl\WebConversationSpringState.cs" />
<Compile Include="Data\NHibernate\Support\SessionPerConversationScope.cs" />
<Compile Include="Data\NHibernate\Support\SessionPerConversationSettings.cs" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\build-support\tools\nant\schema\nant.xsd">
<Link>nant.xsd</Link>
</None>
<None Include="app.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Spring.Core\Spring.Core.2010.csproj">
<Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project>
<Name>Spring.Core.2010</Name>
</ProjectReference>
<ProjectReference Include="..\Spring.Data.NHibernate32\Spring.Data.NHibernate32.2010.csproj">
<Project>{1C8E0481-A70D-445E-AB4D-4A963CF7DC83}</Project>
<Name>Spring.Data.NHibernate32.2010</Name>
</ProjectReference>
<ProjectReference Include="..\Spring.Data\Spring.Data.2010.csproj">
<Project>{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}</Project>
<Name>Spring.Data.2010</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{64400FF8-2E9F-4809-B5F4-0C7EB8ABFF87}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Spring</RootNamespace>
<AssemblyName>Spring.ConversationWA.NH32</AssemblyName>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>3.5</OldToolsVersion>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.Net.2010\Spring.ConversationWA.NH32\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Debug\Spring.ConversationWA.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Common.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate32\net\3.5\Iesi.Collections.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=3.2.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate32\net\3.5\NHibernate.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\CommonAssemblyInfo.cs">
<Link>CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="AssemblyInfo.cs" />
<Compile Include="ConversationWA\HttpModule\ConversationModule.cs" />
<Compile Include="ConversationWA\IConversationManager.cs" />
<Compile Include="ConversationWA\IConversationState.cs" />
<Compile Include="ConversationWA\Impl\InnerConversationList.cs" />
<Compile Include="ConversationWA\Impl\WebConversationManager.cs" />
<Compile Include="ConversationWA\Impl\WebConversationSpringState.cs" />
<Compile Include="Data\NHibernate\Support\SessionPerConversationScope.cs" />
<Compile Include="Data\NHibernate\Support\SessionPerConversationSettings.cs" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\build-support\tools\nant\schema\nant.xsd">
<Link>nant.xsd</Link>
</None>
<None Include="app.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Spring.Core\Spring.Core.2010.csproj">
<Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project>
<Name>Spring.Core.2010</Name>
</ProjectReference>
<ProjectReference Include="..\Spring.Data.NHibernate32\Spring.Data.NHibernate32.2010.csproj">
<Project>{1C8E0481-A70D-445E-AB4D-4A963CF7DC83}</Project>
<Name>Spring.Data.NHibernate32.2010</Name>
</ProjectReference>
<ProjectReference Include="..\Spring.Data\Spring.Data.2010.csproj">
<Project>{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}</Project>
<Name>Spring.Data.2010</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -1,45 +1,45 @@
<?xml version="1.0" ?>
<project name="Spring.ConversationWA.NH32" default="build" xmlns="http://nant.sf.net/release/0.91-alpha2/nant.xsd">
<!--
Required properties:
* current.bin.dir - (path) root level to build to
* current.build.debug - (true|false) debug build?
* current.build.defines.csc - framework-specific build defines for C# compiler
-->
<target name="build">
<!-- copy nh libs -->
<echo message="NH Libs: ${nh32.lib.dir}" />
<copy todir="${current.bin.dir}" overwrite="true">
<fileset basedir="${nh32.lib.dir}">
<include name="**/*.dll" />
</fileset>
</copy>
<!-- build Spring.Data.NHibernate -->
<csc target="library" define="${current.build.defines.csc}"
warnaserror="true"
optimize="${build.optimize}"
debug="${current.build.debug}"
output="${current.bin.dir}/${project::get-name()}.dll"
doc="${current.bin.dir}/${project::get-name()}.xml">
<arg line="${compiler.args}"/>
<nowarn>
<warning number="${nowarn.numbers}" />
</nowarn>
<sources failonempty="true">
<include name="**/*.cs" />
<include name="../GenCommonAssemblyInfo.cs" />
</sources>
<references basedir="${current.bin.dir}">
<include name="System.Data.dll" />
<include name="System.Web.dll" />
<include name="System.EnterpriseServices.dll" />
<include name="*.dll" />
<exclude name="${project::get-name()}.dll" />
<exclude name="Spring.ConversationWA.NH*.dll" />
<exclude name="Spring.Data.NHibernate33.dll" />
</references>
</csc>
</target>
</project>
<?xml version="1.0" ?>
<project name="Spring.ConversationWA.NH32" default="build" xmlns="http://nant.sf.net/release/0.91-alpha2/nant.xsd">
<!--
Required properties:
* current.bin.dir - (path) root level to build to
* current.build.debug - (true|false) debug build?
* current.build.defines.csc - framework-specific build defines for C# compiler
-->
<target name="build">
<!-- copy nh libs -->
<echo message="NH Libs: ${nh32.lib.dir}" />
<copy todir="${current.bin.dir}" overwrite="true">
<fileset basedir="${nh32.lib.dir}">
<include name="**/*.dll" />
</fileset>
</copy>
<!-- build Spring.Data.NHibernate -->
<csc target="library" define="${current.build.defines.csc}"
warnaserror="true"
optimize="${build.optimize}"
debug="${current.build.debug}"
output="${current.bin.dir}/${project::get-name()}.dll"
doc="${current.bin.dir}/${project::get-name()}.xml">
<arg line="${compiler.args}"/>
<nowarn>
<warning number="${nowarn.numbers}" />
</nowarn>
<sources failonempty="true">
<include name="**/*.cs" />
<include name="../GenCommonAssemblyInfo.cs" />
</sources>
<references basedir="${current.bin.dir}">
<include name="System.Data.dll" />
<include name="System.Web.dll" />
<include name="System.EnterpriseServices.dll" />
<include name="*.dll" />
<exclude name="${project::get-name()}.dll" />
<exclude name="Spring.ConversationWA.NH*.dll" />
<exclude name="Spring.Data.NHibernate33.dll" />
</references>
</csc>
</target>
</project>

View File

@@ -1,3 +1,3 @@
<?xml version="1.0"?>
<configuration>
<startup/></configuration>
<?xml version="1.0"?>
<configuration>
<startup/></configuration>

View File

@@ -1,5 +1,5 @@
using System;
using System.Reflection;
[assembly: AssemblyTitle("Spring.ConversationWA.NH33. NHibernate 3.3 support.")]
using System;
using System.Reflection;
[assembly: AssemblyTitle("Spring.ConversationWA.NH33. NHibernate 3.3 support.")]
[assembly: AssemblyDescription("Interfaces and classes that provide 'Conversation Workaround' support in Spring.Net")]

View File

@@ -1,112 +1,112 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{CF375928-B6D5-485C-B04D-2BC41D9DBF1E}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Spring</RootNamespace>
<AssemblyName>Spring.ConversationWA.NH33</AssemblyName>
<TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkSubset>
</TargetFrameworkSubset>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.Net.2008\Spring.ConversationWA.NH33\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Debug\Spring.ConversationWA.NH33.XML</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Common.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate33\net\3.5\Iesi.Collections.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=3.3.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate33\net\3.5\NHibernate.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\CommonAssemblyInfo.cs">
<Link>CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\HttpModule\ConversationModule.cs">
<Link>Conversation\HttpModule\ConversationModule.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\IConversationManager.cs">
<Link>Conversation\IConversationManager.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\IConversationState.cs">
<Link>Conversation\IConversationState.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\Imple\InnerConversationList.cs">
<Link>Conversation\Imple\InnerConversationList.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\Imple\WebConversationManager.cs">
<Link>Conversation\Imple\WebConversationManager.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\Imple\WebConversationSpringState.cs">
<Link>Conversation\Imple\WebConversationSpringState.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\Data\NHibernate\Support\SessionPerConversationScope.cs">
<Link>Data\NHibernate\Support\SessionPerConversationScope.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\Data\NHibernate\Support\SessionPerConversationSettings.cs">
<Link>Data\NHibernate\Support\SessionPerConversationSettings.cs</Link>
</Compile>
<Compile Include="AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Spring.Core\Spring.Core.2008.csproj">
<Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project>
<Name>Spring.Core.2008</Name>
</ProjectReference>
<ProjectReference Include="..\Spring.Data.NHibernate33\Spring.Data.NHibernate33.2008.csproj">
<Project>{67EA5988-C54E-4348-BFFB-E4A61F26143C}</Project>
<Name>Spring.Data.NHibernate33.2008</Name>
</ProjectReference>
<ProjectReference Include="..\Spring.Data\Spring.Data.2008.csproj">
<Project>{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}</Project>
<Name>Spring.Data.2008</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{CF375928-B6D5-485C-B04D-2BC41D9DBF1E}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Spring</RootNamespace>
<AssemblyName>Spring.ConversationWA.NH33</AssemblyName>
<TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkSubset>
</TargetFrameworkSubset>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.Net.2008\Spring.ConversationWA.NH33\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Debug\Spring.ConversationWA.NH33.XML</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Common.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate33\net\3.5\Iesi.Collections.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=3.3.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate33\net\3.5\NHibernate.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\CommonAssemblyInfo.cs">
<Link>CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\HttpModule\ConversationModule.cs">
<Link>Conversation\HttpModule\ConversationModule.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\IConversationManager.cs">
<Link>Conversation\IConversationManager.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\IConversationState.cs">
<Link>Conversation\IConversationState.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\Imple\InnerConversationList.cs">
<Link>Conversation\Imple\InnerConversationList.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\Imple\WebConversationManager.cs">
<Link>Conversation\Imple\WebConversationManager.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\Imple\WebConversationSpringState.cs">
<Link>Conversation\Imple\WebConversationSpringState.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\Data\NHibernate\Support\SessionPerConversationScope.cs">
<Link>Data\NHibernate\Support\SessionPerConversationScope.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\Data\NHibernate\Support\SessionPerConversationSettings.cs">
<Link>Data\NHibernate\Support\SessionPerConversationSettings.cs</Link>
</Compile>
<Compile Include="AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Spring.Core\Spring.Core.2008.csproj">
<Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project>
<Name>Spring.Core.2008</Name>
</ProjectReference>
<ProjectReference Include="..\Spring.Data.NHibernate33\Spring.Data.NHibernate33.2008.csproj">
<Project>{67EA5988-C54E-4348-BFFB-E4A61F26143C}</Project>
<Name>Spring.Data.NHibernate33.2008</Name>
</ProjectReference>
<ProjectReference Include="..\Spring.Data\Spring.Data.2008.csproj">
<Project>{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}</Project>
<Name>Spring.Data.2008</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -1,114 +1,114 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{CF375928-B6D5-485C-B04D-2BC41D9DBF1E}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Spring</RootNamespace>
<AssemblyName>Spring.ConversationWA.NH33</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>3.5</OldToolsVersion>
<UpgradeBackupLocation />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.Net.2010\Spring.ConversationWA.NH33\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Debug\Spring.ConversationWA.NH33.XML</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Common.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate33\net\3.5\Iesi.Collections.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=3.3.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate33\net\3.5\NHibernate.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\CommonAssemblyInfo.cs">
<Link>CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\HttpModule\ConversationModule.cs">
<Link>Conversation\HttpModule\ConversationModule.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\IConversationManager.cs">
<Link>Conversation\IConversationManager.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\IConversationState.cs">
<Link>Conversation\IConversationState.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\Impl\InnerConversationList.cs">
<Link>Conversation\Impl\InnerConversationList.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\Impl\WebConversationManager.cs">
<Link>Conversation\Impl\WebConversationManager.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\Impl\WebConversationSpringState.cs">
<Link>Conversation\Impl\WebConversationSpringState.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\Data\NHibernate\Support\SessionPerConversationScope.cs">
<Link>Data\NHibernate\Support\SessionPerConversationScope.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\Data\NHibernate\Support\SessionPerConversationSettings.cs">
<Link>Data\NHibernate\Support\SessionPerConversationSettings.cs</Link>
</Compile>
<Compile Include="AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Spring.Core\Spring.Core.2010.csproj">
<Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project>
<Name>Spring.Core.2010</Name>
</ProjectReference>
<ProjectReference Include="..\Spring.Data.NHibernate33\Spring.Data.NHibernate33.2010.csproj">
<Project>{67EA5988-C54E-4348-BFFB-E4A61F26143C}</Project>
<Name>Spring.Data.NHibernate33.2010</Name>
</ProjectReference>
<ProjectReference Include="..\Spring.Data\Spring.Data.2010.csproj">
<Project>{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}</Project>
<Name>Spring.Data.2010</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{CF375928-B6D5-485C-B04D-2BC41D9DBF1E}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Spring</RootNamespace>
<AssemblyName>Spring.ConversationWA.NH33</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>3.5</OldToolsVersion>
<UpgradeBackupLocation />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.Net.2010\Spring.ConversationWA.NH33\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Debug\Spring.ConversationWA.NH33.XML</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Common.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate33\net\3.5\Iesi.Collections.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=3.3.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate33\net\3.5\NHibernate.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\CommonAssemblyInfo.cs">
<Link>CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\HttpModule\ConversationModule.cs">
<Link>Conversation\HttpModule\ConversationModule.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\IConversationManager.cs">
<Link>Conversation\IConversationManager.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\IConversationState.cs">
<Link>Conversation\IConversationState.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\Impl\InnerConversationList.cs">
<Link>Conversation\Impl\InnerConversationList.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\Impl\WebConversationManager.cs">
<Link>Conversation\Impl\WebConversationManager.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\ConversationWA\Impl\WebConversationSpringState.cs">
<Link>Conversation\Impl\WebConversationSpringState.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\Data\NHibernate\Support\SessionPerConversationScope.cs">
<Link>Data\NHibernate\Support\SessionPerConversationScope.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32\Data\NHibernate\Support\SessionPerConversationSettings.cs">
<Link>Data\NHibernate\Support\SessionPerConversationSettings.cs</Link>
</Compile>
<Compile Include="AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Spring.Core\Spring.Core.2010.csproj">
<Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project>
<Name>Spring.Core.2010</Name>
</ProjectReference>
<ProjectReference Include="..\Spring.Data.NHibernate33\Spring.Data.NHibernate33.2010.csproj">
<Project>{67EA5988-C54E-4348-BFFB-E4A61F26143C}</Project>
<Name>Spring.Data.NHibernate33.2010</Name>
</ProjectReference>
<ProjectReference Include="..\Spring.Data\Spring.Data.2010.csproj">
<Project>{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}</Project>
<Name>Spring.Data.2010</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -1,47 +1,47 @@
<?xml version="1.0" ?>
<project name="Spring.ConversationWA.NH33" default="build" xmlns="http://nant.sf.net/release/0.91-alpha2/nant.xsd">
<!--
Required properties:
* current.bin.dir - (path) root level to build to
* current.build.debug - (true|false) debug build?
* current.build.defines.csc - framework-specific build defines for C# compiler
-->
<target name="build">
<!-- copy nh libs -->
<echo message="NH Libs: ${nh33.lib.dir}" />
<copy todir="${current.bin.dir}" overwrite="true">
<fileset basedir="${nh33.lib.dir}">
<include name="**/*.dll" />
</fileset>
</copy>
<!-- build Spring.Data.NHibernate -->
<csc target="library" define="${current.build.defines.csc}"
warnaserror="true"
optimize="${build.optimize}"
debug="${current.build.debug}"
output="${current.bin.dir}/${project::get-name()}.dll"
doc="${current.bin.dir}/${project::get-name()}.xml">
<arg line="${compiler.args}"/>
<nowarn>
<warning number="${nowarn.numbers}" />
</nowarn>
<sources failonempty="true">
<include name="**/*.cs" />
<include name="../Spring.ConversationWA.NH32/**/*.cs" />
<include name="../GenCommonAssemblyInfo.cs" />
<exclude name="../Spring.ConversationWA.NH32/AssemblyInfo.cs"/>
</sources>
<references basedir="${current.bin.dir}">
<include name="System.Data.dll" />
<include name="System.Web.dll" />
<include name="System.EnterpriseServices.dll" />
<include name="*.dll" />
<exclude name="${project::get-name()}.dll" />
<exclude name="Spring.ConversationWA.NH*.dll" />
<exclude name="Spring.Data.NHibernate32.dll" />
</references>
</csc>
</target>
</project>
<?xml version="1.0" ?>
<project name="Spring.ConversationWA.NH33" default="build" xmlns="http://nant.sf.net/release/0.91-alpha2/nant.xsd">
<!--
Required properties:
* current.bin.dir - (path) root level to build to
* current.build.debug - (true|false) debug build?
* current.build.defines.csc - framework-specific build defines for C# compiler
-->
<target name="build">
<!-- copy nh libs -->
<echo message="NH Libs: ${nh33.lib.dir}" />
<copy todir="${current.bin.dir}" overwrite="true">
<fileset basedir="${nh33.lib.dir}">
<include name="**/*.dll" />
</fileset>
</copy>
<!-- build Spring.Data.NHibernate -->
<csc target="library" define="${current.build.defines.csc}"
warnaserror="true"
optimize="${build.optimize}"
debug="${current.build.debug}"
output="${current.bin.dir}/${project::get-name()}.dll"
doc="${current.bin.dir}/${project::get-name()}.xml">
<arg line="${compiler.args}"/>
<nowarn>
<warning number="${nowarn.numbers}" />
</nowarn>
<sources failonempty="true">
<include name="**/*.cs" />
<include name="../Spring.ConversationWA.NH32/**/*.cs" />
<include name="../GenCommonAssemblyInfo.cs" />
<exclude name="../Spring.ConversationWA.NH32/AssemblyInfo.cs"/>
</sources>
<references basedir="${current.bin.dir}">
<include name="System.Data.dll" />
<include name="System.Web.dll" />
<include name="System.EnterpriseServices.dll" />
<include name="*.dll" />
<exclude name="${project::get-name()}.dll" />
<exclude name="Spring.ConversationWA.NH*.dll" />
<exclude name="Spring.Data.NHibernate32.dll" />
</references>
</csc>
</target>
</project>

View File

@@ -1,3 +1,3 @@
<?xml version="1.0"?>
<configuration>
<startup/></configuration>
<?xml version="1.0"?>
<configuration>
<startup/></configuration>

View File

@@ -1,5 +1,5 @@
using System.Reflection;
using System.Runtime.CompilerServices;
[assembly: AssemblyTitle("Spring.ConversationWA.NH32 Integration Tests")]
[assembly: AssemblyDescription("Integration tests for Spring.ConversationWA.NH32.Tests assembly")]
using System.Reflection;
using System.Runtime.CompilerServices;
[assembly: AssemblyTitle("Spring.ConversationWA.NH32 Integration Tests")]
[assembly: AssemblyDescription("Integration tests for Spring.ConversationWA.NH32.Tests assembly")]

View File

@@ -1,55 +1,55 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Data;
using System.Configuration;
namespace Spring.Bsn
{
/// <summary>
/// <see cref="IConversationEvidenceBsn"/>
/// </summary>
public class ConversationEvidenceBsnImpl: IConversationEvidenceBsn
{
private String uniqueId = "";
/// <summary>
/// Create instance with unique id.
/// </summary>
public ConversationEvidenceBsnImpl()
{
uniqueId = Guid.NewGuid().ToString();
}
#region IConversationEvidenceBsn Members
/// <summary>
/// <see cref="IConversationEvidenceBsn"/>
/// </summary>
/// <returns></returns>
public String UniqueId()
{
return this.uniqueId;
}
#endregion
}
}
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Data;
using System.Configuration;
namespace Spring.Bsn
{
/// <summary>
/// <see cref="IConversationEvidenceBsn"/>
/// </summary>
public class ConversationEvidenceBsnImpl: IConversationEvidenceBsn
{
private String uniqueId = "";
/// <summary>
/// Create instance with unique id.
/// </summary>
public ConversationEvidenceBsnImpl()
{
uniqueId = Guid.NewGuid().ToString();
}
#region IConversationEvidenceBsn Members
/// <summary>
/// <see cref="IConversationEvidenceBsn"/>
/// </summary>
/// <returns></returns>
public String UniqueId()
{
return this.uniqueId;
}
#endregion
}
}

View File

@@ -1,39 +1,39 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
namespace Spring.Bsn
{
/// <summary>
/// Simulates a business infrastructure in order to demonstrate the end of
/// the conversation.
/// </summary>
public interface IConversationEvidenceBsn
{
/// <summary>
/// Return a unique id per instance.
/// </summary>
/// <returns></returns>
String UniqueId();
}
}
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
namespace Spring.Bsn
{
/// <summary>
/// Simulates a business infrastructure in order to demonstrate the end of
/// the conversation.
/// </summary>
public interface IConversationEvidenceBsn
{
/// <summary>
/// Return a unique id per instance.
/// </summary>
/// <returns></returns>
String UniqueId();
}
}

View File

@@ -1,37 +1,37 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
namespace Spring.Bsn
{
/// <summary>
/// TODO:
/// </summary>
public interface IConnectionReleaseModeIssueBsn
{
/// <summary>
/// TODO
/// </summary>
void Test();
}
}
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
namespace Spring.Bsn
{
/// <summary>
/// TODO:
/// </summary>
public interface IConnectionReleaseModeIssueBsn
{
/// <summary>
/// TODO
/// </summary>
void Test();
}
}

View File

@@ -1,83 +1,83 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using NHibernate;
using Spring.Entities;
using NUnit.Framework;
using Spring.Spring.Data.Common;
namespace Spring.Bsn
{
/// <summary>
/// Outside the "transaction boundaries", each statement
/// execution (lazy loads) was being made a call to
/// "IDbProvider.CreateConnection()". This would
/// cause a large over-reading because most of the "lazy loads" tend to
/// occur outside the "transaction boundaries".
/// The solution to this is to use "connection.release_mode" with "on_close"
/// in "HibernateProperties."
/// This test was created to show how the connection openings
/// occur in the following scenarios:
/// *Test with conversation and "connection.release_mode"
/// "auto"(ConnectionReleaseMode.AfterTransaction).
/// *Test with NO conversation and "connection.release_mode"
/// "auto"(ConnectionReleaseMode.AfterTransaction)
/// on block within the scope of "transaction boundary".
/// *Test with NO conversation and "connection.release_mode"
/// "auto"(ConnectionReleaseMode.AfterTransaction).
/// *Test with conversation and "connection.release_mode"
/// "on_close"(ConnectionReleaseMode.OnClose).
/// </summary>
public class ConnectionReleaseModeIssueBsnImpl : IConnectionReleaseModeIssueBsn
{
private ISessionFactory sessionFactory;
/// <summary>
/// SessionFactory.
/// </summary>
public ISessionFactory SessionFactory
{
get { return sessionFactory; }
set { sessionFactory = value; }
}
#region IConnectionReleaseModeIssueBsn Members
/// <summary>
/// Test.
/// </summary>
[Transaction.Interceptor.Transaction(ReadOnly=true)]
public void Test()
{
ISession sessionNoConv = this.SessionFactory.GetCurrentSession();
SPCMasterEnt masterEnt2 = sessionNoConv.Get<SPCMasterEnt>(2);
Assert.AreEqual(1, masterEnt2.SPCDetailEntList.Count, "masterEnt2.SPCDetailEntList.Count");
SPCMasterEnt masterEnt3 = sessionNoConv.Get<SPCMasterEnt>(3);
Assert.AreEqual(1, masterEnt3.SPCDetailEntList.Count, "masterEnt3.SPCDetailEntList.Count");
Assert.AreEqual(1, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
}
#endregion
}
}
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using NHibernate;
using Spring.Entities;
using NUnit.Framework;
using Spring.Spring.Data.Common;
namespace Spring.Bsn
{
/// <summary>
/// Outside the "transaction boundaries", each statement
/// execution (lazy loads) was being made a call to
/// "IDbProvider.CreateConnection()". This would
/// cause a large over-reading because most of the "lazy loads" tend to
/// occur outside the "transaction boundaries".
/// The solution to this is to use "connection.release_mode" with "on_close"
/// in "HibernateProperties."
/// This test was created to show how the connection openings
/// occur in the following scenarios:
/// *Test with conversation and "connection.release_mode"
/// "auto"(ConnectionReleaseMode.AfterTransaction).
/// *Test with NO conversation and "connection.release_mode"
/// "auto"(ConnectionReleaseMode.AfterTransaction)
/// on block within the scope of "transaction boundary".
/// *Test with NO conversation and "connection.release_mode"
/// "auto"(ConnectionReleaseMode.AfterTransaction).
/// *Test with conversation and "connection.release_mode"
/// "on_close"(ConnectionReleaseMode.OnClose).
/// </summary>
public class ConnectionReleaseModeIssueBsnImpl : IConnectionReleaseModeIssueBsn
{
private ISessionFactory sessionFactory;
/// <summary>
/// SessionFactory.
/// </summary>
public ISessionFactory SessionFactory
{
get { return sessionFactory; }
set { sessionFactory = value; }
}
#region IConnectionReleaseModeIssueBsn Members
/// <summary>
/// Test.
/// </summary>
[Transaction.Interceptor.Transaction(ReadOnly=true)]
public void Test()
{
ISession sessionNoConv = this.SessionFactory.GetCurrentSession();
SPCMasterEnt masterEnt2 = sessionNoConv.Get<SPCMasterEnt>(2);
Assert.AreEqual(1, masterEnt2.SPCDetailEntList.Count, "masterEnt2.SPCDetailEntList.Count");
SPCMasterEnt masterEnt3 = sessionNoConv.Get<SPCMasterEnt>(3);
Assert.AreEqual(1, masterEnt3.SPCDetailEntList.Count, "masterEnt3.SPCDetailEntList.Count");
Assert.AreEqual(1, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
}
#endregion
}
}

View File

@@ -1,57 +1,57 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using Spring.Web.UI;
using Spring.ConversationWA;
namespace Spring.ConversationWA
{
/// <summary>
/// Base class for test pages for test
/// <see cref="WebConversationStateTest.PatialEndConvTest()"/>.
/// </summary>
public class PatialEndConvBeginBasePage: Page
{
private IConversationState conversation;
/// <summary>
/// <see cref="IConversationState"/>
/// </summary>
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
/// <summary>
/// Common Begin.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected virtual void Page_Load(object sender, EventArgs e)
{
this.Conversation.StartResumeConversation();
Session["ConversationStr"] = this.Conversation.ToString();
}
}
}
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using Spring.Web.UI;
using Spring.ConversationWA;
namespace Spring.ConversationWA
{
/// <summary>
/// Base class for test pages for test
/// <see cref="WebConversationStateTest.PatialEndConvTest()"/>.
/// </summary>
public class PatialEndConvBeginBasePage: Page
{
private IConversationState conversation;
/// <summary>
/// <see cref="IConversationState"/>
/// </summary>
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
/// <summary>
/// Common Begin.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected virtual void Page_Load(object sender, EventArgs e)
{
this.Conversation.StartResumeConversation();
Session["ConversationStr"] = this.Conversation.ToString();
}
}
}

View File

@@ -1,55 +1,55 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using Spring.Web.UI;
using Spring.ConversationWA;
namespace Spring.ConversationWA
{
/// <summary>
/// Base class for test pages for test
/// <see cref="WebConversationStateTest.PatialEndConvTest()"/>.
/// </summary>
public abstract class PatialEndConvEndBasePage: Page
{
private IConversationState conversation;
/// <summary>
/// <see cref="IConversationState"/>
/// </summary>
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
/// <summary>
/// Common End.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public virtual void Page_Load(object sender, EventArgs e)
{
this.Conversation.EndConversation();
}
}
}
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using Spring.Web.UI;
using Spring.ConversationWA;
namespace Spring.ConversationWA
{
/// <summary>
/// Base class for test pages for test
/// <see cref="WebConversationStateTest.PatialEndConvTest()"/>.
/// </summary>
public abstract class PatialEndConvEndBasePage: Page
{
private IConversationState conversation;
/// <summary>
/// <see cref="IConversationState"/>
/// </summary>
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
/// <summary>
/// Common End.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public virtual void Page_Load(object sender, EventArgs e)
{
this.Conversation.EndConversation();
}
}
}

View File

@@ -1,264 +1,264 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using System.Runtime.Remoting.Messaging;
using System.Runtime.Serialization;
using System.Reflection;
using Spring.Entities;
namespace Spring.ConversationWA
{
/// <summary>
/// Module that forces the serialization and deserialization of the session content to simulate a clustered server for
/// <see cref="WebConversationStateTest.SerializeConversationTest"/>.
/// </summary>
public class SerializeConversationTestModule: IHttpModule
{
#region Logging
private static readonly Common.Logging.ILog LOG = Common.Logging.LogManager.GetLogger(typeof(SerializeConversationTestModule));
#endregion
/// <summary>
/// Serialized Session Content.
/// </summary>
private static MemoryStream SerializedSessionContentStream = new MemoryStream();
#region IHttpModule Members
/// <summary>
/// TODO:
/// </summary>
public void Dispose()
{
//
}
/// <summary>
/// TODO:
/// </summary>
/// <param name="context"></param>
public void Init(HttpApplication context)
{
context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);
context.PostRequestHandlerExecute += new EventHandler(context_PostRequestHandlerExecute);
}
/// <summary>
/// Repopulates the session from the previously serialized content.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void context_PreRequestHandlerExecute(object sender, EventArgs e)
{
if (HttpContext.Current.Session != null)
{
if (HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath == "~/SerializeConversationTest.aspx")
{
if (SerializedSessionContentStream.Length > 0)
{
BinaryFormatter bf = new BinaryFormatter();
bf.Binder = new MyBinder();
//SurrogateSelector surrogateSelector = new SurrogateSelector();
//surrogateSelector.AddSurrogate(
// typeof(Object),
// new StreamingContext(StreamingContextStates.All),
// new MySerializationSurrogate());
//bf.SurrogateSelector = surrogateSelector;
SerializedSessionContentStream.Seek(0, SeekOrigin.Begin);
Dictionary<string, object> sessionConttent =
(Dictionary<string, object>)bf.Deserialize(SerializedSessionContentStream);
HttpContext.Current.Session.Clear();
foreach (String keyItem in sessionConttent.Keys)
{
HttpContext.Current.Session[keyItem] = sessionConttent[keyItem];
}
}
}
}
}
/// <summary>
/// Serializes and clears the session.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void context_PostRequestHandlerExecute(object sender, EventArgs e)
{
if (HttpContext.Current.Session != null)
{
//NHibernate.ISession ss;
if (HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath == "~/SerializeConversationTest.aspx")
{
Dictionary<string, object> sessionConttent = new Dictionary<string, object>();
foreach (String keyItem in HttpContext.Current.Session.Keys)
{
sessionConttent[keyItem] = HttpContext.Current.Session[keyItem];
}
BinaryFormatter bf = new BinaryFormatter();
bf.Binder = new MyBinder();
//SurrogateSelector surrogateSelector = new SurrogateSelector();
//surrogateSelector.AddSurrogate(
// typeof(Object),
// new StreamingContext(StreamingContextStates.All),
// new MySerializationSurrogate());
//bf.SurrogateSelector = surrogateSelector;
SerializedSessionContentStream = new MemoryStream();
bf.Serialize(SerializedSessionContentStream, sessionConttent);
HttpContext.Current.Session.Clear();
}
}
}
#endregion
}
public class MyBinder : SerializationBinder
{
#region Logging
private Common.Logging.ILog LOG
{
get
{
return Common.Logging.LogManager.GetLogger(typeof(SerializeConversationTestModule));
}
}
#endregion
public override Type BindToType(string assemblyName, string typeName)
{
if (LOG.IsDebugEnabled)
LOG.Debug(String.Format("MyBinder.BindToType: {0}, {1}", typeName, assemblyName));
return Type.GetType(typeName + ", " + assemblyName);
}
}
///// <summary>
///// For debugging purpose.
///// </summary>
//public class MySurrogateSelectorWrapper : ISurrogateSelector
//{
// ISurrogateSelector wrapped;
// public MySurrogateSelectorWrapper(ISurrogateSelector wrapped)
// {
// this.wrapped = wrapped;
// }
// #region ISurrogateSelector Members
// public void ChainSelector(ISurrogateSelector selector)
// {
// this.wrapped.ChainSelector(selector);
// }
// public ISurrogateSelector GetNextSelector()
// {
// ISurrogateSelector selector = this.wrapped.GetNextSelector();
// if (!(selector is MySurrogateSelectorWrapper))
// selector = new MySurrogateSelectorWrapper(selector);
// return selector;
// }
// public ISerializationSurrogate GetSurrogate(Type type, StreamingContext context, out ISurrogateSelector selector)
// {
// ISerializationSurrogate surrogate = new MySerializationSurrogate(this.wrapped.GetSurrogate(type, context, out selector));
// if (!(selector is MySurrogateSelectorWrapper))
// selector = new MySurrogateSelectorWrapper(selector);
// return surrogate;
// }
// #endregion
//}
/// <summary>
/// For debugging purpose.
/// </summary>
public class MySerializationSurrogate : ISerializationSurrogate
{
#region Logging
private static readonly Common.Logging.ILog LOG = Common.Logging.LogManager.GetLogger(typeof(SerializeConversationTestModule));
#endregion
public MySerializationSurrogate()
{
}
#region ISerializationSurrogate Members
public void GetObjectData(object obj, SerializationInfo info, StreamingContext context)
{
if (LOG.IsDebugEnabled)
LOG.Debug(String.Format("MySerializationSurrogateWrapper.GetObjectData({0},...", obj.GetType()));
FieldInfo[] fields = obj.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.FlattenHierarchy);
if (obj is ISerializable)
{
((ISerializable)obj).GetObjectData(info, context);
}
else
{
for (int i = 0; i < fields.Length; i++)
{
if ((fields[i].Attributes & FieldAttributes.NotSerialized) == 0)
{
info.AddValue(fields[i].Name, fields[i].GetValue(obj), fields[i].FieldType);
}
}
}
}
public object SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector)
{
if (LOG.IsDebugEnabled)
LOG.Debug(String.Format("MySerializationSurrogateWrapper.SetObjectData({0},...", obj.GetType()));
FieldInfo[] fields = obj.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
for (int i = 0; i < fields.Length; i++)
{
if ((fields[i].Attributes & FieldAttributes.NotSerialized) == 0)
{
fields[i].SetValue(obj, info.GetValue(fields[i].Name, fields[i].FieldType));
}
}
if (obj is IDeserializationCallback)
((IDeserializationCallback)obj).OnDeserialization(obj);
return obj;
}
#endregion
}
}
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using System.Runtime.Remoting.Messaging;
using System.Runtime.Serialization;
using System.Reflection;
using Spring.Entities;
namespace Spring.ConversationWA
{
/// <summary>
/// Module that forces the serialization and deserialization of the session content to simulate a clustered server for
/// <see cref="WebConversationStateTest.SerializeConversationTest"/>.
/// </summary>
public class SerializeConversationTestModule: IHttpModule
{
#region Logging
private static readonly Common.Logging.ILog LOG = Common.Logging.LogManager.GetLogger(typeof(SerializeConversationTestModule));
#endregion
/// <summary>
/// Serialized Session Content.
/// </summary>
private static MemoryStream SerializedSessionContentStream = new MemoryStream();
#region IHttpModule Members
/// <summary>
/// TODO:
/// </summary>
public void Dispose()
{
//
}
/// <summary>
/// TODO:
/// </summary>
/// <param name="context"></param>
public void Init(HttpApplication context)
{
context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);
context.PostRequestHandlerExecute += new EventHandler(context_PostRequestHandlerExecute);
}
/// <summary>
/// Repopulates the session from the previously serialized content.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void context_PreRequestHandlerExecute(object sender, EventArgs e)
{
if (HttpContext.Current.Session != null)
{
if (HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath == "~/SerializeConversationTest.aspx")
{
if (SerializedSessionContentStream.Length > 0)
{
BinaryFormatter bf = new BinaryFormatter();
bf.Binder = new MyBinder();
//SurrogateSelector surrogateSelector = new SurrogateSelector();
//surrogateSelector.AddSurrogate(
// typeof(Object),
// new StreamingContext(StreamingContextStates.All),
// new MySerializationSurrogate());
//bf.SurrogateSelector = surrogateSelector;
SerializedSessionContentStream.Seek(0, SeekOrigin.Begin);
Dictionary<string, object> sessionConttent =
(Dictionary<string, object>)bf.Deserialize(SerializedSessionContentStream);
HttpContext.Current.Session.Clear();
foreach (String keyItem in sessionConttent.Keys)
{
HttpContext.Current.Session[keyItem] = sessionConttent[keyItem];
}
}
}
}
}
/// <summary>
/// Serializes and clears the session.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void context_PostRequestHandlerExecute(object sender, EventArgs e)
{
if (HttpContext.Current.Session != null)
{
//NHibernate.ISession ss;
if (HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath == "~/SerializeConversationTest.aspx")
{
Dictionary<string, object> sessionConttent = new Dictionary<string, object>();
foreach (String keyItem in HttpContext.Current.Session.Keys)
{
sessionConttent[keyItem] = HttpContext.Current.Session[keyItem];
}
BinaryFormatter bf = new BinaryFormatter();
bf.Binder = new MyBinder();
//SurrogateSelector surrogateSelector = new SurrogateSelector();
//surrogateSelector.AddSurrogate(
// typeof(Object),
// new StreamingContext(StreamingContextStates.All),
// new MySerializationSurrogate());
//bf.SurrogateSelector = surrogateSelector;
SerializedSessionContentStream = new MemoryStream();
bf.Serialize(SerializedSessionContentStream, sessionConttent);
HttpContext.Current.Session.Clear();
}
}
}
#endregion
}
public class MyBinder : SerializationBinder
{
#region Logging
private Common.Logging.ILog LOG
{
get
{
return Common.Logging.LogManager.GetLogger(typeof(SerializeConversationTestModule));
}
}
#endregion
public override Type BindToType(string assemblyName, string typeName)
{
if (LOG.IsDebugEnabled)
LOG.Debug(String.Format("MyBinder.BindToType: {0}, {1}", typeName, assemblyName));
return Type.GetType(typeName + ", " + assemblyName);
}
}
///// <summary>
///// For debugging purpose.
///// </summary>
//public class MySurrogateSelectorWrapper : ISurrogateSelector
//{
// ISurrogateSelector wrapped;
// public MySurrogateSelectorWrapper(ISurrogateSelector wrapped)
// {
// this.wrapped = wrapped;
// }
// #region ISurrogateSelector Members
// public void ChainSelector(ISurrogateSelector selector)
// {
// this.wrapped.ChainSelector(selector);
// }
// public ISurrogateSelector GetNextSelector()
// {
// ISurrogateSelector selector = this.wrapped.GetNextSelector();
// if (!(selector is MySurrogateSelectorWrapper))
// selector = new MySurrogateSelectorWrapper(selector);
// return selector;
// }
// public ISerializationSurrogate GetSurrogate(Type type, StreamingContext context, out ISurrogateSelector selector)
// {
// ISerializationSurrogate surrogate = new MySerializationSurrogate(this.wrapped.GetSurrogate(type, context, out selector));
// if (!(selector is MySurrogateSelectorWrapper))
// selector = new MySurrogateSelectorWrapper(selector);
// return surrogate;
// }
// #endregion
//}
/// <summary>
/// For debugging purpose.
/// </summary>
public class MySerializationSurrogate : ISerializationSurrogate
{
#region Logging
private static readonly Common.Logging.ILog LOG = Common.Logging.LogManager.GetLogger(typeof(SerializeConversationTestModule));
#endregion
public MySerializationSurrogate()
{
}
#region ISerializationSurrogate Members
public void GetObjectData(object obj, SerializationInfo info, StreamingContext context)
{
if (LOG.IsDebugEnabled)
LOG.Debug(String.Format("MySerializationSurrogateWrapper.GetObjectData({0},...", obj.GetType()));
FieldInfo[] fields = obj.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.FlattenHierarchy);
if (obj is ISerializable)
{
((ISerializable)obj).GetObjectData(info, context);
}
else
{
for (int i = 0; i < fields.Length; i++)
{
if ((fields[i].Attributes & FieldAttributes.NotSerialized) == 0)
{
info.AddValue(fields[i].Name, fields[i].GetValue(obj), fields[i].FieldType);
}
}
}
}
public object SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector)
{
if (LOG.IsDebugEnabled)
LOG.Debug(String.Format("MySerializationSurrogateWrapper.SetObjectData({0},...", obj.GetType()));
FieldInfo[] fields = obj.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
for (int i = 0; i < fields.Length; i++)
{
if ((fields[i].Attributes & FieldAttributes.NotSerialized) == 0)
{
fields[i].SetValue(obj, info.GetValue(fields[i].Name, fields[i].FieldType));
}
}
if (obj is IDeserializationCallback)
((IDeserializationCallback)obj).OnDeserialization(obj);
return obj;
}
#endregion
}
}

View File

@@ -1,38 +1,38 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
namespace Spring.ConversationWA
{
[TestFixture]
public class SimpleTest
{
[Test]
public void Test()
{
Assert.AreEqual(2, 1 + 1, "2 == 1 + 1");
}
}
}
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
namespace Spring.ConversationWA
{
[TestFixture]
public class SimpleTest
{
[Test]
public void Test()
{
Assert.AreEqual(2, 1 + 1, "2 == 1 + 1");
}
}
}

View File

@@ -1,3 +1,3 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CircularDependenceTest.aspx.cs" Inherits="CircularDependenceTest" %><%
Response.Write("OK");
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CircularDependenceTest.aspx.cs" Inherits="CircularDependenceTest" %><%
Response.Write("OK");
%>

View File

@@ -1,56 +1,56 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using NUnit.Framework;
using Spring.Context.Support;
using System.Text;
using Common.Logging;
using Spring.Context;
public partial class CircularDependenceTest : System.Web.UI.Page, IApplicationContextAware
{
private static readonly ILog LOG = LogManager.GetLogger(typeof(CircularDependenceTest));
protected void Page_Load(object sender, EventArgs e)
{
IConversationState convCircularDependenceTest_A = (IConversationState)this.applicationContext.GetObject("convCircularDependenceTest_A");
IConversationState convCircularDependenceTest_A_A_A = (IConversationState)this.applicationContext.GetObject("convCircularDependenceTest_A_A_A");
StringBuilder sbErrors = new StringBuilder();
try
{
convCircularDependenceTest_A_A_A.InnerConversations.Add(convCircularDependenceTest_A);
sbErrors.AppendLine("Circular was not detected. ");
}
catch (InvalidOperationException ioe)
{
LOG.Debug("SERVER SIDE ERROR", ioe);
if (!ioe.Message.Contains("convCircularDependenceTest_A_A_A->convCircularDependenceTest_A->convCircularDependenceTest_A_A->convCircularDependenceTest_A_A_A"))
{
sbErrors.AppendLine(String.Format("Wrong CircularDependence message= '{0}'", ioe.Message));
}
}
catch (Exception ex)
{
LOG.Error("SERVER SIDE ERROR", ex);
sbErrors.AppendLine(String.Format("Unexpected Error: '{0}' \n {1}", ex.Message, ex.StackTrace));
}
Session["CircularDependenceTest"] = sbErrors.ToString();
}
#region IApplicationContextAware Members
private IApplicationContext applicationContext;
public IApplicationContext ApplicationContext
{
set { this.applicationContext = value; }
}
#endregion
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using NUnit.Framework;
using Spring.Context.Support;
using System.Text;
using Common.Logging;
using Spring.Context;
public partial class CircularDependenceTest : System.Web.UI.Page, IApplicationContextAware
{
private static readonly ILog LOG = LogManager.GetLogger(typeof(CircularDependenceTest));
protected void Page_Load(object sender, EventArgs e)
{
IConversationState convCircularDependenceTest_A = (IConversationState)this.applicationContext.GetObject("convCircularDependenceTest_A");
IConversationState convCircularDependenceTest_A_A_A = (IConversationState)this.applicationContext.GetObject("convCircularDependenceTest_A_A_A");
StringBuilder sbErrors = new StringBuilder();
try
{
convCircularDependenceTest_A_A_A.InnerConversations.Add(convCircularDependenceTest_A);
sbErrors.AppendLine("Circular was not detected. ");
}
catch (InvalidOperationException ioe)
{
LOG.Debug("SERVER SIDE ERROR", ioe);
if (!ioe.Message.Contains("convCircularDependenceTest_A_A_A->convCircularDependenceTest_A->convCircularDependenceTest_A_A->convCircularDependenceTest_A_A_A"))
{
sbErrors.AppendLine(String.Format("Wrong CircularDependence message= '{0}'", ioe.Message));
}
}
catch (Exception ex)
{
LOG.Error("SERVER SIDE ERROR", ex);
sbErrors.AppendLine(String.Format("Unexpected Error: '{0}' \n {1}", ex.Message, ex.StackTrace));
}
Session["CircularDependenceTest"] = sbErrors.ToString();
}
#region IApplicationContextAware Members
private IApplicationContext applicationContext;
public IApplicationContext ApplicationContext
{
set { this.applicationContext = value; }
}
#endregion
}

View File

@@ -1,16 +1,16 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ConnectionReleaseModeIssue.aspx.cs" Inherits="ConnectionReleaseModeIssue" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ConnectionReleaseModeIssue.aspx.cs" Inherits="ConnectionReleaseModeIssue" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>

View File

@@ -1,265 +1,265 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Data.NHibernate.Support;
using NHibernate;
using Spring.Entities;
using Spring.Spring.Data.Common;
using NUnit.Framework;
using Spring.Bsn;
using NHibernate.Impl;
using System.Reflection;
using NHibernate.Cfg;
using Spring.Context;
/// <summary>
/// Page for <see cref="Spring.ConversationWA.WebConversationStateTest.ConnectionReleaseModeIssue()"/>.
/// </summary>
public partial class ConnectionReleaseModeIssue : System.Web.UI.Page, IApplicationContextAware
{
private IConversationState conversation;
/// <summary>
/// <see cref="IConversationState"/>
/// </summary>
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
private ISessionFactory sessionFactory;
public ISessionFactory SessionFactory
{
get { return sessionFactory; }
set { sessionFactory = value; }
}
private IConnectionReleaseModeIssueBsn connectionReleaseModeIssueBsn;
public IConnectionReleaseModeIssueBsn ConnectionReleaseModeIssueBsn
{
get { return connectionReleaseModeIssueBsn; }
set { connectionReleaseModeIssueBsn = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
try
{
/// Test with conversation and "connection.release_mode"
/// "auto"(<see cref="ConnectionReleaseMode.AfterTransaction"/>).
this.connection_release_mode_auto();
/// Test with NO conversation and "connection.release_mode"
/// "auto"(<see cref="ConnectionReleaseMode.AfterTransaction"/>)
/// on block within the scope of "transaction boundary".
this.connection_release_mode_auto_transaction_boundary();
/// Test with NO conversation and "connection.release_mode"
/// "auto"(<see cref="ConnectionReleaseMode.AfterTransaction"/>).
this.connection_release_mode_auto_no_conversation();
/// Test with conversation and "connection.release_mode"
/// "on_close"(<see cref="ConnectionReleaseMode.OnClose"/>).
this.connection_release_mode_on_close();
Session["result"] = "OK";
}
catch (Exception ex)
{
Session["result"] = ex.Message + " " + ex.StackTrace;
//throw;
}
}
/// <summary>
/// Test with conversation and "connection.release_mode"
/// "auto"(<see cref="ConnectionReleaseMode.AfterTransaction"/>).
/// </summary>
/// <remarks>
/// Here we can see that every statement causes a closing of the IDbConnection.
/// </remarks>
private void connection_release_mode_auto()
{
//with conversation and "connection.release_mode" "auto"(AfterTransaction)
//forcing "auto" by reflection.
Settings settings = ((SessionFactoryImpl)this.SessionFactory).Settings;
ConnectionReleaseMode connReleaseModeOriginal = settings.ConnectionReleaseMode;
this.setConnectionReleaseModeByReflection(settings, ConnectionReleaseMode.AfterTransaction);
//((SessionFactoryImpl)this.sessionFactory).Settings.ConnectionReleaseMode = ConnectionReleaseMode.AfterTransaction;
ConnectionCreationTrackingDbProvider.Count = 0;
this.Conversation.StartResumeConversation();
ISession sessionA = this.SessionFactory.GetCurrentSession();
SPCDetailEnt detailEnt = sessionA.Get<SPCDetailEnt>(1);
Assert.AreEqual(1, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
SessionScopeSettings sessionScopeSettings = new SessionScopeSettings(this.sessionFactory);
sessionScopeSettings.SingleSession = true;
SPCMasterEnt masterEnt;
using (new SessionScope(sessionScopeSettings, false))
{
ISession sessionB = this.SessionFactory.GetCurrentSession();
masterEnt = sessionB.Get<SPCMasterEnt>(1);
Assert.AreEqual(2, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
Assert.AreSame(sessionA, sessionB, "sessionA, sessionB");
}
SPCMasterEnt masterEnt2 = sessionA.Get<SPCMasterEnt>(2);
Assert.AreEqual(3, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
Assert.AreEqual(1, masterEnt2.SPCDetailEntList.Count, "masterEnt2.SPCDetailEntList.Count");
Assert.AreEqual(4, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
SPCMasterEnt masterEnt3 = sessionA.Get<SPCMasterEnt>(3);
Assert.AreEqual(5, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
Assert.AreEqual(1, masterEnt3.SPCDetailEntList.Count, "masterEnt3.SPCDetailEntList.Count");
Assert.AreEqual(6, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
//Renew the conversation.
this.Conversation.EndConversation();
this.Conversation.ConversationManager.FreeEnded();
this.Conversation = (IConversationState)this.applicationContext.GetObject("convConnectionReleaseModeIssue");
this.setConnectionReleaseModeByReflection(settings, connReleaseModeOriginal);
}
/// <summary>
/// Test with NO conversation and "connection.release_mode"
/// "auto"(<see cref="ConnectionReleaseMode.AfterTransaction"/>)
/// on block within the scope of "transaction boundary".
/// </summary>
/// <remarks>
/// Here we can see that only a IDbConnection is open, even
/// with the execution of various statements. This is because
/// the statements are made within a "transaction boundary".
/// </remarks>
private void connection_release_mode_auto_transaction_boundary()
{
//with conversation and "connection.release_mode" "auto"(AfterTransaction)
//forcing "auto" by reflection.
Settings settings = ((SessionFactoryImpl)this.SessionFactory).Settings;
ConnectionReleaseMode connReleaseModeOriginal = settings.ConnectionReleaseMode;
this.setConnectionReleaseModeByReflection(settings, ConnectionReleaseMode.AfterTransaction);
ConnectionCreationTrackingDbProvider.Count = 0;
this.ConnectionReleaseModeIssueBsn.Test();
this.setConnectionReleaseModeByReflection(settings, connReleaseModeOriginal);
}
/// <summary>
/// Test with NO conversation and "connection.release_mode"
/// "auto"(<see cref="ConnectionReleaseMode.AfterTransaction"/>).
/// </summary>
private void connection_release_mode_auto_no_conversation()
{
//with NO conversation and "connection.release_mode" "auto"(AfterTransaction)
//forcing "auto" by reflection.
Settings settings = ((SessionFactoryImpl)this.SessionFactory).Settings;
ConnectionReleaseMode connReleaseModeOriginal = settings.ConnectionReleaseMode;
this.setConnectionReleaseModeByReflection(settings, ConnectionReleaseMode.AfterTransaction);
//with no conversation
SessionScopeSettings sessionScopeSettings = new SessionScopeSettings(this.sessionFactory);
ConnectionCreationTrackingDbProvider.Count = 0;
using (new SessionScope(sessionScopeSettings, true))
{
ISession sessionNoConv = this.SessionFactory.GetCurrentSession();
SPCMasterEnt masterEnt2 = sessionNoConv.Get<SPCMasterEnt>(2);
Assert.AreEqual(1, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
Assert.AreEqual(1, masterEnt2.SPCDetailEntList.Count, "masterEnt2.SPCDetailEntList.Count");
Assert.AreEqual(2, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
SPCMasterEnt masterEnt3 = sessionNoConv.Get<SPCMasterEnt>(3);
Assert.AreEqual(3, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
Assert.AreEqual(1, masterEnt3.SPCDetailEntList.Count, "masterEnt3.SPCDetailEntList.Count");
Assert.AreEqual(4, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
}
this.setConnectionReleaseModeByReflection(settings, connReleaseModeOriginal);
}
/// <summary>
/// Test with conversation and "connection.release_mode"
/// "on_close"(<see cref="ConnectionReleaseMode.OnClose"/>).
/// </summary>
/// <remarks>
/// Here we can see that only a IDbConnection is open, even
/// with the execution of various statements.
/// </remarks>
private void connection_release_mode_on_close()
{
//forcing "on_close" by reflection.
Settings settings = ((SessionFactoryImpl)this.SessionFactory).Settings;
ConnectionReleaseMode connReleaseModeOriginal = settings.ConnectionReleaseMode;
this.setConnectionReleaseModeByReflection(settings, ConnectionReleaseMode.OnClose);
//with conversation and "connection.release_mode" "on_close"(AfterTransaction)
ConnectionCreationTrackingDbProvider.Count = 0;
this.Conversation.StartResumeConversation();
ISession sessionA = this.SessionFactory.GetCurrentSession();
SPCDetailEnt detailEnt = sessionA.Get<SPCDetailEnt>(1);
Assert.AreEqual(1, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
SessionScopeSettings sessionScopeSettings = new SessionScopeSettings(this.sessionFactory);
sessionScopeSettings.SingleSession = true;
SPCMasterEnt masterEnt;
using (new SessionScope(sessionScopeSettings, false))
{
ISession sessionB = this.SessionFactory.GetCurrentSession();
masterEnt = sessionB.Get<SPCMasterEnt>(1);
Assert.AreSame(sessionA, sessionB, "sessionA, sessionB");
}
Assert.AreEqual(3, masterEnt.SPCDetailEntList.Count, "masterEnt.SPCDetailEntList.Count");
Assert.AreEqual(1, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
//Renew the conversation.
this.Conversation.EndConversation();
this.Conversation.ConversationManager.FreeEnded();
this.Conversation = (IConversationState)this.applicationContext.GetObject("convConnectionReleaseModeIssue");
this.setConnectionReleaseModeByReflection(settings, connReleaseModeOriginal);
}
/// <summary>
/// Sets the <see cref="Settings.ConnectionReleaseMode"/> by reflection.
/// </summary>
/// <param name="settings">The settings.</param>
/// <param name="mode">The mode.</param>
private void setConnectionReleaseModeByReflection(Settings settings, ConnectionReleaseMode mode)
{
PropertyInfo pInfoConnectionReleaseMode =
settings.GetType().GetProperty(
"ConnectionReleaseMode",
BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.SetProperty |
BindingFlags.Instance);
pInfoConnectionReleaseMode.SetValue(settings, mode, null);
}
#region IApplicationContextAware Members
private IApplicationContext applicationContext;
public IApplicationContext ApplicationContext
{
set { this.applicationContext = value; }
}
#endregion
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Data.NHibernate.Support;
using NHibernate;
using Spring.Entities;
using Spring.Spring.Data.Common;
using NUnit.Framework;
using Spring.Bsn;
using NHibernate.Impl;
using System.Reflection;
using NHibernate.Cfg;
using Spring.Context;
/// <summary>
/// Page for <see cref="Spring.ConversationWA.WebConversationStateTest.ConnectionReleaseModeIssue()"/>.
/// </summary>
public partial class ConnectionReleaseModeIssue : System.Web.UI.Page, IApplicationContextAware
{
private IConversationState conversation;
/// <summary>
/// <see cref="IConversationState"/>
/// </summary>
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
private ISessionFactory sessionFactory;
public ISessionFactory SessionFactory
{
get { return sessionFactory; }
set { sessionFactory = value; }
}
private IConnectionReleaseModeIssueBsn connectionReleaseModeIssueBsn;
public IConnectionReleaseModeIssueBsn ConnectionReleaseModeIssueBsn
{
get { return connectionReleaseModeIssueBsn; }
set { connectionReleaseModeIssueBsn = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
try
{
/// Test with conversation and "connection.release_mode"
/// "auto"(<see cref="ConnectionReleaseMode.AfterTransaction"/>).
this.connection_release_mode_auto();
/// Test with NO conversation and "connection.release_mode"
/// "auto"(<see cref="ConnectionReleaseMode.AfterTransaction"/>)
/// on block within the scope of "transaction boundary".
this.connection_release_mode_auto_transaction_boundary();
/// Test with NO conversation and "connection.release_mode"
/// "auto"(<see cref="ConnectionReleaseMode.AfterTransaction"/>).
this.connection_release_mode_auto_no_conversation();
/// Test with conversation and "connection.release_mode"
/// "on_close"(<see cref="ConnectionReleaseMode.OnClose"/>).
this.connection_release_mode_on_close();
Session["result"] = "OK";
}
catch (Exception ex)
{
Session["result"] = ex.Message + " " + ex.StackTrace;
//throw;
}
}
/// <summary>
/// Test with conversation and "connection.release_mode"
/// "auto"(<see cref="ConnectionReleaseMode.AfterTransaction"/>).
/// </summary>
/// <remarks>
/// Here we can see that every statement causes a closing of the IDbConnection.
/// </remarks>
private void connection_release_mode_auto()
{
//with conversation and "connection.release_mode" "auto"(AfterTransaction)
//forcing "auto" by reflection.
Settings settings = ((SessionFactoryImpl)this.SessionFactory).Settings;
ConnectionReleaseMode connReleaseModeOriginal = settings.ConnectionReleaseMode;
this.setConnectionReleaseModeByReflection(settings, ConnectionReleaseMode.AfterTransaction);
//((SessionFactoryImpl)this.sessionFactory).Settings.ConnectionReleaseMode = ConnectionReleaseMode.AfterTransaction;
ConnectionCreationTrackingDbProvider.Count = 0;
this.Conversation.StartResumeConversation();
ISession sessionA = this.SessionFactory.GetCurrentSession();
SPCDetailEnt detailEnt = sessionA.Get<SPCDetailEnt>(1);
Assert.AreEqual(1, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
SessionScopeSettings sessionScopeSettings = new SessionScopeSettings(this.sessionFactory);
sessionScopeSettings.SingleSession = true;
SPCMasterEnt masterEnt;
using (new SessionScope(sessionScopeSettings, false))
{
ISession sessionB = this.SessionFactory.GetCurrentSession();
masterEnt = sessionB.Get<SPCMasterEnt>(1);
Assert.AreEqual(2, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
Assert.AreSame(sessionA, sessionB, "sessionA, sessionB");
}
SPCMasterEnt masterEnt2 = sessionA.Get<SPCMasterEnt>(2);
Assert.AreEqual(3, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
Assert.AreEqual(1, masterEnt2.SPCDetailEntList.Count, "masterEnt2.SPCDetailEntList.Count");
Assert.AreEqual(4, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
SPCMasterEnt masterEnt3 = sessionA.Get<SPCMasterEnt>(3);
Assert.AreEqual(5, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
Assert.AreEqual(1, masterEnt3.SPCDetailEntList.Count, "masterEnt3.SPCDetailEntList.Count");
Assert.AreEqual(6, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
//Renew the conversation.
this.Conversation.EndConversation();
this.Conversation.ConversationManager.FreeEnded();
this.Conversation = (IConversationState)this.applicationContext.GetObject("convConnectionReleaseModeIssue");
this.setConnectionReleaseModeByReflection(settings, connReleaseModeOriginal);
}
/// <summary>
/// Test with NO conversation and "connection.release_mode"
/// "auto"(<see cref="ConnectionReleaseMode.AfterTransaction"/>)
/// on block within the scope of "transaction boundary".
/// </summary>
/// <remarks>
/// Here we can see that only a IDbConnection is open, even
/// with the execution of various statements. This is because
/// the statements are made within a "transaction boundary".
/// </remarks>
private void connection_release_mode_auto_transaction_boundary()
{
//with conversation and "connection.release_mode" "auto"(AfterTransaction)
//forcing "auto" by reflection.
Settings settings = ((SessionFactoryImpl)this.SessionFactory).Settings;
ConnectionReleaseMode connReleaseModeOriginal = settings.ConnectionReleaseMode;
this.setConnectionReleaseModeByReflection(settings, ConnectionReleaseMode.AfterTransaction);
ConnectionCreationTrackingDbProvider.Count = 0;
this.ConnectionReleaseModeIssueBsn.Test();
this.setConnectionReleaseModeByReflection(settings, connReleaseModeOriginal);
}
/// <summary>
/// Test with NO conversation and "connection.release_mode"
/// "auto"(<see cref="ConnectionReleaseMode.AfterTransaction"/>).
/// </summary>
private void connection_release_mode_auto_no_conversation()
{
//with NO conversation and "connection.release_mode" "auto"(AfterTransaction)
//forcing "auto" by reflection.
Settings settings = ((SessionFactoryImpl)this.SessionFactory).Settings;
ConnectionReleaseMode connReleaseModeOriginal = settings.ConnectionReleaseMode;
this.setConnectionReleaseModeByReflection(settings, ConnectionReleaseMode.AfterTransaction);
//with no conversation
SessionScopeSettings sessionScopeSettings = new SessionScopeSettings(this.sessionFactory);
ConnectionCreationTrackingDbProvider.Count = 0;
using (new SessionScope(sessionScopeSettings, true))
{
ISession sessionNoConv = this.SessionFactory.GetCurrentSession();
SPCMasterEnt masterEnt2 = sessionNoConv.Get<SPCMasterEnt>(2);
Assert.AreEqual(1, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
Assert.AreEqual(1, masterEnt2.SPCDetailEntList.Count, "masterEnt2.SPCDetailEntList.Count");
Assert.AreEqual(2, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
SPCMasterEnt masterEnt3 = sessionNoConv.Get<SPCMasterEnt>(3);
Assert.AreEqual(3, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
Assert.AreEqual(1, masterEnt3.SPCDetailEntList.Count, "masterEnt3.SPCDetailEntList.Count");
Assert.AreEqual(4, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
}
this.setConnectionReleaseModeByReflection(settings, connReleaseModeOriginal);
}
/// <summary>
/// Test with conversation and "connection.release_mode"
/// "on_close"(<see cref="ConnectionReleaseMode.OnClose"/>).
/// </summary>
/// <remarks>
/// Here we can see that only a IDbConnection is open, even
/// with the execution of various statements.
/// </remarks>
private void connection_release_mode_on_close()
{
//forcing "on_close" by reflection.
Settings settings = ((SessionFactoryImpl)this.SessionFactory).Settings;
ConnectionReleaseMode connReleaseModeOriginal = settings.ConnectionReleaseMode;
this.setConnectionReleaseModeByReflection(settings, ConnectionReleaseMode.OnClose);
//with conversation and "connection.release_mode" "on_close"(AfterTransaction)
ConnectionCreationTrackingDbProvider.Count = 0;
this.Conversation.StartResumeConversation();
ISession sessionA = this.SessionFactory.GetCurrentSession();
SPCDetailEnt detailEnt = sessionA.Get<SPCDetailEnt>(1);
Assert.AreEqual(1, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
SessionScopeSettings sessionScopeSettings = new SessionScopeSettings(this.sessionFactory);
sessionScopeSettings.SingleSession = true;
SPCMasterEnt masterEnt;
using (new SessionScope(sessionScopeSettings, false))
{
ISession sessionB = this.SessionFactory.GetCurrentSession();
masterEnt = sessionB.Get<SPCMasterEnt>(1);
Assert.AreSame(sessionA, sessionB, "sessionA, sessionB");
}
Assert.AreEqual(3, masterEnt.SPCDetailEntList.Count, "masterEnt.SPCDetailEntList.Count");
Assert.AreEqual(1, ConnectionCreationTrackingDbProvider.Count, "ConnectionCreationTrackingDbProvider.Count");
//Renew the conversation.
this.Conversation.EndConversation();
this.Conversation.ConversationManager.FreeEnded();
this.Conversation = (IConversationState)this.applicationContext.GetObject("convConnectionReleaseModeIssue");
this.setConnectionReleaseModeByReflection(settings, connReleaseModeOriginal);
}
/// <summary>
/// Sets the <see cref="Settings.ConnectionReleaseMode"/> by reflection.
/// </summary>
/// <param name="settings">The settings.</param>
/// <param name="mode">The mode.</param>
private void setConnectionReleaseModeByReflection(Settings settings, ConnectionReleaseMode mode)
{
PropertyInfo pInfoConnectionReleaseMode =
settings.GetType().GetProperty(
"ConnectionReleaseMode",
BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.SetProperty |
BindingFlags.Instance);
pInfoConnectionReleaseMode.SetValue(settings, mode, null);
}
#region IApplicationContextAware Members
private IApplicationContext applicationContext;
public IApplicationContext ApplicationContext
{
set { this.applicationContext = value; }
}
#endregion
}

View File

@@ -1,3 +1,3 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EndConversationTestBegin.aspx.cs" Inherits="EndConversationTestBegin" %><%
Response.Write("OK");
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EndConversationTestBegin.aspx.cs" Inherits="EndConversationTestBegin" %><%
Response.Write("OK");
%>

View File

@@ -1,37 +1,37 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Bsn;
public partial class EndConversationTestBegin : System.Web.UI.Page
{
private IConversationEvidenceBsn conversationEvidenceBsn;
public IConversationEvidenceBsn ConversationEvidenceBsn
{
get { return conversationEvidenceBsn; }
set { conversationEvidenceBsn = value; }
}
private IConversationState conversation;
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.Conversation.StartResumeConversation();
Session["ConversationEvidenceBsn_UniqId"] = this.ConversationEvidenceBsn.UniqueId();
}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Bsn;
public partial class EndConversationTestBegin : System.Web.UI.Page
{
private IConversationEvidenceBsn conversationEvidenceBsn;
public IConversationEvidenceBsn ConversationEvidenceBsn
{
get { return conversationEvidenceBsn; }
set { conversationEvidenceBsn = value; }
}
private IConversationState conversation;
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.Conversation.StartResumeConversation();
Session["ConversationEvidenceBsn_UniqId"] = this.ConversationEvidenceBsn.UniqueId();
}
}

View File

@@ -1,3 +1,3 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EndConversationTestEnd.aspx.cs" Inherits="EndConversationTestEnd" %><%
Response.Write("OK");
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EndConversationTestEnd.aspx.cs" Inherits="EndConversationTestEnd" %><%
Response.Write("OK");
%>

View File

@@ -1,35 +1,35 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.Bsn;
using Spring.ConversationWA;
public partial class EndConversationTestEnd : System.Web.UI.Page
{
private IConversationEvidenceBsn conversationEvidenceBsn;
public IConversationEvidenceBsn ConversationEvidenceBsn
{
get { return conversationEvidenceBsn; }
set { conversationEvidenceBsn = value; }
}
private IConversationState conversation;
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.Conversation.EndConversation();
}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.Bsn;
using Spring.ConversationWA;
public partial class EndConversationTestEnd : System.Web.UI.Page
{
private IConversationEvidenceBsn conversationEvidenceBsn;
public IConversationEvidenceBsn ConversationEvidenceBsn
{
get { return conversationEvidenceBsn; }
set { conversationEvidenceBsn = value; }
}
private IConversationState conversation;
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.Conversation.EndConversation();
}
}

View File

@@ -1,16 +1,16 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EndPausedSessionIsClosedA.aspx.cs"Inherits="EndPausedSessionIsClosedA" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EndPausedSessionIsClosedA.aspx.cs"Inherits="EndPausedSessionIsClosedA" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>

View File

@@ -1,40 +1,40 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Entities;
using NHibernate;
public partial class EndPausedSessionIsClosedA : System.Web.UI.Page
{
private IConversationState conversation;
/// <summary>
/// <see cref="IConversationState"/>
/// </summary>
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.Session["result"] = "NOT OK";
this.Conversation.StartResumeConversation();
//database access
ISession session = this.Conversation.SessionFactory.GetCurrentSession();
SPCMasterEnt sPCMasterEnt = session.Get<SPCMasterEnt>(1);
this.Session["result"] = "OK";
}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Entities;
using NHibernate;
public partial class EndPausedSessionIsClosedA : System.Web.UI.Page
{
private IConversationState conversation;
/// <summary>
/// <see cref="IConversationState"/>
/// </summary>
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.Session["result"] = "NOT OK";
this.Conversation.StartResumeConversation();
//database access
ISession session = this.Conversation.SessionFactory.GetCurrentSession();
SPCMasterEnt sPCMasterEnt = session.Get<SPCMasterEnt>(1);
this.Session["result"] = "OK";
}
}

View File

@@ -1,16 +1,16 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EndPausedSessionIsClosedB.aspx.cs"Inherits="EndPausedSessionIsClosedB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EndPausedSessionIsClosedB.aspx.cs"Inherits="EndPausedSessionIsClosedB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>

View File

@@ -1,46 +1,46 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using NHibernate;
using Spring.Entities;
public partial class EndPausedSessionIsClosedB : System.Web.UI.Page
{
private IConversationState conversation;
/// <summary>
/// <see cref="IConversationState"/>
/// </summary>
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.Session["result"] = "NOT OK";
try
{
this.Conversation.StartResumeConversation();
//database access
ISession session = this.Conversation.SessionFactory.GetCurrentSession();
SPCMasterEnt sPCMasterEnt = session.Get<SPCMasterEnt>(1);
this.Session["result"] = "OK";
}
catch (Exception ex)
{
this.Session["result"] = ex.Message;
}
}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using NHibernate;
using Spring.Entities;
public partial class EndPausedSessionIsClosedB : System.Web.UI.Page
{
private IConversationState conversation;
/// <summary>
/// <see cref="IConversationState"/>
/// </summary>
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.Session["result"] = "NOT OK";
try
{
this.Conversation.StartResumeConversation();
//database access
ISession session = this.Conversation.SessionFactory.GetCurrentSession();
SPCMasterEnt sPCMasterEnt = session.Get<SPCMasterEnt>(1);
this.Session["result"] = "OK";
}
catch (Exception ex)
{
this.Session["result"] = ex.Message;
}
}
}

View File

@@ -1,16 +1,16 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EndPausedTest.aspx.cs" Inherits="EndPausedTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EndPausedTest.aspx.cs" Inherits="EndPausedTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>

View File

@@ -1,48 +1,48 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
public partial class EndPausedTest : System.Web.UI.Page
{
private IConversationState convA;
public IConversationState ConvA
{
get { return convA; }
set { convA = value; }
}
private IConversationState convB;
public IConversationState ConvB
{
get { return convB; }
set { convB = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (this.Request["testPhase"] == "begin")
{
if (!this.convA.Ended && !this.convB.Ended)
this.Session["result"] = "OK";
else
this.Session["result"] = "(!this.convA.Ended && !this.convB.Ended) is false";
}
else if (this.Request["testPhase"] == "startConvA")
{
this.convA.StartResumeConversation();
if (!this.convA.Ended && this.convB.Ended)
this.Session["result"] = "OK";
else
this.Session["result"] = "(!this.convA.Ended && this.convB.Ended) is false";
}
}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
public partial class EndPausedTest : System.Web.UI.Page
{
private IConversationState convA;
public IConversationState ConvA
{
get { return convA; }
set { convA = value; }
}
private IConversationState convB;
public IConversationState ConvB
{
get { return convB; }
set { convB = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (this.Request["testPhase"] == "begin")
{
if (!this.convA.Ended && !this.convB.Ended)
this.Session["result"] = "OK";
else
this.Session["result"] = "(!this.convA.Ended && !this.convB.Ended) is false";
}
else if (this.Request["testPhase"] == "startConvA")
{
this.convA.StartResumeConversation();
if (!this.convA.Ended && this.convB.Ended)
this.Session["result"] = "OK";
else
this.Session["result"] = "(!this.convA.Ended && this.convB.Ended) is false";
}
}
}

View File

@@ -1,3 +1,3 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GetParentObjetFromChild.aspx.cs" Inherits="GetParentObjetFromChild" %><%
Response.Write("OK");
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GetParentObjetFromChild.aspx.cs" Inherits="GetParentObjetFromChild" %><%
Response.Write("OK");
%>

View File

@@ -1,30 +1,30 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
public partial class GetParentObjetFromChild : System.Web.UI.Page
{
private IConversationState conversation;
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.Conversation.StartResumeConversation();
Session["parentKey"] = this.Conversation["parentKey"];
Session["childKey"] = this.Conversation["childKey"];
Session["overwrittenKey"] = this.Conversation["overwrittenKey"];
}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
public partial class GetParentObjetFromChild : System.Web.UI.Page
{
private IConversationState conversation;
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.Conversation.StartResumeConversation();
Session["parentKey"] = this.Conversation["parentKey"];
Session["childKey"] = this.Conversation["childKey"];
Session["overwrittenKey"] = this.Conversation["overwrittenKey"];
}
}

View File

@@ -1,3 +1,3 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="IoeTests.aspx.cs" Inherits="IoeTests" %><%
Response.Write("OK");
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="IoeTests.aspx.cs" Inherits="IoeTests" %><%
Response.Write("OK");
%>

View File

@@ -1,466 +1,466 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.ConversationWA.Impl;
using System.Text.RegularExpressions;
using NHibernate;
using Spring.Data.NHibernate.Support;
using Common.Logging;
using Spring.Objects.Factory;
public partial class IoeTests : System.Web.UI.Page
{
private static readonly ILog LOG = LogManager.GetLogger(typeof(IoeTests));
private IConversationState conversationA;
public IConversationState ConversationA
{
get { return conversationA; }
set { conversationA = value; }
}
private IConversationState conversationAA;
public IConversationState ConversationAA
{
get { return conversationAA; }
set { conversationAA = value; }
}
private IConversationManager conversationManager;
public IConversationManager ConversationManager
{
get { return conversationManager; }
set { conversationManager = value; }
}
private ISessionFactory sessionFactory;
public ISessionFactory SessionFactory
{
get { return sessionFactory; }
set { sessionFactory = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
try
{
if ("reset".Equals(this.Request.Params["test"]))
{
this.ConversationA.EndConversation();
this.Session["testResult"] = "OK";
}
else if ("alreadyHasAnotherManagerNotRaise".Equals(this.Request.Params["test"]))
{
this.alreadyHasAnotherManagerNotRaise();
}
else if ("alreadyHasAnotherManagerRaise".Equals(this.Request.Params["test"]))
{
this.alreadyHasAnotherManagerRaise();
}
else if ("conversationAlreadyDifferentParent".Equals(this.Request.Params["test"]))
{
this.conversationAlreadyDifferentParent();
}
else if ("setParentConversationIsNotNew".Equals(this.Request.Params["test"]))
{
this.setParentConversationIsNotNew();
}
else if ("startResumeConversationIsEnded".Equals(this.Request.Params["test"]))
{
this.startResumeConversationIsEnded();
}
else if ("participatingHibernateNotAlowed".Equals(this.Request.Params["test"]))
{
this.participatingHibernateNotAlowed();
}
else if ("idIsDifferentFromSpringName".Equals(this.Request.Params["test"]))
{
this.idIsDifferentFromSpringName();
}
else
{
throw new Exception("'test' request parameter was not recognized");
}
}
catch (Exception ex)
{
this.Session["testResult"] = "FAIL: " + ex.ToString();
}
}
private void alreadyHasAnotherManagerNotRaise()
{
IConversationManager otherConversationManager = new WebConversationManager();
//Not raise error
IConversationState otherConversationState = null;
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
otherConversationManager.AddConversation(otherConversationState);
this.Session["testResult"] = "OK";
}
catch (InvalidOperationException ioe)
{
this.Session["testResult"] = "NOT OK " + ioe.ToString();
}
finally
{
otherConversationState.EndConversation();
}
}
private void alreadyHasAnotherManagerRaise()
{
Regex msgErrorRx = new Regex(".*already.*has.*another.*manager.*");
IConversationManager otherConversationManager = null;
//Raise error
try
{
otherConversationManager = new WebConversationManager();
otherConversationManager.AddConversation(this.ConversationA);
this.Session["testResult"] = "NOT OK";
}
catch (InvalidOperationException ioe)
{
if (msgErrorRx.IsMatch(ioe.Message))
{
this.Session["testResult"] = "OK";
}
else
{
this.Session["testResult"] = "NOT OK " + ioe.Message;
}
}
}
private void conversationAlreadyDifferentParent()
{
Regex msgErrorRx = new Regex(".*conversation.*already.*different.*parent.*");
//BEGIN: Raise error
IConversationState otherConversationState = null;
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
//try first by 'InnerConversations.Add'
otherConversationState.InnerConversations.Add(this.ConversationAA);
throw new Exception("NOT OK: No raise for 'InnerConversations.Add(this.ConversationAA)'");
}
catch (InvalidOperationException ioe)
{
if (msgErrorRx.IsMatch(ioe.Message))
{
this.Session["testResult"] = "OK";
}
else
{
throw new Exception("NOT OK " + ioe.Message);
}
}
finally
{
otherConversationState.EndConversation();
}
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
//try second by 'ParentConversation = '
this.ConversationAA.ParentConversation = otherConversationState;
throw new Exception("NOT OK: No raise for 'this.ConversationAA.ParentConversation = otherConversationState'");
}
catch (InvalidOperationException ioe)
{
if (msgErrorRx.IsMatch(ioe.Message))
{
this.Session["testResult"] = "OK";
}
else
{
throw new Exception("NOT OK, 'ex.Message' not match :" + ioe.Message);
}
}
finally
{
otherConversationState.EndConversation();
}
//END: Raise error
//BEGIN: NO Raise error
otherConversationState = null;
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
//try first by 'InnerConversations.Add'
this.ConversationAA.InnerConversations.Add(otherConversationState);
this.Session["testResult"] = "OK";
}
finally
{
otherConversationState.EndConversation();
}
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
//try second by 'ParentConversation = '
otherConversationState.ParentConversation = this.ConversationA;
this.Session["testResult"] = "OK";
}
finally
{
otherConversationState.EndConversation();
}
//END: NO Raise error
}
private void setParentConversationIsNotNew()
{
Regex msgErrorRx = new Regex(".*Conversation.*not.*new.*Conversation.Id.*Parent.*Tried.*");
IConversationState otherConversationState = null;
//BEGIN: Raise error
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
// make not new
otherConversationState.StartResumeConversation();
//try first by 'InnerConversations.Add'
this.ConversationA.InnerConversations.Add(otherConversationState);
throw new Exception("NOT OK: No raise for 'this.ConversationA.InnerConversations.Add(otherConversationState)'");
}
catch (InvalidOperationException ioe)
{
if (msgErrorRx.IsMatch(ioe.Message))
{
this.Session["testResult"] = "OK";
}
else
{
throw new Exception("NOT OK " + ioe.Message);
}
}
finally
{
otherConversationState.EndConversation();
}
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
// make not new
otherConversationState.StartResumeConversation();
//try second by 'ParentConversation = '
otherConversationState.ParentConversation = this.ConversationA;
throw new Exception("NOT OK: No raise for 'this.ConversationAA.ParentConversation = otherConversationState'");
}
catch (InvalidOperationException ioe)
{
if (msgErrorRx.IsMatch(ioe.Message))
{
this.Session["testResult"] = "OK";
}
else
{
throw new Exception("NOT OK, 'ex.Message' not match :" + ioe.Message);
}
}
finally
{
otherConversationState.EndConversation();
}
//END: Raise error
//BEGIN: NO Raise error
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
// leave new
//try first by 'InnerConversations.Add'
this.ConversationA.InnerConversations.Add(otherConversationState);
this.Session["testResult"] = "OK";
}
finally
{
otherConversationState.EndConversation();
}
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
// leave new
//try second by 'ParentConversation = '
otherConversationState.ParentConversation = this.ConversationA;
this.Session["testResult"] = "OK";
}
finally
{
otherConversationState.EndConversation();
}
//END: NO Raise error
}
private void startResumeConversationIsEnded()
{
Regex msgErrorRx = new Regex(".*StartResumeConversation.*conversation.*is.*ended.*");
IConversationState otherConversationState = null;
//BEGIN: Raise error
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
// make not new
otherConversationState.EndConversation();
otherConversationState.StartResumeConversation();
throw new Exception("NOT OK: No raise for 'otherConversationState.StartResumeConversation()'");
}
catch (InvalidOperationException ioe)
{
if (msgErrorRx.IsMatch(ioe.Message))
{
this.Session["testResult"] = "OK";
}
else
{
throw new Exception("NOT OK " + ioe.Message);
}
}
finally
{
otherConversationState.EndConversation();
}
//END: Raise error
//BEGIN: NO Raise error
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
// make not new
otherConversationState.StartResumeConversation();
otherConversationState.EndConversation();
this.Session["testResult"] = "OK";
}
finally
{
otherConversationState.EndConversation();
}
//END: NO Raise error
}
private void participatingHibernateNotAlowed()
{
Regex msgErrorRx = new Regex(".*Participating.*Hibernate.*NOT.*ALLOWED.*");
try
{
//No raise
this.ConversationA.StartResumeConversation();
ISession session = this.SessionFactory.GetCurrentSession();
this.ConversationManager.FreeEnded();
this.ConversationManager.PauseConversations();
this.Session["testResult"] = "OK";
}
finally
{
this.ConversationManager.FreeEnded();
this.ConversationManager.PauseConversations();
}
try
{
//Raise
this.ConversationA.StartResumeConversation();
this.ConversationManager.FreeEnded();
this.ConversationManager.PauseConversations();
SessionScopeSettings sessionScopeSettings = new SessionScopeSettings(this.sessionFactory);
sessionScopeSettings.SingleSession = true;
using (new SessionScope(sessionScopeSettings, true))
{
ISession session = this.SessionFactory.GetCurrentSession();
this.ConversationA.StartResumeConversation();
}
throw new Exception("NOT OK: No raise for 'this.ConversationA.StartResumeConversation()'");
}
catch (InvalidOperationException ioe)
{
if (msgErrorRx.IsMatch(ioe.Message))
{
this.Session["testResult"] = "OK";
}
else
{
throw new Exception("NOT OK " + ioe.Message);
}
}
finally
{
this.ConversationManager.FreeEnded();
this.ConversationManager.PauseConversations();
}
}
private void idIsDifferentFromSpringName()
{
Regex msgErrorRx = new Regex(".*Id.*is.*different.*from.*spring.*name.*");
IConversationState otherConversationState = null;
//BEGIN: Raise error
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
// different name
((IObjectNameAware)otherConversationState).ObjectName = "different_name";
throw new Exception("NOT OK: No raise for '((IObjectNameAware)otherConversationState).ObjectName ='");
}
catch (InvalidOperationException ioe)
{
if (msgErrorRx.IsMatch(ioe.Message))
{
this.Session["testResult"] = "OK";
}
else
{
throw new Exception("NOT OK " + ioe.Message);
}
}
finally
{
otherConversationState.EndConversation();
}
//END: Raise error
//BEGIN: NO Raise error
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
// make not new
// different name
((IObjectNameAware)otherConversationState).ObjectName = "otherConversationState";
this.Session["testResult"] = "OK";
}
finally
{
otherConversationState.EndConversation();
}
//END: NO Raise error
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.ConversationWA.Impl;
using System.Text.RegularExpressions;
using NHibernate;
using Spring.Data.NHibernate.Support;
using Common.Logging;
using Spring.Objects.Factory;
public partial class IoeTests : System.Web.UI.Page
{
private static readonly ILog LOG = LogManager.GetLogger(typeof(IoeTests));
private IConversationState conversationA;
public IConversationState ConversationA
{
get { return conversationA; }
set { conversationA = value; }
}
private IConversationState conversationAA;
public IConversationState ConversationAA
{
get { return conversationAA; }
set { conversationAA = value; }
}
private IConversationManager conversationManager;
public IConversationManager ConversationManager
{
get { return conversationManager; }
set { conversationManager = value; }
}
private ISessionFactory sessionFactory;
public ISessionFactory SessionFactory
{
get { return sessionFactory; }
set { sessionFactory = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
try
{
if ("reset".Equals(this.Request.Params["test"]))
{
this.ConversationA.EndConversation();
this.Session["testResult"] = "OK";
}
else if ("alreadyHasAnotherManagerNotRaise".Equals(this.Request.Params["test"]))
{
this.alreadyHasAnotherManagerNotRaise();
}
else if ("alreadyHasAnotherManagerRaise".Equals(this.Request.Params["test"]))
{
this.alreadyHasAnotherManagerRaise();
}
else if ("conversationAlreadyDifferentParent".Equals(this.Request.Params["test"]))
{
this.conversationAlreadyDifferentParent();
}
else if ("setParentConversationIsNotNew".Equals(this.Request.Params["test"]))
{
this.setParentConversationIsNotNew();
}
else if ("startResumeConversationIsEnded".Equals(this.Request.Params["test"]))
{
this.startResumeConversationIsEnded();
}
else if ("participatingHibernateNotAlowed".Equals(this.Request.Params["test"]))
{
this.participatingHibernateNotAlowed();
}
else if ("idIsDifferentFromSpringName".Equals(this.Request.Params["test"]))
{
this.idIsDifferentFromSpringName();
}
else
{
throw new Exception("'test' request parameter was not recognized");
}
}
catch (Exception ex)
{
this.Session["testResult"] = "FAIL: " + ex.ToString();
}
}
private void alreadyHasAnotherManagerNotRaise()
{
IConversationManager otherConversationManager = new WebConversationManager();
//Not raise error
IConversationState otherConversationState = null;
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
otherConversationManager.AddConversation(otherConversationState);
this.Session["testResult"] = "OK";
}
catch (InvalidOperationException ioe)
{
this.Session["testResult"] = "NOT OK " + ioe.ToString();
}
finally
{
otherConversationState.EndConversation();
}
}
private void alreadyHasAnotherManagerRaise()
{
Regex msgErrorRx = new Regex(".*already.*has.*another.*manager.*");
IConversationManager otherConversationManager = null;
//Raise error
try
{
otherConversationManager = new WebConversationManager();
otherConversationManager.AddConversation(this.ConversationA);
this.Session["testResult"] = "NOT OK";
}
catch (InvalidOperationException ioe)
{
if (msgErrorRx.IsMatch(ioe.Message))
{
this.Session["testResult"] = "OK";
}
else
{
this.Session["testResult"] = "NOT OK " + ioe.Message;
}
}
}
private void conversationAlreadyDifferentParent()
{
Regex msgErrorRx = new Regex(".*conversation.*already.*different.*parent.*");
//BEGIN: Raise error
IConversationState otherConversationState = null;
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
//try first by 'InnerConversations.Add'
otherConversationState.InnerConversations.Add(this.ConversationAA);
throw new Exception("NOT OK: No raise for 'InnerConversations.Add(this.ConversationAA)'");
}
catch (InvalidOperationException ioe)
{
if (msgErrorRx.IsMatch(ioe.Message))
{
this.Session["testResult"] = "OK";
}
else
{
throw new Exception("NOT OK " + ioe.Message);
}
}
finally
{
otherConversationState.EndConversation();
}
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
//try second by 'ParentConversation = '
this.ConversationAA.ParentConversation = otherConversationState;
throw new Exception("NOT OK: No raise for 'this.ConversationAA.ParentConversation = otherConversationState'");
}
catch (InvalidOperationException ioe)
{
if (msgErrorRx.IsMatch(ioe.Message))
{
this.Session["testResult"] = "OK";
}
else
{
throw new Exception("NOT OK, 'ex.Message' not match :" + ioe.Message);
}
}
finally
{
otherConversationState.EndConversation();
}
//END: Raise error
//BEGIN: NO Raise error
otherConversationState = null;
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
//try first by 'InnerConversations.Add'
this.ConversationAA.InnerConversations.Add(otherConversationState);
this.Session["testResult"] = "OK";
}
finally
{
otherConversationState.EndConversation();
}
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
//try second by 'ParentConversation = '
otherConversationState.ParentConversation = this.ConversationA;
this.Session["testResult"] = "OK";
}
finally
{
otherConversationState.EndConversation();
}
//END: NO Raise error
}
private void setParentConversationIsNotNew()
{
Regex msgErrorRx = new Regex(".*Conversation.*not.*new.*Conversation.Id.*Parent.*Tried.*");
IConversationState otherConversationState = null;
//BEGIN: Raise error
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
// make not new
otherConversationState.StartResumeConversation();
//try first by 'InnerConversations.Add'
this.ConversationA.InnerConversations.Add(otherConversationState);
throw new Exception("NOT OK: No raise for 'this.ConversationA.InnerConversations.Add(otherConversationState)'");
}
catch (InvalidOperationException ioe)
{
if (msgErrorRx.IsMatch(ioe.Message))
{
this.Session["testResult"] = "OK";
}
else
{
throw new Exception("NOT OK " + ioe.Message);
}
}
finally
{
otherConversationState.EndConversation();
}
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
// make not new
otherConversationState.StartResumeConversation();
//try second by 'ParentConversation = '
otherConversationState.ParentConversation = this.ConversationA;
throw new Exception("NOT OK: No raise for 'this.ConversationAA.ParentConversation = otherConversationState'");
}
catch (InvalidOperationException ioe)
{
if (msgErrorRx.IsMatch(ioe.Message))
{
this.Session["testResult"] = "OK";
}
else
{
throw new Exception("NOT OK, 'ex.Message' not match :" + ioe.Message);
}
}
finally
{
otherConversationState.EndConversation();
}
//END: Raise error
//BEGIN: NO Raise error
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
// leave new
//try first by 'InnerConversations.Add'
this.ConversationA.InnerConversations.Add(otherConversationState);
this.Session["testResult"] = "OK";
}
finally
{
otherConversationState.EndConversation();
}
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
// leave new
//try second by 'ParentConversation = '
otherConversationState.ParentConversation = this.ConversationA;
this.Session["testResult"] = "OK";
}
finally
{
otherConversationState.EndConversation();
}
//END: NO Raise error
}
private void startResumeConversationIsEnded()
{
Regex msgErrorRx = new Regex(".*StartResumeConversation.*conversation.*is.*ended.*");
IConversationState otherConversationState = null;
//BEGIN: Raise error
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
// make not new
otherConversationState.EndConversation();
otherConversationState.StartResumeConversation();
throw new Exception("NOT OK: No raise for 'otherConversationState.StartResumeConversation()'");
}
catch (InvalidOperationException ioe)
{
if (msgErrorRx.IsMatch(ioe.Message))
{
this.Session["testResult"] = "OK";
}
else
{
throw new Exception("NOT OK " + ioe.Message);
}
}
finally
{
otherConversationState.EndConversation();
}
//END: Raise error
//BEGIN: NO Raise error
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
// make not new
otherConversationState.StartResumeConversation();
otherConversationState.EndConversation();
this.Session["testResult"] = "OK";
}
finally
{
otherConversationState.EndConversation();
}
//END: NO Raise error
}
private void participatingHibernateNotAlowed()
{
Regex msgErrorRx = new Regex(".*Participating.*Hibernate.*NOT.*ALLOWED.*");
try
{
//No raise
this.ConversationA.StartResumeConversation();
ISession session = this.SessionFactory.GetCurrentSession();
this.ConversationManager.FreeEnded();
this.ConversationManager.PauseConversations();
this.Session["testResult"] = "OK";
}
finally
{
this.ConversationManager.FreeEnded();
this.ConversationManager.PauseConversations();
}
try
{
//Raise
this.ConversationA.StartResumeConversation();
this.ConversationManager.FreeEnded();
this.ConversationManager.PauseConversations();
SessionScopeSettings sessionScopeSettings = new SessionScopeSettings(this.sessionFactory);
sessionScopeSettings.SingleSession = true;
using (new SessionScope(sessionScopeSettings, true))
{
ISession session = this.SessionFactory.GetCurrentSession();
this.ConversationA.StartResumeConversation();
}
throw new Exception("NOT OK: No raise for 'this.ConversationA.StartResumeConversation()'");
}
catch (InvalidOperationException ioe)
{
if (msgErrorRx.IsMatch(ioe.Message))
{
this.Session["testResult"] = "OK";
}
else
{
throw new Exception("NOT OK " + ioe.Message);
}
}
finally
{
this.ConversationManager.FreeEnded();
this.ConversationManager.PauseConversations();
}
}
private void idIsDifferentFromSpringName()
{
Regex msgErrorRx = new Regex(".*Id.*is.*different.*from.*spring.*name.*");
IConversationState otherConversationState = null;
//BEGIN: Raise error
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
// different name
((IObjectNameAware)otherConversationState).ObjectName = "different_name";
throw new Exception("NOT OK: No raise for '((IObjectNameAware)otherConversationState).ObjectName ='");
}
catch (InvalidOperationException ioe)
{
if (msgErrorRx.IsMatch(ioe.Message))
{
this.Session["testResult"] = "OK";
}
else
{
throw new Exception("NOT OK " + ioe.Message);
}
}
finally
{
otherConversationState.EndConversation();
}
//END: Raise error
//BEGIN: NO Raise error
try
{
otherConversationState = new WebConversationSpringState();
otherConversationState.Id = "otherConversationState";
// make not new
// different name
((IObjectNameAware)otherConversationState).ObjectName = "otherConversationState";
this.Session["testResult"] = "OK";
}
finally
{
otherConversationState.EndConversation();
}
//END: NO Raise error
}
}

View File

@@ -1,3 +1,3 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PatialEndConv_A_B_Begin.aspx.cs" Inherits="PatialEndConv_A_B_Begin" %><%
Response.Write("OK");
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PatialEndConv_A_B_Begin.aspx.cs" Inherits="PatialEndConv_A_B_Begin" %><%
Response.Write("OK");
%>

View File

@@ -1,15 +1,15 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
public partial class PatialEndConv_A_B_Begin : PatialEndConvBeginBasePage
{
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
public partial class PatialEndConv_A_B_Begin : PatialEndConvBeginBasePage
{
}

View File

@@ -1,3 +1,3 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PatialEndConv_A_B_End.aspx.cs" Inherits="PatialEndConv_A_B_End" %><%
Response.Write("OK");
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PatialEndConv_A_B_End.aspx.cs" Inherits="PatialEndConv_A_B_End" %><%
Response.Write("OK");
%>

View File

@@ -1,15 +1,15 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
public partial class PatialEndConv_A_B_End : PatialEndConvEndBasePage
{
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
public partial class PatialEndConv_A_B_End : PatialEndConvEndBasePage
{
}

View File

@@ -1,3 +1,3 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PatialEndConv_A_Begin.aspx.cs" Inherits="PatialEndConv_A_Begin" %><%
Response.Write("OK");
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PatialEndConv_A_Begin.aspx.cs" Inherits="PatialEndConv_A_Begin" %><%
Response.Write("OK");
%>

View File

@@ -1,15 +1,15 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
public partial class PatialEndConv_A_Begin : PatialEndConvBeginBasePage
{
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
public partial class PatialEndConv_A_Begin : PatialEndConvBeginBasePage
{
}

View File

@@ -1,3 +1,3 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PatialEndConv_A_End.aspx.cs" Inherits="PatialEndConv_A_End" %><%
Response.Write("OK");
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PatialEndConv_A_End.aspx.cs" Inherits="PatialEndConv_A_End" %><%
Response.Write("OK");
%>

View File

@@ -1,15 +1,15 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
public partial class PatialEndConv_A_End : PatialEndConvEndBasePage
{
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
public partial class PatialEndConv_A_End : PatialEndConvEndBasePage
{
}

View File

@@ -1,3 +1,3 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RedirectErrorNoPauseConversation.aspx.cs" Inherits="RedirectErrorNoPauseConversation" %><%
Response.Write("OK");
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RedirectErrorNoPauseConversation.aspx.cs" Inherits="RedirectErrorNoPauseConversation" %><%
Response.Write("OK");
%>

View File

@@ -1,58 +1,58 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Entities;
using System.Threading;
using NHibernate;
public partial class RedirectErrorNoPauseConversation : System.Web.UI.Page
{
private IConversationState conversation;
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (this.Request.Params["step"].Equals("obtain_session_cookie"))
{
//nothing, only for obtain session cookie
}
if (this.Request.Params["step"].Equals("step_01"))
{
this.Conversation.StartResumeConversation();
//Open Session for the first time
ISession ss = this.Conversation.SessionFactory.GetCurrentSession();
this.Response.Redirect("RedirectErrorNoPauseConversation.aspx?step=step_02");
}
else if (this.Request.Params["step"].Equals("step_02"))
{
this.Conversation.StartResumeConversation();
}
else if (this.Request.Params["step"].Equals("Some_Exception"))
{
this.Conversation.StartResumeConversation();
//Open Session for the first time
ISession ss = this.Conversation.SessionFactory.GetCurrentSession();
throw new Exception("Some_Exception");
}
else if (this.Request.Params["step"].Equals("Post_Some_Exception"))
{
this.Conversation.StartResumeConversation();
}
else if (this.Request.Params["step"].Equals("end_conversation"))
{
this.Conversation.EndConversation();
}
}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Entities;
using System.Threading;
using NHibernate;
public partial class RedirectErrorNoPauseConversation : System.Web.UI.Page
{
private IConversationState conversation;
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (this.Request.Params["step"].Equals("obtain_session_cookie"))
{
//nothing, only for obtain session cookie
}
if (this.Request.Params["step"].Equals("step_01"))
{
this.Conversation.StartResumeConversation();
//Open Session for the first time
ISession ss = this.Conversation.SessionFactory.GetCurrentSession();
this.Response.Redirect("RedirectErrorNoPauseConversation.aspx?step=step_02");
}
else if (this.Request.Params["step"].Equals("step_02"))
{
this.Conversation.StartResumeConversation();
}
else if (this.Request.Params["step"].Equals("Some_Exception"))
{
this.Conversation.StartResumeConversation();
//Open Session for the first time
ISession ss = this.Conversation.SessionFactory.GetCurrentSession();
throw new Exception("Some_Exception");
}
else if (this.Request.Params["step"].Equals("Post_Some_Exception"))
{
this.Conversation.StartResumeConversation();
}
else if (this.Request.Params["step"].Equals("end_conversation"))
{
this.Conversation.EndConversation();
}
}
}

View File

@@ -1,3 +1,3 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SPCLazyLoadTest_A_Begin.aspx.cs" Inherits="SPCLazyLoadTest_A_Begin" %><%
Response.Write("OK");
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SPCLazyLoadTest_A_Begin.aspx.cs" Inherits="SPCLazyLoadTest_A_Begin" %><%
Response.Write("OK");
%>

View File

@@ -1,45 +1,45 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using NHibernate;
using Spring.Entities;
public partial class SPCLazyLoadTest_A_Begin : System.Web.UI.Page
{
private IConversationState conversation;
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
private ISessionFactory sessionFactory;
public ISessionFactory SessionFactory
{
get { return sessionFactory; }
set { sessionFactory = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (this.Request["endConversation"] != null && bool.Parse(this.Request["endConversation"]))
{
this.Conversation.EndConversation();
}
else
{
this.Conversation.StartResumeConversation();
ISession session = this.SessionFactory.GetCurrentSession();
SPCMasterEnt sPCMasterEnt = session.Get<SPCMasterEnt>(1);
this.Session["sPCMasterEnt"] = sPCMasterEnt;
}
}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using NHibernate;
using Spring.Entities;
public partial class SPCLazyLoadTest_A_Begin : System.Web.UI.Page
{
private IConversationState conversation;
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
private ISessionFactory sessionFactory;
public ISessionFactory SessionFactory
{
get { return sessionFactory; }
set { sessionFactory = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (this.Request["endConversation"] != null && bool.Parse(this.Request["endConversation"]))
{
this.Conversation.EndConversation();
}
else
{
this.Conversation.StartResumeConversation();
ISession session = this.SessionFactory.GetCurrentSession();
SPCMasterEnt sPCMasterEnt = session.Get<SPCMasterEnt>(1);
this.Session["sPCMasterEnt"] = sPCMasterEnt;
}
}
}

View File

@@ -1,3 +1,3 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SPCLazyLoadTest_A_Status.aspx.cs" Inherits="SPCLazyLoadTest_A_Status" %><%
Response.Write("OK");
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SPCLazyLoadTest_A_Status.aspx.cs" Inherits="SPCLazyLoadTest_A_Status" %><%
Response.Write("OK");
%>

View File

@@ -1,48 +1,48 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Entities;
using Common.Logging;
using NHibernate;
public partial class SPCLazyLoadTest_A_Status : System.Web.UI.Page
{
private static readonly ILog LOG = LogManager.GetLogger(typeof(SPCLazyLoadTest_A_Status));
private IConversationState conversation;
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
try
{
this.Conversation.StartResumeConversation();
SPCMasterEnt sPCMasterEnt = (SPCMasterEnt)this.Session["sPCMasterEnt"];
foreach (SPCDetailEnt sPCDetailEntItem in sPCMasterEnt.SPCDetailEntList)
{
LOG.Debug(String.Format("Page_Load: sPCDetailEntItem.Description={0}", sPCDetailEntItem.Description));
}
this.Session["messageTest"] = "no lazy error";
}
catch (LazyInitializationException lex)
{
this.Session["messageTest"] = lex.GetType().FullName + ": " + lex.Message + "\n" + lex.StackTrace;
}
catch (Exception ex)
{
this.Session["messageTest"] = ex.GetType().FullName + ": " + ex.Message + "\n" + ex.StackTrace;
}
}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Entities;
using Common.Logging;
using NHibernate;
public partial class SPCLazyLoadTest_A_Status : System.Web.UI.Page
{
private static readonly ILog LOG = LogManager.GetLogger(typeof(SPCLazyLoadTest_A_Status));
private IConversationState conversation;
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
try
{
this.Conversation.StartResumeConversation();
SPCMasterEnt sPCMasterEnt = (SPCMasterEnt)this.Session["sPCMasterEnt"];
foreach (SPCDetailEnt sPCDetailEntItem in sPCMasterEnt.SPCDetailEntList)
{
LOG.Debug(String.Format("Page_Load: sPCDetailEntItem.Description={0}", sPCDetailEntItem.Description));
}
this.Session["messageTest"] = "no lazy error";
}
catch (LazyInitializationException lex)
{
this.Session["messageTest"] = lex.GetType().FullName + ": " + lex.Message + "\n" + lex.StackTrace;
}
catch (Exception ex)
{
this.Session["messageTest"] = ex.GetType().FullName + ": " + ex.Message + "\n" + ex.StackTrace;
}
}
}

View File

@@ -1,3 +1,3 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SPCSwitchConversationSameRequest.aspx.cs" Inherits="SPCSwitchConversationSameRequest" %><%
Response.Write("OK");
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SPCSwitchConversationSameRequest.aspx.cs" Inherits="SPCSwitchConversationSameRequest" %><%
Response.Write("OK");
%>

View File

@@ -1,112 +1,112 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Entities;
using NHibernate;
using Common.Logging;
public partial class SPCSwitchConversationSameRequest : System.Web.UI.Page
{
private static readonly ILog LOG = LogManager.GetLogger(typeof(SPCSwitchConversationSameRequest));
private IConversationState conversationA;
public IConversationState ConversationA
{
get { return conversationA; }
set { conversationA = value; }
}
private IConversationState conversationB;
public IConversationState ConversationB
{
get { return conversationB; }
set { conversationB = value; }
}
private ISessionFactory sessionFactory;
public ISessionFactory SessionFactory
{
get { return sessionFactory; }
set { sessionFactory = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.ConversationA.StartResumeConversation();
SPCMasterEnt sPCMasterEntA = this.SessionFactory.GetCurrentSession().Get<SPCMasterEnt>(1);
this.ConversationB.StartResumeConversation();
SPCMasterEnt sPCMasterEntB = this.SessionFactory.GetCurrentSession().Get<SPCMasterEnt>(1);
//testeRaizeLazy_A
try
{
this.LoopSPCMasterEnt(sPCMasterEntA, "sPCMasterEntA");
}
catch (LazyInitializationException)
{
this.Session["testeRaizeLazy_A"] = "OK";
}
catch (Exception ex)
{
this.Session["testeRaizeLazy_A"] = ex.ToString();
}
//testeRaizeLazy_B
this.ConversationA.StartResumeConversation();
try
{
this.LoopSPCMasterEnt(sPCMasterEntB, "sPCMasterEntB");
}
catch (LazyInitializationException)
{
this.Session["testeRaizeLazy_B"] = "OK";
}
catch (Exception ex)
{
this.Session["testeRaizeLazy_B"] = ex.ToString();
}
//testeNoRaizeLazy_A
this.ConversationA.StartResumeConversation();
try
{
this.LoopSPCMasterEnt(sPCMasterEntA, "sPCMasterEntA");
this.Session["testeNoRaizeLazy_A"] = "OK";
}
catch (Exception ex)
{
this.Session["testeNoRaizeLazy_A"] = ex.ToString();
}
//testeNoRaizeLazy_B
this.ConversationB.StartResumeConversation();
try
{
this.LoopSPCMasterEnt(sPCMasterEntB, "sPCMasterEntB");
this.Session["testeNoRaizeLazy_B"] = "OK";
}
catch (Exception ex)
{
this.Session["testeNoRaizeLazy_B"] = ex.ToString();
}
this.ConversationA.EndConversation();
this.ConversationB.EndConversation();
}
private void LoopSPCMasterEnt(SPCMasterEnt sPCMasterEnt, String desc)
{
foreach (SPCDetailEnt sPCDetailEntItem in sPCMasterEnt.SPCDetailEntList)
{
LOG.Debug(String.Format("Page_Load({1}): sPCDetailEntItem.Description={0}", sPCDetailEntItem.Description, desc));
}
}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Entities;
using NHibernate;
using Common.Logging;
public partial class SPCSwitchConversationSameRequest : System.Web.UI.Page
{
private static readonly ILog LOG = LogManager.GetLogger(typeof(SPCSwitchConversationSameRequest));
private IConversationState conversationA;
public IConversationState ConversationA
{
get { return conversationA; }
set { conversationA = value; }
}
private IConversationState conversationB;
public IConversationState ConversationB
{
get { return conversationB; }
set { conversationB = value; }
}
private ISessionFactory sessionFactory;
public ISessionFactory SessionFactory
{
get { return sessionFactory; }
set { sessionFactory = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.ConversationA.StartResumeConversation();
SPCMasterEnt sPCMasterEntA = this.SessionFactory.GetCurrentSession().Get<SPCMasterEnt>(1);
this.ConversationB.StartResumeConversation();
SPCMasterEnt sPCMasterEntB = this.SessionFactory.GetCurrentSession().Get<SPCMasterEnt>(1);
//testeRaizeLazy_A
try
{
this.LoopSPCMasterEnt(sPCMasterEntA, "sPCMasterEntA");
}
catch (LazyInitializationException)
{
this.Session["testeRaizeLazy_A"] = "OK";
}
catch (Exception ex)
{
this.Session["testeRaizeLazy_A"] = ex.ToString();
}
//testeRaizeLazy_B
this.ConversationA.StartResumeConversation();
try
{
this.LoopSPCMasterEnt(sPCMasterEntB, "sPCMasterEntB");
}
catch (LazyInitializationException)
{
this.Session["testeRaizeLazy_B"] = "OK";
}
catch (Exception ex)
{
this.Session["testeRaizeLazy_B"] = ex.ToString();
}
//testeNoRaizeLazy_A
this.ConversationA.StartResumeConversation();
try
{
this.LoopSPCMasterEnt(sPCMasterEntA, "sPCMasterEntA");
this.Session["testeNoRaizeLazy_A"] = "OK";
}
catch (Exception ex)
{
this.Session["testeNoRaizeLazy_A"] = ex.ToString();
}
//testeNoRaizeLazy_B
this.ConversationB.StartResumeConversation();
try
{
this.LoopSPCMasterEnt(sPCMasterEntB, "sPCMasterEntB");
this.Session["testeNoRaizeLazy_B"] = "OK";
}
catch (Exception ex)
{
this.Session["testeNoRaizeLazy_B"] = ex.ToString();
}
this.ConversationA.EndConversation();
this.ConversationB.EndConversation();
}
private void LoopSPCMasterEnt(SPCMasterEnt sPCMasterEnt, String desc)
{
foreach (SPCDetailEnt sPCDetailEntItem in sPCMasterEnt.SPCDetailEntList)
{
LOG.Debug(String.Format("Page_Load({1}): sPCDetailEntItem.Description={0}", sPCDetailEntItem.Description, desc));
}
}
}

View File

@@ -1,84 +1,84 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Data.NHibernate.Support;
using NHibernate;
using Spring.Entities;
using Spring.Spring.Data.Common;
using NUnit.Framework;
using Spring.Bsn;
using NHibernate.Impl;
using System.Reflection;
using NHibernate.Cfg;
using Spring.Context;
using System.Collections.Generic;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
/// <summary>
/// Page for <see cref="Spring.ConversationWA.WebConversationStateTest.SerializeConversationTest()"/>.
/// </summary>
public partial class SerializeConversationTest : System.Web.UI.Page
{
private IConversationState conversation;
/// <summary>
/// <see cref="IConversationState"/>
/// </summary>
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
try
{
this.Conversation.StartResumeConversation();
ISession ss = this.Conversation.SessionFactory.GetCurrentSession();
IList<SPCDetailEnt> deatilList = ss.CreateCriteria<SPCDetailEnt>().List<SPCDetailEnt>();
this.Conversation.ConversationManager.PauseConversations();
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
System.Collections.ArrayList sessionContent = new System.Collections.ArrayList();
foreach (String keyItem in this.Session.Keys)
{
sessionContent.Add(this.Session[keyItem]);
}
bf.Serialize(ms, sessionContent);
if (this.Session["SPCDetailEnt#1"] == null)
{
//at the first time
this.Session["SPCDetailEnt#1"] = ss.Get<SPCDetailEnt>(1);
}
else
{
//at the second time
if (!Object.ReferenceEquals(this.Session["SPCDetailEnt#1"], ss.Get<SPCDetailEnt>(1)))
throw new InvalidOperationException("!Object.ReferenceEquals(this.Session['SPCDetailEnt#1'], ss.Get<SPCDetailEnt>(1))");
}
Response.Clear();
Response.Write("OK");
}
catch (Exception ex)
{
Response.Clear();
Response.Write(ex.Message + " " + ex.StackTrace);
}
}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Data.NHibernate.Support;
using NHibernate;
using Spring.Entities;
using Spring.Spring.Data.Common;
using NUnit.Framework;
using Spring.Bsn;
using NHibernate.Impl;
using System.Reflection;
using NHibernate.Cfg;
using Spring.Context;
using System.Collections.Generic;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
/// <summary>
/// Page for <see cref="Spring.ConversationWA.WebConversationStateTest.SerializeConversationTest()"/>.
/// </summary>
public partial class SerializeConversationTest : System.Web.UI.Page
{
private IConversationState conversation;
/// <summary>
/// <see cref="IConversationState"/>
/// </summary>
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
try
{
this.Conversation.StartResumeConversation();
ISession ss = this.Conversation.SessionFactory.GetCurrentSession();
IList<SPCDetailEnt> deatilList = ss.CreateCriteria<SPCDetailEnt>().List<SPCDetailEnt>();
this.Conversation.ConversationManager.PauseConversations();
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
System.Collections.ArrayList sessionContent = new System.Collections.ArrayList();
foreach (String keyItem in this.Session.Keys)
{
sessionContent.Add(this.Session[keyItem]);
}
bf.Serialize(ms, sessionContent);
if (this.Session["SPCDetailEnt#1"] == null)
{
//at the first time
this.Session["SPCDetailEnt#1"] = ss.Get<SPCDetailEnt>(1);
}
else
{
//at the second time
if (!Object.ReferenceEquals(this.Session["SPCDetailEnt#1"], ss.Get<SPCDetailEnt>(1)))
throw new InvalidOperationException("!Object.ReferenceEquals(this.Session['SPCDetailEnt#1'], ss.Get<SPCDetailEnt>(1))");
}
Response.Clear();
Response.Write("OK");
}
catch (Exception ex)
{
Response.Clear();
Response.Write(ex.Message + " " + ex.StackTrace);
}
}
}

View File

@@ -1,16 +1,16 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SessionIsClosedA.aspx.cs" Inherits="SessionIsClosedA" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SessionIsClosedA.aspx.cs" Inherits="SessionIsClosedA" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>

View File

@@ -1,46 +1,46 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Entities;
using NHibernate;
public partial class SessionIsClosedA : System.Web.UI.Page
{
private IConversationState conversation;
/// <summary>
/// <see cref="IConversationState"/>
/// </summary>
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.Session["result"] = "NOT OK";
try
{
this.Conversation.StartResumeConversation();
//database access
ISession session = this.Conversation.SessionFactory.GetCurrentSession();
SPCMasterEnt sPCMasterEnt = session.Get<SPCMasterEnt>(1);
this.Session["result"] = "OK";
}
catch (Exception ex)
{
this.Session["result"] = ex.Message;
}
}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Entities;
using NHibernate;
public partial class SessionIsClosedA : System.Web.UI.Page
{
private IConversationState conversation;
/// <summary>
/// <see cref="IConversationState"/>
/// </summary>
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.Session["result"] = "NOT OK";
try
{
this.Conversation.StartResumeConversation();
//database access
ISession session = this.Conversation.SessionFactory.GetCurrentSession();
SPCMasterEnt sPCMasterEnt = session.Get<SPCMasterEnt>(1);
this.Session["result"] = "OK";
}
catch (Exception ex)
{
this.Session["result"] = ex.Message;
}
}
}

View File

@@ -1,16 +1,16 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SessionIsClosedB.aspx.cs" Inherits="SessionIsClosedB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SessionIsClosedB.aspx.cs" Inherits="SessionIsClosedB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>

View File

@@ -1,71 +1,71 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Entities;
using NHibernate;
public partial class SessionIsClosedB : System.Web.UI.Page
{
private IConversationState conversation;
/// <summary>
/// <see cref="IConversationState"/>
/// </summary>
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
private IConversationState conversationA;
/// <summary>
/// "convASessionIsClosed"
/// </summary>
public IConversationState ConversationA
{
get { return conversationA; }
set { conversationA = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.Session["result"] = "NOT OK";
try
{
if ("endA_FreeEnded".Equals(this.Request["command"]))
{
this.Conversation.StartResumeConversation();
/*
* Producing the error "HibernateException: Session is closed..." This is because in
* "SessionPerConversationScope.LazySessionPerConversationHolder.CloseConversation(IConversationState)"
* we are closing the "SessionPerConversationScope.LazySessionPerConversationHolder.activeConversation"
* instead of parameter "conversation" (BUG).
*/
this.ConversationA.EndConversation();
this.ConversationA.ConversationManager.FreeEnded();
this.Conversation.ConversationManager.PauseConversations();
}
this.Conversation.StartResumeConversation();
//database access
ISession session = this.Conversation.SessionFactory.GetCurrentSession();
SPCMasterEnt sPCMasterEnt = session.Get<SPCMasterEnt>(1);
this.Session["result"] = "OK";
}
catch (Exception ex)
{
this.Session["result"] = ex.Message;
}
}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
using Spring.Entities;
using NHibernate;
public partial class SessionIsClosedB : System.Web.UI.Page
{
private IConversationState conversation;
/// <summary>
/// <see cref="IConversationState"/>
/// </summary>
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
private IConversationState conversationA;
/// <summary>
/// "convASessionIsClosed"
/// </summary>
public IConversationState ConversationA
{
get { return conversationA; }
set { conversationA = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.Session["result"] = "NOT OK";
try
{
if ("endA_FreeEnded".Equals(this.Request["command"]))
{
this.Conversation.StartResumeConversation();
/*
* Producing the error "HibernateException: Session is closed..." This is because in
* "SessionPerConversationScope.LazySessionPerConversationHolder.CloseConversation(IConversationState)"
* we are closing the "SessionPerConversationScope.LazySessionPerConversationHolder.activeConversation"
* instead of parameter "conversation" (BUG).
*/
this.ConversationA.EndConversation();
this.ConversationA.ConversationManager.FreeEnded();
this.Conversation.ConversationManager.PauseConversations();
}
this.Conversation.StartResumeConversation();
//database access
ISession session = this.Conversation.SessionFactory.GetCurrentSession();
SPCMasterEnt sPCMasterEnt = session.Get<SPCMasterEnt>(1);
this.Session["result"] = "OK";
}
catch (Exception ex)
{
this.Session["result"] = ex.Message;
}
}
}

View File

@@ -1,3 +1,3 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TimeOut_NoTimeOut.aspx.cs" Inherits="TimeOut_NoTimeOut" %><%
Response.Write("OK");
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TimeOut_NoTimeOut.aspx.cs" Inherits="TimeOut_NoTimeOut" %><%
Response.Write("OK");
%>

View File

@@ -1,32 +1,32 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
public partial class TimeOut_NoTimeOut : System.Web.UI.Page
{
private IConversationState conversation;
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.Conversation.StartResumeConversation();
this.Session["keyTimeOut_Old"] = Conversation["keyTimeOut"];
Conversation["keyTimeOut"] = "this is the new value";
this.Session["keyTimeOut_New"] = Conversation["keyTimeOut"];
//This should not cause the end of the conversation by timeout
this.Conversation.LastAccess = DateTime.Now.AddMilliseconds(-(this.Conversation.TimeOut / 2));
}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
public partial class TimeOut_NoTimeOut : System.Web.UI.Page
{
private IConversationState conversation;
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
this.Conversation.StartResumeConversation();
this.Session["keyTimeOut_Old"] = Conversation["keyTimeOut"];
Conversation["keyTimeOut"] = "this is the new value";
this.Session["keyTimeOut_New"] = Conversation["keyTimeOut"];
//This should not cause the end of the conversation by timeout
this.Conversation.LastAccess = DateTime.Now.AddMilliseconds(-(this.Conversation.TimeOut / 2));
}
}

View File

@@ -1,3 +1,3 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TimeOut_WithTimeOut.aspx.cs" Inherits="TimeOut_WithTimeOut" %><%
Response.Write("OK");
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TimeOut_WithTimeOut.aspx.cs" Inherits="TimeOut_WithTimeOut" %><%
Response.Write("OK");
%>

View File

@@ -1,27 +1,27 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
public partial class TimeOut_WithTimeOut : System.Web.UI.Page
{
private IConversationState conversation;
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
//This should cause the end of the conversation by timeout
this.Conversation.LastAccess = DateTime.Now.AddMilliseconds(-(this.Conversation.TimeOut * 2));
}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Spring.ConversationWA;
public partial class TimeOut_WithTimeOut : System.Web.UI.Page
{
private IConversationState conversation;
public IConversationState Conversation
{
get { return conversation; }
set { conversation = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
//This should cause the end of the conversation by timeout
this.Conversation.LastAccess = DateTime.Now.AddMilliseconds(-(this.Conversation.TimeOut * 2));
}
}

View File

@@ -1,99 +1,99 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
<section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
</sectionGroup>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter, Common.Logging">
<arg key="level" value="ERROR" />
</factoryAdapter>
</logging>
<!--
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net">
<arg key="configType" value="FILE-WATCH" />
<arg key="configFile" value="~/log4net.config" />
</factoryAdapter>
</logging>
-->
</common>
<spring>
<parsers>
<parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data" />
<parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data" />
</parsers>
<context name="SpringConvWbApp" type="Spring.Context.Support.WebApplicationContext, Spring.Web">
<resource uri="~/services.xml.config"/>
</context>
</spring>
<appSettings>
<add key="testkey" value="testvalue" />
</appSettings>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<httpModules>
<add name="NUnitAspExModule" type="NUnitAspEx.AspTestExecutionModule, NUnitAspEx" />
<add name="SerializeConversationTestModule" type="Spring.ConversationWA.SerializeConversationTestModule, Spring.ConversationWA.NH32.Tests"/>
<add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
<add name="ConversationModule" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH32"/>
</httpModules>
<httpHandlers>
<add verb="*" path="*.test" type="NUnitAspEx.AspTestMethodHandler, NUnitAspEx" validate="false" />
<add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
<add verb="*" path="ContextMonitor.ashx" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
</httpHandlers>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="NUnitAspExModule" preCondition="integratedMode" type="NUnitAspEx.AspTestExecutionModule, NUnitAspEx" />
<add name="SerializeConversationTestModule" type="Spring.ConversationWA.SerializeConversationTestModule, Spring.ConversationWA.NH32.Tests"/>
<add name="Spring" preCondition="integratedMode" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
<add name="ConversationModule" preCondition="integratedMode" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH32"/>
</modules>
<handlers>
<add name="AspTestMethodHandler" verb="*" path="*.test" preCondition="integratedMode" type="NUnitAspEx.AspTestMethodHandler, NUnitAspEx" validate="false" />
<add name="PageHandlerFactory" verb="*" path="*.aspx" preCondition="integratedMode" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
<add name="ContextMonitor" verb="*" path="ContextMonitor.ashx" preCondition="integratedMode" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
</handlers>
</system.webServer>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite"
publicKeyToken="db937bc2d44ff139"
culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="1.0.80.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
<section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
</sectionGroup>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter, Common.Logging">
<arg key="level" value="ERROR" />
</factoryAdapter>
</logging>
<!--
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net">
<arg key="configType" value="FILE-WATCH" />
<arg key="configFile" value="~/log4net.config" />
</factoryAdapter>
</logging>
-->
</common>
<spring>
<parsers>
<parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data" />
<parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data" />
</parsers>
<context name="SpringConvWbApp" type="Spring.Context.Support.WebApplicationContext, Spring.Web">
<resource uri="~/services.xml.config"/>
</context>
</spring>
<appSettings>
<add key="testkey" value="testvalue" />
</appSettings>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<httpModules>
<add name="NUnitAspExModule" type="NUnitAspEx.AspTestExecutionModule, NUnitAspEx" />
<add name="SerializeConversationTestModule" type="Spring.ConversationWA.SerializeConversationTestModule, Spring.ConversationWA.NH32.Tests"/>
<add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
<add name="ConversationModule" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH32"/>
</httpModules>
<httpHandlers>
<add verb="*" path="*.test" type="NUnitAspEx.AspTestMethodHandler, NUnitAspEx" validate="false" />
<add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
<add verb="*" path="ContextMonitor.ashx" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
</httpHandlers>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="NUnitAspExModule" preCondition="integratedMode" type="NUnitAspEx.AspTestExecutionModule, NUnitAspEx" />
<add name="SerializeConversationTestModule" type="Spring.ConversationWA.SerializeConversationTestModule, Spring.ConversationWA.NH32.Tests"/>
<add name="Spring" preCondition="integratedMode" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
<add name="ConversationModule" preCondition="integratedMode" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH32"/>
</modules>
<handlers>
<add name="AspTestMethodHandler" verb="*" path="*.test" preCondition="integratedMode" type="NUnitAspEx.AspTestMethodHandler, NUnitAspEx" validate="false" />
<add name="PageHandlerFactory" verb="*" path="*.aspx" preCondition="integratedMode" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
<add name="ContextMonitor" verb="*" path="ContextMonitor.ashx" preCondition="integratedMode" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
</handlers>
</system.webServer>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite"
publicKeyToken="db937bc2d44ff139"
culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="1.0.80.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@@ -1,67 +1,67 @@
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<!--
(fonte:)
The "importance" of the log statement can be set by using the appropriate
methods: debug<info<warn<error<fatal "debug" should be used for debug
statements, "info" for general information logged by the application, "warn"
for warning of problematic conditions, "error" when a recoverable error and
"fatal" when a non-recoverable error occured. In the log-configuration this
level can be configured for output of individual components: e.g., you could
define that the "main" application should log everything up to "info" level,
Springframework only up to "warn" and Hibernate only "error" statements.
Log4J can be configured (without changing the code) to filter these messages,
store them in a database, output them on a console or even send you a mail
if certain errors arise - and all of that quite fast.
debug<info<warn<error<fatal
-"debug" should be used for debug statements
-"info" for general information logged by the application
-"warn" for warning of problematic conditions
-"error" when a recoverable error
-"fatal" when a non-recoverable error occured
-->
<!-- Define some output appenders -->
<appender name="trace"
type="log4net.Appender.TraceAppender, log4net">
<layout type="log4net.Layout.PatternLayout, log4net">
<param name="ConversionPattern"
value="%d{ABSOLUTE} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<appender name="console"
type="log4net.Appender.ConsoleAppender, log4net">
<layout type="log4net.Layout.PatternLayout, log4net">
<param name="ConversionPattern"
value="%d{ABSOLUTE} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs\logfile.log.txt" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="5MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{dd/MM/yyyy HH:mm:ss,SSS} [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<!-- Setup the root category, add the appenders and set the default priority -->
<root>
<priority value="TRACE" />
<appender-ref ref="console" />
<appender-ref ref="trace" />
<!--this appender fails to release file after 'host.Dispose'-->
<!--<appender-ref ref="RollingLogFileAppender" />-->
</root>
<!--Use it to view injection activite at obtain evidence of injection. If injection ocurre, there is only one instaciation-->
<logger name="Spring.ConversationWA">
<priority value="TRACE" />
</logger>
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<!--
(fonte:)
The "importance" of the log statement can be set by using the appropriate
methods: debug<info<warn<error<fatal "debug" should be used for debug
statements, "info" for general information logged by the application, "warn"
for warning of problematic conditions, "error" when a recoverable error and
"fatal" when a non-recoverable error occured. In the log-configuration this
level can be configured for output of individual components: e.g., you could
define that the "main" application should log everything up to "info" level,
Springframework only up to "warn" and Hibernate only "error" statements.
Log4J can be configured (without changing the code) to filter these messages,
store them in a database, output them on a console or even send you a mail
if certain errors arise - and all of that quite fast.
debug<info<warn<error<fatal
-"debug" should be used for debug statements
-"info" for general information logged by the application
-"warn" for warning of problematic conditions
-"error" when a recoverable error
-"fatal" when a non-recoverable error occured
-->
<!-- Define some output appenders -->
<appender name="trace"
type="log4net.Appender.TraceAppender, log4net">
<layout type="log4net.Layout.PatternLayout, log4net">
<param name="ConversionPattern"
value="%d{ABSOLUTE} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<appender name="console"
type="log4net.Appender.ConsoleAppender, log4net">
<layout type="log4net.Layout.PatternLayout, log4net">
<param name="ConversionPattern"
value="%d{ABSOLUTE} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs\logfile.log.txt" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="5MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{dd/MM/yyyy HH:mm:ss,SSS} [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<!-- Setup the root category, add the appenders and set the default priority -->
<root>
<priority value="TRACE" />
<appender-ref ref="console" />
<appender-ref ref="trace" />
<!--this appender fails to release file after 'host.Dispose'-->
<!--<appender-ref ref="RollingLogFileAppender" />-->
</root>
<!--Use it to view injection activite at obtain evidence of injection. If injection ocurre, there is only one instaciation-->
<logger name="Spring.ConversationWA">
<priority value="TRACE" />
</logger>
</log4net>

View File

@@ -1,353 +1,353 @@
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
xmlns:db="http://www.springframework.net/database"
xmlns:tx="http://www.springframework.net/tx">
<!--BEGIN: Conversation tests-->
<object type="EndConversationTestBegin.aspx">
<property name="Conversation" ref="convEndConversationTest"></property>
<property name="ConversationEvidenceBsn" expression="@(convEndConversationTest)['conversationEvidenceBsn']"></property>
</object>
<object type="EndConversationTestEnd.aspx">
<property name="Conversation" ref="convEndConversationTest"></property>
<property name="ConversationEvidenceBsn" expression="@(convEndConversationTest)['conversationEvidenceBsn']"></property>
</object>
<object name="convEndConversationTest" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convEndConversationTest"></property>
<property name="['conversationEvidenceBsn']" ref="conversationEvidenceBsn"></property>
</object>
<object name="convCircularDependenceTest_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convCircularDependenceTest_A"></property>
<property name="InnerConversations">
<list>
<ref object="convCircularDependenceTest_A_A"/>
</list>
</property>
</object>
<object name="convCircularDependenceTest_A_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convCircularDependenceTest_A_A"></property>
<property name="InnerConversations">
<list>
<ref object="convCircularDependenceTest_A_A_A"/>
</list>
</property>
</object>
<object name="convCircularDependenceTest_A_A_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convCircularDependenceTest_A_A_A"></property>
<property name="['conversationEvidenceBsn']" ref="conversationEvidenceBsn"></property>
</object>
<object name="conversationEvidenceBsn" type="Spring.Bsn.ConversationEvidenceBsnImpl, Spring.ConversationWA.NH32.Tests" singleton="false">
</object>
<object type="PatialEndConv_A_Begin.aspx">
<property name="Conversation" ref="convPatialEndConv_A"></property>
</object>
<object type="PatialEndConv_A_End.aspx">
<property name="Conversation" ref="convPatialEndConv_A"></property>
</object>
<object type="PatialEndConv_A_B_Begin.aspx">
<property name="Conversation" ref="convPatialEndConv_A_B"></property>
</object>
<object type="PatialEndConv_A_B_End.aspx">
<property name="Conversation" ref="convPatialEndConv_A_B"></property>
</object>
<object name="convPatialEndConv_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convPatialEndConv_A"></property>
<property name="InnerConversations">
<list>
<ref object="convPatialEndConv_A_A"/>
<ref object="convPatialEndConv_A_B"/>
<ref object="convPatialEndConv_A_C"/>
</list>
</property>
</object>
<object name="convPatialEndConv_A_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convPatialEndConv_A_A"></property>
</object>
<object name="convPatialEndConv_A_B" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convPatialEndConv_A_B"></property>
<property name="InnerConversations">
<list>
<ref object="convPatialEndConv_A_B_A"/>
<ref object="convPatialEndConv_A_B_B"/>
</list>
</property>
</object>
<object name="convPatialEndConv_A_B_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convPatialEndConv_A_B_A"></property>
</object>
<object name="convPatialEndConv_A_B_B" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convPatialEndConv_A_B_B"></property>
</object>
<object name="convPatialEndConv_A_C" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convPatialEndConv_A_C"></property>
</object>
<object type="GetParentObjetFromChild.aspx">
<property name="Conversation" ref="convGetParentObjetFromChildChild"></property>
</object>
<object name="convGetParentObjetFromChildParent" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convGetParentObjetFromChildParent"></property>
<property name="['parentKey']" value="parentValue"></property>
<property name="['overwrittenKey']" value="overwrittenValueParent"></property>
<property name="InnerConversations">
<list>
<ref object="convGetParentObjetFromChildChild"/>
</list>
</property>
</object>
<object name="convGetParentObjetFromChildChild" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convGetParentObjetFromChildChild"></property>
<property name="ParentConversation" ref="convGetParentObjetFromChildParent"></property>
<property name="['childKey']" value="childValue"></property>
<property name="['overwrittenKey']" value="overwrittenValueChild"></property>
</object>
<object type="TimeOut_NoTimeOut.aspx">
<property name="Conversation" ref="convTimeOut"></property>
</object>
<object type="TimeOut_WithTimeOut.aspx">
<property name="Conversation" ref="convTimeOut"></property>
</object>
<object name="convTimeOut" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convTimeOut"></property>
<property name="TimeOut" value="60000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="['keyTimeOut']" value="this is the orinal value"></property>
</object>
<!--END: Conversation tests-->
<object name="HttpApplicationConfigurer" type="Spring.Context.Support.HttpApplicationConfigurer, Spring.Web">
<property name="ModuleTemplates">
<dictionary>
<entry key="ConversationModule">
<!-- this name must match the module name -->
<object>
<!-- select "view source" in your browser on any page to see the appended html comment -->
<property name="ConversationManagerNameList">
<list element-type="string">
<value>conversationManager</value>
<value>conversationManagerEndPaused</value>
<value>convMngEndPausedSessionIsClosed</value>
</list>
</property>
</object>
</entry>
</dictionary>
</property>
</object>
<!--BEGIN: session-per-conversation -->
<object type="SPCLazyLoadTest_A_Begin.aspx">
<property name="Conversation" ref="convSPCLazyLoad"></property>
<property name="SessionFactory" ref="MySessionFactory"/>
</object>
<object type="SPCLazyLoadTest_A_Status.aspx">
<property name="Conversation" ref="convSPCLazyLoad"></property>
</object>
<object name="convSPCLazyLoad" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convSPCLazyLoad"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object type="SPCSwitchConversationSameRequest.aspx">
<property name="ConversationB" ref="convSPCSwitchConversationSameRequestB"></property>
<property name="ConversationA" ref="convSPCSwitchConversationSameRequestA"></property>
<property name="SessionFactory" ref="MySessionFactory"/>
</object>
<object name="convSPCSwitchConversationSameRequestA" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convSPCSwitchConversationSameRequestA"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convSPCSwitchConversationSameRequestB" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convSPCSwitchConversationSameRequestB"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<!--END: session-per-conversation -->
<!--BEGIN:RedirectErrorNoPauseConversation-->
<object type="RedirectErrorNoPauseConversation.aspx">
<property name="Conversation" ref="convRedirectErrorNoPauseConversation"></property>
</object>
<object name="convRedirectErrorNoPauseConversation" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convRedirectErrorNoPauseConversation"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<!--BEGIN:RedirectErrorNoPauseConversation-->
<!--BEGIN: InvalidOperationException Tests -->
<object type="IoeTests.aspx">
<property name="ConversationA" ref="convIoeTestsA"></property>
<property name="ConversationAA" ref="convIoeTestsAA"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactory" ref="MySessionFactory"></property>
</object>
<object name="convIoeTestsA" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convIoeTestsA"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convIoeTestsAA" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convIoeTestsAA"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="ParentConversation" ref="convIoeTestsA"></property>
</object>
<!--END: InvalidOperationException Tests -->
<!--BEGIN: EndPausedTest Tests -->
<object type="EndPausedTest.aspx">
<property name="ConvA" ref="convAEndPaused"></property>
<property name="ConvB" ref="convBEndPaused"></property>
</object>
<object name="convAEndPaused" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convAEndPaused"></property>
<property name="ConversationManager" ref="conversationManagerEndPaused"></property>
</object>
<object name="convBEndPaused" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convBEndPaused"></property>
<property name="ConversationManager" ref="conversationManagerEndPaused"></property>
</object>
<object name="conversationManagerEndPaused" type="Spring.ConversationWA.Impl.WebConversationManager, Spring.ConversationWA.NH32" scope="session">
<property name="EndPaused" value="true"></property>
</object>
<!--END: EndPausedTest Tests -->
<!--BEGIN: SessionIsClosed-->
<object type="SessionIsClosedA.aspx">
<property name="Conversation" ref="convASessionIsClosed"></property>
</object>
<object type="SessionIsClosedB.aspx">
<property name="Conversation" ref="convBSessionIsClosed"></property>
<property name="ConversationA" ref="convASessionIsClosed"></property>
</object>
<object name="convASessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convASessionIsClosed"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convBSessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convBSessionIsClosed"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<!--END: SessionIsClosed-->
<!--BEGIN: EndPausedSessionIsClosed-->
<object type="EndPausedSessionIsClosedA.aspx">
<property name="Conversation" ref="convAEndPausedSessionIsClosed"></property>
</object>
<object type="EndPausedSessionIsClosedB.aspx">
<property name="Conversation" ref="convBEndPausedSessionIsClosed"></property>
</object>
<object name="convAEndPausedSessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convAEndPausedSessionIsClosed"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="convMngEndPausedSessionIsClosed"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convBEndPausedSessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convBEndPausedSessionIsClosed"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="convMngEndPausedSessionIsClosed"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convMngEndPausedSessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationManager, Spring.ConversationWA.NH32" scope="session">
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="EndPaused" value="true"/>
</object>
<!--END: EndPausedSessionIsClosed-->
<!--BEGIN: ConnectionReleaseModeIssue-->
<object type="ConnectionReleaseModeIssue.aspx">
<property name="Conversation" ref="convConnectionReleaseModeIssue"/>
<property name="SessionFactory" ref="MySessionFactory"/>
<property name="ConnectionReleaseModeIssueBsn" ref="connectionReleaseModeIssueBsn"/>
</object>
<object name="convConnectionReleaseModeIssue" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convConnectionReleaseModeIssue"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object id="connectionReleaseModeIssueBsn" type="Spring.Bsn.ConnectionReleaseModeIssueBsnImpl, Spring.ConversationWA.NH32.Tests" singleton="true">
<property name="SessionFactory" ref="MySessionFactory"/>
</object>
<!--END: ConnectionReleaseModeIssue-->
<!--BEGIN: SerializeConversationTest-->
<object type="SerializeConversationTest.aspx">
<property name="Conversation" ref="convSerializeConversationTest"/>
</object>
<object name="convSerializeConversationTest" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convSerializeConversationTest"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<!--END: SerializeConversationTest-->
<!-- BEGIN: Common configuration-->
<object name="conversationManager" type="Spring.ConversationWA.Impl.WebConversationManager, Spring.ConversationWA.NH32" scope="session">
<property name="SessionFactoryName" value="MySessionFactory"/>
</object>
<object id="transactionManager" type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate32">
<property name="DbProvider" ref="DbProvider"/>
<property name="SessionFactory" ref="MySessionFactory"/>
</object>
<object id="MySessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate32">
<property name="DbProvider" ref="DbProvider"/>
<property name="MappingAssemblies">
<list>
<value>Spring.ConversationWA.NH32.Tests</value>
</list>
</property>
<property name="HibernateProperties">
<dictionary>
<!--<entry key="connection.provider" value="AcessaDados.NHibernate.Connection.SiefDriverConnectionProvider, AcessaDados"/>-->
<entry key="dialect" value="NHibernate.Dialect.SQLiteDialect"/>
<entry key="connection.driver_class" value="NHibernate.Driver.SQLite20Driver"/>
<entry key="current_session_context_class" value="Spring.Data.NHibernate.SpringSessionContext, Spring.Data.NHibernate32"/>
<entry key="hbm2ddl.keywords" value="none"/>
<entry key="query.startup_check" value="false"/>
<entry key="show_sql" value="false"/>
<entry key="use_outer_join" value="true"/>
<entry key="format_sql" value="true"/>
<entry key="connection.release_mode" value="on_close"/>
</dictionary>
</property>
</object>
<object id="DbProvider" type="Spring.Spring.Data.Common.ConnectionCreationTrackingDbProvider, Spring.ConversationWA.NH32.Tests">
<property name="TargetDbProvider" ref="targetDbProvider"/>
</object>
<db:provider id="targetDbProvider" provider="System.Data.SQLite" connectionString="Data Source=|DataDirectory|../sqlite/conversationTests.db;Version=3;FailIfMissing=True;"></db:provider>
<tx:attribute-driven transaction-manager="transactionManager"/>
<!-- END: Common configuration-->
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
xmlns:db="http://www.springframework.net/database"
xmlns:tx="http://www.springframework.net/tx">
<!--BEGIN: Conversation tests-->
<object type="EndConversationTestBegin.aspx">
<property name="Conversation" ref="convEndConversationTest"></property>
<property name="ConversationEvidenceBsn" expression="@(convEndConversationTest)['conversationEvidenceBsn']"></property>
</object>
<object type="EndConversationTestEnd.aspx">
<property name="Conversation" ref="convEndConversationTest"></property>
<property name="ConversationEvidenceBsn" expression="@(convEndConversationTest)['conversationEvidenceBsn']"></property>
</object>
<object name="convEndConversationTest" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convEndConversationTest"></property>
<property name="['conversationEvidenceBsn']" ref="conversationEvidenceBsn"></property>
</object>
<object name="convCircularDependenceTest_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convCircularDependenceTest_A"></property>
<property name="InnerConversations">
<list>
<ref object="convCircularDependenceTest_A_A"/>
</list>
</property>
</object>
<object name="convCircularDependenceTest_A_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convCircularDependenceTest_A_A"></property>
<property name="InnerConversations">
<list>
<ref object="convCircularDependenceTest_A_A_A"/>
</list>
</property>
</object>
<object name="convCircularDependenceTest_A_A_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convCircularDependenceTest_A_A_A"></property>
<property name="['conversationEvidenceBsn']" ref="conversationEvidenceBsn"></property>
</object>
<object name="conversationEvidenceBsn" type="Spring.Bsn.ConversationEvidenceBsnImpl, Spring.ConversationWA.NH32.Tests" singleton="false">
</object>
<object type="PatialEndConv_A_Begin.aspx">
<property name="Conversation" ref="convPatialEndConv_A"></property>
</object>
<object type="PatialEndConv_A_End.aspx">
<property name="Conversation" ref="convPatialEndConv_A"></property>
</object>
<object type="PatialEndConv_A_B_Begin.aspx">
<property name="Conversation" ref="convPatialEndConv_A_B"></property>
</object>
<object type="PatialEndConv_A_B_End.aspx">
<property name="Conversation" ref="convPatialEndConv_A_B"></property>
</object>
<object name="convPatialEndConv_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convPatialEndConv_A"></property>
<property name="InnerConversations">
<list>
<ref object="convPatialEndConv_A_A"/>
<ref object="convPatialEndConv_A_B"/>
<ref object="convPatialEndConv_A_C"/>
</list>
</property>
</object>
<object name="convPatialEndConv_A_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convPatialEndConv_A_A"></property>
</object>
<object name="convPatialEndConv_A_B" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convPatialEndConv_A_B"></property>
<property name="InnerConversations">
<list>
<ref object="convPatialEndConv_A_B_A"/>
<ref object="convPatialEndConv_A_B_B"/>
</list>
</property>
</object>
<object name="convPatialEndConv_A_B_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convPatialEndConv_A_B_A"></property>
</object>
<object name="convPatialEndConv_A_B_B" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convPatialEndConv_A_B_B"></property>
</object>
<object name="convPatialEndConv_A_C" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convPatialEndConv_A_C"></property>
</object>
<object type="GetParentObjetFromChild.aspx">
<property name="Conversation" ref="convGetParentObjetFromChildChild"></property>
</object>
<object name="convGetParentObjetFromChildParent" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convGetParentObjetFromChildParent"></property>
<property name="['parentKey']" value="parentValue"></property>
<property name="['overwrittenKey']" value="overwrittenValueParent"></property>
<property name="InnerConversations">
<list>
<ref object="convGetParentObjetFromChildChild"/>
</list>
</property>
</object>
<object name="convGetParentObjetFromChildChild" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convGetParentObjetFromChildChild"></property>
<property name="ParentConversation" ref="convGetParentObjetFromChildParent"></property>
<property name="['childKey']" value="childValue"></property>
<property name="['overwrittenKey']" value="overwrittenValueChild"></property>
</object>
<object type="TimeOut_NoTimeOut.aspx">
<property name="Conversation" ref="convTimeOut"></property>
</object>
<object type="TimeOut_WithTimeOut.aspx">
<property name="Conversation" ref="convTimeOut"></property>
</object>
<object name="convTimeOut" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convTimeOut"></property>
<property name="TimeOut" value="60000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="['keyTimeOut']" value="this is the orinal value"></property>
</object>
<!--END: Conversation tests-->
<object name="HttpApplicationConfigurer" type="Spring.Context.Support.HttpApplicationConfigurer, Spring.Web">
<property name="ModuleTemplates">
<dictionary>
<entry key="ConversationModule">
<!-- this name must match the module name -->
<object>
<!-- select "view source" in your browser on any page to see the appended html comment -->
<property name="ConversationManagerNameList">
<list element-type="string">
<value>conversationManager</value>
<value>conversationManagerEndPaused</value>
<value>convMngEndPausedSessionIsClosed</value>
</list>
</property>
</object>
</entry>
</dictionary>
</property>
</object>
<!--BEGIN: session-per-conversation -->
<object type="SPCLazyLoadTest_A_Begin.aspx">
<property name="Conversation" ref="convSPCLazyLoad"></property>
<property name="SessionFactory" ref="MySessionFactory"/>
</object>
<object type="SPCLazyLoadTest_A_Status.aspx">
<property name="Conversation" ref="convSPCLazyLoad"></property>
</object>
<object name="convSPCLazyLoad" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convSPCLazyLoad"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object type="SPCSwitchConversationSameRequest.aspx">
<property name="ConversationB" ref="convSPCSwitchConversationSameRequestB"></property>
<property name="ConversationA" ref="convSPCSwitchConversationSameRequestA"></property>
<property name="SessionFactory" ref="MySessionFactory"/>
</object>
<object name="convSPCSwitchConversationSameRequestA" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convSPCSwitchConversationSameRequestA"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convSPCSwitchConversationSameRequestB" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convSPCSwitchConversationSameRequestB"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<!--END: session-per-conversation -->
<!--BEGIN:RedirectErrorNoPauseConversation-->
<object type="RedirectErrorNoPauseConversation.aspx">
<property name="Conversation" ref="convRedirectErrorNoPauseConversation"></property>
</object>
<object name="convRedirectErrorNoPauseConversation" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convRedirectErrorNoPauseConversation"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<!--BEGIN:RedirectErrorNoPauseConversation-->
<!--BEGIN: InvalidOperationException Tests -->
<object type="IoeTests.aspx">
<property name="ConversationA" ref="convIoeTestsA"></property>
<property name="ConversationAA" ref="convIoeTestsAA"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactory" ref="MySessionFactory"></property>
</object>
<object name="convIoeTestsA" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convIoeTestsA"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convIoeTestsAA" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convIoeTestsAA"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="ParentConversation" ref="convIoeTestsA"></property>
</object>
<!--END: InvalidOperationException Tests -->
<!--BEGIN: EndPausedTest Tests -->
<object type="EndPausedTest.aspx">
<property name="ConvA" ref="convAEndPaused"></property>
<property name="ConvB" ref="convBEndPaused"></property>
</object>
<object name="convAEndPaused" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convAEndPaused"></property>
<property name="ConversationManager" ref="conversationManagerEndPaused"></property>
</object>
<object name="convBEndPaused" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convBEndPaused"></property>
<property name="ConversationManager" ref="conversationManagerEndPaused"></property>
</object>
<object name="conversationManagerEndPaused" type="Spring.ConversationWA.Impl.WebConversationManager, Spring.ConversationWA.NH32" scope="session">
<property name="EndPaused" value="true"></property>
</object>
<!--END: EndPausedTest Tests -->
<!--BEGIN: SessionIsClosed-->
<object type="SessionIsClosedA.aspx">
<property name="Conversation" ref="convASessionIsClosed"></property>
</object>
<object type="SessionIsClosedB.aspx">
<property name="Conversation" ref="convBSessionIsClosed"></property>
<property name="ConversationA" ref="convASessionIsClosed"></property>
</object>
<object name="convASessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convASessionIsClosed"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convBSessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convBSessionIsClosed"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<!--END: SessionIsClosed-->
<!--BEGIN: EndPausedSessionIsClosed-->
<object type="EndPausedSessionIsClosedA.aspx">
<property name="Conversation" ref="convAEndPausedSessionIsClosed"></property>
</object>
<object type="EndPausedSessionIsClosedB.aspx">
<property name="Conversation" ref="convBEndPausedSessionIsClosed"></property>
</object>
<object name="convAEndPausedSessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convAEndPausedSessionIsClosed"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="convMngEndPausedSessionIsClosed"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convBEndPausedSessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convBEndPausedSessionIsClosed"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="convMngEndPausedSessionIsClosed"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convMngEndPausedSessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationManager, Spring.ConversationWA.NH32" scope="session">
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="EndPaused" value="true"/>
</object>
<!--END: EndPausedSessionIsClosed-->
<!--BEGIN: ConnectionReleaseModeIssue-->
<object type="ConnectionReleaseModeIssue.aspx">
<property name="Conversation" ref="convConnectionReleaseModeIssue"/>
<property name="SessionFactory" ref="MySessionFactory"/>
<property name="ConnectionReleaseModeIssueBsn" ref="connectionReleaseModeIssueBsn"/>
</object>
<object name="convConnectionReleaseModeIssue" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convConnectionReleaseModeIssue"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object id="connectionReleaseModeIssueBsn" type="Spring.Bsn.ConnectionReleaseModeIssueBsnImpl, Spring.ConversationWA.NH32.Tests" singleton="true">
<property name="SessionFactory" ref="MySessionFactory"/>
</object>
<!--END: ConnectionReleaseModeIssue-->
<!--BEGIN: SerializeConversationTest-->
<object type="SerializeConversationTest.aspx">
<property name="Conversation" ref="convSerializeConversationTest"/>
</object>
<object name="convSerializeConversationTest" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
<property name="Id" value="convSerializeConversationTest"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<!--END: SerializeConversationTest-->
<!-- BEGIN: Common configuration-->
<object name="conversationManager" type="Spring.ConversationWA.Impl.WebConversationManager, Spring.ConversationWA.NH32" scope="session">
<property name="SessionFactoryName" value="MySessionFactory"/>
</object>
<object id="transactionManager" type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate32">
<property name="DbProvider" ref="DbProvider"/>
<property name="SessionFactory" ref="MySessionFactory"/>
</object>
<object id="MySessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate32">
<property name="DbProvider" ref="DbProvider"/>
<property name="MappingAssemblies">
<list>
<value>Spring.ConversationWA.NH32.Tests</value>
</list>
</property>
<property name="HibernateProperties">
<dictionary>
<!--<entry key="connection.provider" value="AcessaDados.NHibernate.Connection.SiefDriverConnectionProvider, AcessaDados"/>-->
<entry key="dialect" value="NHibernate.Dialect.SQLiteDialect"/>
<entry key="connection.driver_class" value="NHibernate.Driver.SQLite20Driver"/>
<entry key="current_session_context_class" value="Spring.Data.NHibernate.SpringSessionContext, Spring.Data.NHibernate32"/>
<entry key="hbm2ddl.keywords" value="none"/>
<entry key="query.startup_check" value="false"/>
<entry key="show_sql" value="false"/>
<entry key="use_outer_join" value="true"/>
<entry key="format_sql" value="true"/>
<entry key="connection.release_mode" value="on_close"/>
</dictionary>
</property>
</object>
<object id="DbProvider" type="Spring.Spring.Data.Common.ConnectionCreationTrackingDbProvider, Spring.ConversationWA.NH32.Tests">
<property name="TargetDbProvider" ref="targetDbProvider"/>
</object>
<db:provider id="targetDbProvider" provider="System.Data.SQLite" connectionString="Data Source=|DataDirectory|../sqlite/conversationTests.db;Version=3;FailIfMissing=True;"></db:provider>
<tx:attribute-driven transaction-manager="transactionManager"/>
<!-- END: Common configuration-->
</objects>

View File

@@ -1,99 +1,99 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
<section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
</sectionGroup>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter, Common.Logging">
<arg key="level" value="ERROR" />
</factoryAdapter>
</logging>
<!--
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net">
<arg key="configType" value="FILE-WATCH" />
<arg key="configFile" value="~/log4net.config" />
</factoryAdapter>
</logging>
-->
</common>
<spring>
<parsers>
<parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data" />
<parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data" />
</parsers>
<context name="SpringPrvConctWbApp" type="Spring.Context.Support.WebApplicationContext, Spring.Web">
<resource uri="~/services.xml.config"/>
</context>
</spring>
<appSettings>
<add key="testkey" value="testvalue" />
</appSettings>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<httpModules>
<add name="NUnitAspExModule" type="NUnitAspEx.AspTestExecutionModule, NUnitAspEx" />
<add name="SerializeConversationTestModule" type="Spring.ConversationWA.SerializeConversationTestModule, Spring.ConversationWA.NH32.Tests"/>
<add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
<add name="ConversationModule" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH32"/>
</httpModules>
<httpHandlers>
<add verb="*" path="*.test" type="NUnitAspEx.AspTestMethodHandler, NUnitAspEx" validate="false" />
<add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
<add verb="*" path="ContextMonitor.ashx" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
</httpHandlers>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="NUnitAspExModule" preCondition="integratedMode" type="NUnitAspEx.AspTestExecutionModule, NUnitAspEx" />
<add name="SerializeConversationTestModule" type="Spring.ConversationWA.SerializeConversationTestModule, Spring.ConversationWA.NH32.Tests"/>
<add name="Spring" preCondition="integratedMode" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
<add name="ConversationModule" preCondition="integratedMode" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH32"/>
</modules>
<handlers>
<add name="AspTestMethodHandler" verb="*" path="*.test" preCondition="integratedMode" type="NUnitAspEx.AspTestMethodHandler, NUnitAspEx" validate="false" />
<add name="PageHandlerFactory" verb="*" path="*.aspx" preCondition="integratedMode" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
<add name="ContextMonitor" verb="*" path="ContextMonitor.ashx" preCondition="integratedMode" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
</handlers>
</system.webServer>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite"
publicKeyToken="db937bc2d44ff139"
culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="1.0.80.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
<section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
</sectionGroup>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter, Common.Logging">
<arg key="level" value="ERROR" />
</factoryAdapter>
</logging>
<!--
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net">
<arg key="configType" value="FILE-WATCH" />
<arg key="configFile" value="~/log4net.config" />
</factoryAdapter>
</logging>
-->
</common>
<spring>
<parsers>
<parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data" />
<parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data" />
</parsers>
<context name="SpringPrvConctWbApp" type="Spring.Context.Support.WebApplicationContext, Spring.Web">
<resource uri="~/services.xml.config"/>
</context>
</spring>
<appSettings>
<add key="testkey" value="testvalue" />
</appSettings>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<httpModules>
<add name="NUnitAspExModule" type="NUnitAspEx.AspTestExecutionModule, NUnitAspEx" />
<add name="SerializeConversationTestModule" type="Spring.ConversationWA.SerializeConversationTestModule, Spring.ConversationWA.NH32.Tests"/>
<add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
<add name="ConversationModule" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH32"/>
</httpModules>
<httpHandlers>
<add verb="*" path="*.test" type="NUnitAspEx.AspTestMethodHandler, NUnitAspEx" validate="false" />
<add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
<add verb="*" path="ContextMonitor.ashx" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
</httpHandlers>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="NUnitAspExModule" preCondition="integratedMode" type="NUnitAspEx.AspTestExecutionModule, NUnitAspEx" />
<add name="SerializeConversationTestModule" type="Spring.ConversationWA.SerializeConversationTestModule, Spring.ConversationWA.NH32.Tests"/>
<add name="Spring" preCondition="integratedMode" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
<add name="ConversationModule" preCondition="integratedMode" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH32"/>
</modules>
<handlers>
<add name="AspTestMethodHandler" verb="*" path="*.test" preCondition="integratedMode" type="NUnitAspEx.AspTestMethodHandler, NUnitAspEx" validate="false" />
<add name="PageHandlerFactory" verb="*" path="*.aspx" preCondition="integratedMode" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
<add name="ContextMonitor" verb="*" path="ContextMonitor.ashx" preCondition="integratedMode" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
</handlers>
</system.webServer>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite"
publicKeyToken="db937bc2d44ff139"
culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="1.0.80.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@@ -1,57 +1,57 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using Spring.ConversationWA;
namespace Spring.Entities
{
/// <summary>
/// Detail Entity for 'session-per-conversation' tests:
/// <see cref="WebConversationStateTest.SPCLazyLoadTest()"/>,
/// <see cref="WebConversationStateTest.SPCSwitchConversationSameRequestTest()"/>
/// </summary>
/// <author>Hailton de Castro</author>
[Serializable]
public class SPCDetailEnt
{
private Int32? id;
/// <summary>
/// Entity key
/// </summary>
public virtual Int32? Id
{
get { return id; }
set { id = value; }
}
private String description;
/// <summary>
/// Description
/// </summary>
public virtual String Description
{
get { return description; }
set { description = value; }
}
}
}
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using Spring.ConversationWA;
namespace Spring.Entities
{
/// <summary>
/// Detail Entity for 'session-per-conversation' tests:
/// <see cref="WebConversationStateTest.SPCLazyLoadTest()"/>,
/// <see cref="WebConversationStateTest.SPCSwitchConversationSameRequestTest()"/>
/// </summary>
/// <author>Hailton de Castro</author>
[Serializable]
public class SPCDetailEnt
{
private Int32? id;
/// <summary>
/// Entity key
/// </summary>
public virtual Int32? Id
{
get { return id; }
set { id = value; }
}
private String description;
/// <summary>
/// Description
/// </summary>
public virtual String Description
{
get { return description; }
set { description = value; }
}
}
}

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Spring.Entities" assembly="Spring.ConversationWA.NH32.Tests">
<class name="SPCDetailEnt" table="SPCDetail">
<id name="Id" type="Int32" column="Id">
<generator class="increment"></generator>
</id>
<property name="Description" column="Description" type="String"/>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Spring.Entities" assembly="Spring.ConversationWA.NH32.Tests">
<class name="SPCDetailEnt" table="SPCDetail">
<id name="Id" type="Int32" column="Id">
<generator class="increment"></generator>
</id>
<property name="Description" column="Description" type="String"/>
</class>
</hibernate-mapping>

View File

@@ -1,67 +1,67 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using Spring.ConversationWA;
namespace Spring.Entities
{
/// <summary>
/// Master Entity for 'session-per-conversation' tests:
/// <see cref="WebConversationStateTest.SPCLazyLoadTest()"/>,
/// <see cref="WebConversationStateTest.SPCSwitchConversationSameRequestTest()"/>
/// </summary>
/// <author>Hailton de Castro</author>
[Serializable]
public class SPCMasterEnt
{
private Int32? id;
/// <summary>
/// Entity key
/// </summary>
public virtual Int32? Id
{
get { return id; }
set { id = value; }
}
private String description;
/// <summary>
/// Description
/// </summary>
public virtual String Description
{
get { return description; }
set { description = value; }
}
private IList<SPCDetailEnt> sPCDetailEntList;
/// <summary>
/// <see cref="SPCDetailEnt"/> one-to-many relationship.
/// </summary>
public virtual IList<SPCDetailEnt> SPCDetailEntList
{
get { return sPCDetailEntList; }
set { sPCDetailEntList = value; }
}
}
}
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using Spring.ConversationWA;
namespace Spring.Entities
{
/// <summary>
/// Master Entity for 'session-per-conversation' tests:
/// <see cref="WebConversationStateTest.SPCLazyLoadTest()"/>,
/// <see cref="WebConversationStateTest.SPCSwitchConversationSameRequestTest()"/>
/// </summary>
/// <author>Hailton de Castro</author>
[Serializable]
public class SPCMasterEnt
{
private Int32? id;
/// <summary>
/// Entity key
/// </summary>
public virtual Int32? Id
{
get { return id; }
set { id = value; }
}
private String description;
/// <summary>
/// Description
/// </summary>
public virtual String Description
{
get { return description; }
set { description = value; }
}
private IList<SPCDetailEnt> sPCDetailEntList;
/// <summary>
/// <see cref="SPCDetailEnt"/> one-to-many relationship.
/// </summary>
public virtual IList<SPCDetailEnt> SPCDetailEntList
{
get { return sPCDetailEntList; }
set { sPCDetailEntList = value; }
}
}
}

View File

@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Spring.Entities" assembly="Spring.ConversationWA.NH32.Tests">
<class name="SPCMasterEnt" table="SPCMaster">
<id name="Id" type="Int32" column="Id">
<generator class="increment"></generator>
</id>
<property name="Description" column="Description" type="String"/>
<bag name="SPCDetailEntList" fetch="select">
<key column="MasterId"></key>
<one-to-many class="Spring.Entities.SPCDetailEnt, Spring.ConversationWA.NH32.Tests"/>
</bag>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Spring.Entities" assembly="Spring.ConversationWA.NH32.Tests">
<class name="SPCMasterEnt" table="SPCMaster">
<id name="Id" type="Int32" column="Id">
<generator class="increment"></generator>
</id>
<property name="Description" column="Description" type="String"/>
<bag name="SPCDetailEntList" fetch="select">
<key column="MasterId"></key>
<one-to-many class="Spring.Entities.SPCDetailEnt, Spring.ConversationWA.NH32.Tests"/>
</bag>
</class>
</hibernate-mapping>

View File

@@ -1,149 +1,149 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{2FB16852-22AD-4A5B-885A-97136265CC46}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Spring</RootNamespace>
<AssemblyName>Spring.ConversationWA.NH32.Tests</AssemblyName>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>2.0</OldToolsVersion>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<TargetFrameworkSubset>
</TargetFrameworkSubset>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.Net.2008\Spring.ConversationWA.NH32.Tests\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>..\..\..\build\VS.Net.2008\Spring.ConversationWA.NH32.Tests\Debug\Spring.ConversationWA.NH32.Tests.XML</DocumentationFile>
<StartAction>Program</StartAction>
<StartProgram>$(MSBuildProjectDirectory)\..\..\dependencies\tools\NUnit-2.6.0.12051\bin\nunit-x86.exe</StartProgram>
<StartArguments>"$(MSBuildProjectDirectory)\$(OutputPath)\$(AssemblyName).dll"</StartArguments>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Common.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=3.2.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate32\net\3.5\NHibernate.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=2.5.7.10213, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="NUnitAspEx, Version=2.0.3482.27831, Culture=neutral">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\NUnitAspEx.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>lib\net\2.0\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\..\src\Spring\CommonAssemblyInfo.cs">
<Link>CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Bsn\ConversationEvidenceBsnImpl.cs" />
<Compile Include="Bsn\IConversationEvidenceBsn.cs" />
<Compile Include="Bsn\INoDeferedErrorBsn.cs" />
<Compile Include="Bsn\NoDeferedErrorBsnImpl.cs" />
<Compile Include="ConversationWA\PatialEndConvBeginBasePage.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ConversationWA\PatialEndConvEndBasePage.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ConversationWA\SerializeConversationTestModule.cs" />
<Compile Include="ConversationWA\SimpleTest.cs" />
<Compile Include="ConversationWA\WebConversationStateTest.cs" />
<Compile Include="Entities\SPCDetailEnt.cs" />
<Compile Include="Entities\SPCMasterEnt.cs" />
<Compile Include="Spring\Data\Common\ConnectionCreationTrackingDbProvider.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\src\Spring\Spring.Aop\Spring.Aop.2008.csproj">
<Project>{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}</Project>
<Name>Spring.Aop.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.ConversationWA.NH32\Spring.ConversationWA.NH32.2008.csproj">
<Project>{64400FF8-2E9F-4809-B5F4-0C7EB8ABFF87}</Project>
<Name>Spring.ConversationWA.NH32.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Core\Spring.Core.2008.csproj">
<Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project>
<Name>Spring.Core.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Data.NHibernate32\Spring.Data.NHibernate32.2008.csproj">
<Project>{1C8E0481-A70D-445E-AB4D-4A963CF7DC83}</Project>
<Name>Spring.Data.NHibernate32.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Data\Spring.Data.2008.csproj">
<Project>{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}</Project>
<Name>Spring.Data.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Web\Spring.Web.2008.csproj">
<Project>{BA4789EB-281A-48EA-8763-28B9F0596A18}</Project>
<Name>Spring.Web.2008</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\log4net.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\services.xml.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\web.config.net-2.0" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Entities\SPCDetailEnt.hbm.xml" />
<EmbeddedResource Include="Entities\SPCMasterEnt.hbm.xml" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\Web.Config" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<PostBuildEvent>echo "Copying TestWebs to output directory"
rd /S /Q "$(TargetDir)Data"
xcopy "$(ProjectDir)Data" "$(TargetDir)Data\" /y /s
rd /S /Q "$(TargetDir)Data\Spring\ConversationWA\WebConversationStateTest\Bin"
</PostBuildEvent>
</PropertyGroup>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{2FB16852-22AD-4A5B-885A-97136265CC46}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Spring</RootNamespace>
<AssemblyName>Spring.ConversationWA.NH32.Tests</AssemblyName>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>2.0</OldToolsVersion>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<TargetFrameworkSubset>
</TargetFrameworkSubset>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.Net.2008\Spring.ConversationWA.NH32.Tests\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>..\..\..\build\VS.Net.2008\Spring.ConversationWA.NH32.Tests\Debug\Spring.ConversationWA.NH32.Tests.XML</DocumentationFile>
<StartAction>Program</StartAction>
<StartProgram>$(MSBuildProjectDirectory)\..\..\dependencies\tools\NUnit-2.6.0.12051\bin\nunit-x86.exe</StartProgram>
<StartArguments>"$(MSBuildProjectDirectory)\$(OutputPath)\$(AssemblyName).dll"</StartArguments>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Common.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=3.2.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate32\net\3.5\NHibernate.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=2.5.7.10213, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="NUnitAspEx, Version=2.0.3482.27831, Culture=neutral">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\NUnitAspEx.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>lib\net\2.0\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\..\src\Spring\CommonAssemblyInfo.cs">
<Link>CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Bsn\ConversationEvidenceBsnImpl.cs" />
<Compile Include="Bsn\IConversationEvidenceBsn.cs" />
<Compile Include="Bsn\INoDeferedErrorBsn.cs" />
<Compile Include="Bsn\NoDeferedErrorBsnImpl.cs" />
<Compile Include="ConversationWA\PatialEndConvBeginBasePage.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ConversationWA\PatialEndConvEndBasePage.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ConversationWA\SerializeConversationTestModule.cs" />
<Compile Include="ConversationWA\SimpleTest.cs" />
<Compile Include="ConversationWA\WebConversationStateTest.cs" />
<Compile Include="Entities\SPCDetailEnt.cs" />
<Compile Include="Entities\SPCMasterEnt.cs" />
<Compile Include="Spring\Data\Common\ConnectionCreationTrackingDbProvider.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\src\Spring\Spring.Aop\Spring.Aop.2008.csproj">
<Project>{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}</Project>
<Name>Spring.Aop.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.ConversationWA.NH32\Spring.ConversationWA.NH32.2008.csproj">
<Project>{64400FF8-2E9F-4809-B5F4-0C7EB8ABFF87}</Project>
<Name>Spring.ConversationWA.NH32.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Core\Spring.Core.2008.csproj">
<Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project>
<Name>Spring.Core.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Data.NHibernate32\Spring.Data.NHibernate32.2008.csproj">
<Project>{1C8E0481-A70D-445E-AB4D-4A963CF7DC83}</Project>
<Name>Spring.Data.NHibernate32.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Data\Spring.Data.2008.csproj">
<Project>{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}</Project>
<Name>Spring.Data.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Web\Spring.Web.2008.csproj">
<Project>{BA4789EB-281A-48EA-8763-28B9F0596A18}</Project>
<Name>Spring.Web.2008</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\log4net.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\services.xml.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\web.config.net-2.0" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Entities\SPCDetailEnt.hbm.xml" />
<EmbeddedResource Include="Entities\SPCMasterEnt.hbm.xml" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\Web.Config" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<PostBuildEvent>echo "Copying TestWebs to output directory"
rd /S /Q "$(TargetDir)Data"
xcopy "$(ProjectDir)Data" "$(TargetDir)Data\" /y /s
rd /S /Q "$(TargetDir)Data\Spring\ConversationWA\WebConversationStateTest\Bin"
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@@ -1,299 +1,299 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{2FB16852-22AD-4A5B-885A-97136265CC46}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Spring</RootNamespace>
<AssemblyName>Spring.ConversationWA.NH32.Tests</AssemblyName>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>3.5</OldToolsVersion>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<PublishUrl>http://localhost/Spring.ConversationWA.NH32.Tests/</PublishUrl>
<Install>true</Install>
<InstallFrom>Web</InstallFrom>
<UpdateEnabled>true</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>true</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.Net.2010\Spring.ConversationWA.NH32.Tests\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>..\..\..\build\VS.Net.2010\Spring.ConversationWA.NH32.Tests\Debug\Spring.ConversationWA.NH32.Tests.XML</DocumentationFile>
<StartAction>Program</StartAction>
<StartProgram>$(MSBuildProjectDirectory)\..\..\dependencies\tools\NUnit-2.6.0.12051\bin\nunit-x86.exe</StartProgram>
<StartArguments>"$(MSBuildProjectDirectory)\$(OutputPath)\$(AssemblyName).dll"</StartArguments>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Common.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=3.2.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate32\net\3.5\NHibernate.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=2.5.7.10213, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="NUnitAspEx, Version=2.0.3482.27831, Culture=neutral">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\NUnitAspEx.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>lib\net\2.0\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\..\src\Spring\CommonAssemblyInfo.cs">
<Link>CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Bsn\ConversationEvidenceBsnImpl.cs" />
<Compile Include="Bsn\IConversationEvidenceBsn.cs" />
<Compile Include="Bsn\INoDeferedErrorBsn.cs" />
<Compile Include="Bsn\NoDeferedErrorBsnImpl.cs" />
<Compile Include="ConversationWA\PatialEndConvBeginBasePage.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ConversationWA\PatialEndConvEndBasePage.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ConversationWA\SerializeConversationTestModule.cs" />
<Compile Include="ConversationWA\SimpleTest.cs" />
<Compile Include="ConversationWA\WebConversationStateTest.cs" />
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\CircularDependenceTest.aspx.cs">
<DependentUpon>CircularDependenceTest.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\ConnectionReleaseModeIssue.aspx.cs">
<DependentUpon>ConnectionReleaseModeIssue.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\EndConversationTestBegin.aspx.cs">
<DependentUpon>EndConversationTestBegin.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\EndConversationTestEnd.aspx.cs">
<DependentUpon>EndConversationTestEnd.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\EndPausedSessionIsClosedA.aspx.cs">
<DependentUpon>EndPausedSessionIsClosedA.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\EndPausedSessionIsClosedB.aspx.cs">
<DependentUpon>EndPausedSessionIsClosedB.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\EndPausedTest.aspx.cs">
<DependentUpon>EndPausedTest.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\GetParentObjetFromChild.aspx.cs">
<DependentUpon>GetParentObjetFromChild.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\IoeTests.aspx.cs">
<DependentUpon>IoeTests.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\PatialEndConv_A_Begin.aspx.cs">
<DependentUpon>PatialEndConv_A_Begin.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\PatialEndConv_A_B_Begin.aspx.cs">
<DependentUpon>PatialEndConv_A_B_Begin.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\PatialEndConv_A_B_End.aspx.cs">
<DependentUpon>PatialEndConv_A_B_End.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\PatialEndConv_A_End.aspx.cs">
<DependentUpon>PatialEndConv_A_End.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\RedirectErrorNoPauseConversation.aspx.cs">
<DependentUpon>RedirectErrorNoPauseConversation.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\SerializeConversationTest.aspx.cs">
<DependentUpon>SerializeConversationTest.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\SessionIsClosedA.aspx.cs">
<DependentUpon>SessionIsClosedA.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\SessionIsClosedB.aspx.cs">
<DependentUpon>SessionIsClosedB.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\SPCLazyLoadTest_A_Begin.aspx.cs">
<DependentUpon>SPCLazyLoadTest_A_Begin.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\SPCLazyLoadTest_A_Status.aspx.cs">
<DependentUpon>SPCLazyLoadTest_A_Status.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\SPCSwitchConversationSameRequest.aspx.cs">
<DependentUpon>SPCSwitchConversationSameRequest.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\TimeOut_NoTimeOut.aspx.cs">
<DependentUpon>TimeOut_NoTimeOut.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\TimeOut_WithTimeOut.aspx.cs">
<DependentUpon>TimeOut_WithTimeOut.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Entities\SPCDetailEnt.cs" />
<Compile Include="Entities\SPCMasterEnt.cs" />
<Compile Include="Spring\Data\Common\ConnectionCreationTrackingDbProvider.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\src\Spring\Spring.Aop\Spring.Aop.2010.csproj">
<Project>{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}</Project>
<Name>Spring.Aop.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.ConversationWA.NH32\Spring.ConversationWA.NH32.2010.csproj">
<Project>{64400FF8-2E9F-4809-B5F4-0C7EB8ABFF87}</Project>
<Name>Spring.ConversationWA.NH32.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Core\Spring.Core.2010.csproj">
<Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project>
<Name>Spring.Core.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Data.NHibernate32\Spring.Data.NHibernate32.2010.csproj">
<Project>{9F0F739C-876E-4C4B-AA55-9AC9242C25C8}</Project>
<Name>Spring.Data.NHibernate32.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Data\Spring.Data.2010.csproj">
<Project>{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}</Project>
<Name>Spring.Data.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Web\Spring.Web.2010.csproj">
<Project>{BA4789EB-281A-48EA-8763-28B9F0596A18}</Project>
<Name>Spring.Web.2010</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\log4net.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\services.xml.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\web.config.net-2.0" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Entities\SPCDetailEnt.hbm.xml" />
<EmbeddedResource Include="Entities\SPCMasterEnt.hbm.xml" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\Web.Config" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.0">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
<Visible>False</Visible>
<ProductName>Windows Installer 3.1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\CircularDependenceTest.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\ConnectionReleaseModeIssue.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\EndConversationTestBegin.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\EndConversationTestEnd.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\EndPausedSessionIsClosedA.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\EndPausedSessionIsClosedB.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\EndPausedTest.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\GetParentObjetFromChild.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\IoeTests.aspx">
<SubType>Code</SubType>
</Content>
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\PatialEndConv_A_Begin.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\PatialEndConv_A_B_Begin.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\PatialEndConv_A_B_End.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\PatialEndConv_A_End.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\RedirectErrorNoPauseConversation.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\SerializeConversationTest.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\SessionIsClosedA.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\SessionIsClosedB.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\SPCLazyLoadTest_A_Begin.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\SPCLazyLoadTest_A_Status.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\SPCSwitchConversationSameRequest.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\TimeOut_NoTimeOut.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\TimeOut_WithTimeOut.aspx" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<PostBuildEvent>echo "Copying TestWebs to output directory"
rd /S /Q "$(TargetDir)Data"
xcopy "$(ProjectDir)Data" "$(TargetDir)Data\" /y /s
rd /S /Q "$(TargetDir)Data\Spring\ConversationWA\WebConversationStateTest\Bin"
</PostBuildEvent>
</PropertyGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{2FB16852-22AD-4A5B-885A-97136265CC46}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Spring</RootNamespace>
<AssemblyName>Spring.ConversationWA.NH32.Tests</AssemblyName>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>3.5</OldToolsVersion>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<PublishUrl>http://localhost/Spring.ConversationWA.NH32.Tests/</PublishUrl>
<Install>true</Install>
<InstallFrom>Web</InstallFrom>
<UpdateEnabled>true</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>true</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.Net.2010\Spring.ConversationWA.NH32.Tests\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>..\..\..\build\VS.Net.2010\Spring.ConversationWA.NH32.Tests\Debug\Spring.ConversationWA.NH32.Tests.XML</DocumentationFile>
<StartAction>Program</StartAction>
<StartProgram>$(MSBuildProjectDirectory)\..\..\dependencies\tools\NUnit-2.6.0.12051\bin\nunit-x86.exe</StartProgram>
<StartArguments>"$(MSBuildProjectDirectory)\$(OutputPath)\$(AssemblyName).dll"</StartArguments>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Common.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=3.2.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate32\net\3.5\NHibernate.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=2.5.7.10213, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="NUnitAspEx, Version=2.0.3482.27831, Culture=neutral">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\NUnitAspEx.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>lib\net\2.0\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\..\src\Spring\CommonAssemblyInfo.cs">
<Link>CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Bsn\ConversationEvidenceBsnImpl.cs" />
<Compile Include="Bsn\IConversationEvidenceBsn.cs" />
<Compile Include="Bsn\INoDeferedErrorBsn.cs" />
<Compile Include="Bsn\NoDeferedErrorBsnImpl.cs" />
<Compile Include="ConversationWA\PatialEndConvBeginBasePage.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ConversationWA\PatialEndConvEndBasePage.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ConversationWA\SerializeConversationTestModule.cs" />
<Compile Include="ConversationWA\SimpleTest.cs" />
<Compile Include="ConversationWA\WebConversationStateTest.cs" />
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\CircularDependenceTest.aspx.cs">
<DependentUpon>CircularDependenceTest.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\ConnectionReleaseModeIssue.aspx.cs">
<DependentUpon>ConnectionReleaseModeIssue.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\EndConversationTestBegin.aspx.cs">
<DependentUpon>EndConversationTestBegin.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\EndConversationTestEnd.aspx.cs">
<DependentUpon>EndConversationTestEnd.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\EndPausedSessionIsClosedA.aspx.cs">
<DependentUpon>EndPausedSessionIsClosedA.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\EndPausedSessionIsClosedB.aspx.cs">
<DependentUpon>EndPausedSessionIsClosedB.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\EndPausedTest.aspx.cs">
<DependentUpon>EndPausedTest.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\GetParentObjetFromChild.aspx.cs">
<DependentUpon>GetParentObjetFromChild.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\IoeTests.aspx.cs">
<DependentUpon>IoeTests.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\PatialEndConv_A_Begin.aspx.cs">
<DependentUpon>PatialEndConv_A_Begin.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\PatialEndConv_A_B_Begin.aspx.cs">
<DependentUpon>PatialEndConv_A_B_Begin.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\PatialEndConv_A_B_End.aspx.cs">
<DependentUpon>PatialEndConv_A_B_End.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\PatialEndConv_A_End.aspx.cs">
<DependentUpon>PatialEndConv_A_End.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\RedirectErrorNoPauseConversation.aspx.cs">
<DependentUpon>RedirectErrorNoPauseConversation.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\SerializeConversationTest.aspx.cs">
<DependentUpon>SerializeConversationTest.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\SessionIsClosedA.aspx.cs">
<DependentUpon>SessionIsClosedA.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\SessionIsClosedB.aspx.cs">
<DependentUpon>SessionIsClosedB.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\SPCLazyLoadTest_A_Begin.aspx.cs">
<DependentUpon>SPCLazyLoadTest_A_Begin.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\SPCLazyLoadTest_A_Status.aspx.cs">
<DependentUpon>SPCLazyLoadTest_A_Status.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\SPCSwitchConversationSameRequest.aspx.cs">
<DependentUpon>SPCSwitchConversationSameRequest.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\TimeOut_NoTimeOut.aspx.cs">
<DependentUpon>TimeOut_NoTimeOut.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Data\Spring\ConversationWA\WebConversationStateTest\TimeOut_WithTimeOut.aspx.cs">
<DependentUpon>TimeOut_WithTimeOut.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Entities\SPCDetailEnt.cs" />
<Compile Include="Entities\SPCMasterEnt.cs" />
<Compile Include="Spring\Data\Common\ConnectionCreationTrackingDbProvider.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\src\Spring\Spring.Aop\Spring.Aop.2010.csproj">
<Project>{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}</Project>
<Name>Spring.Aop.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.ConversationWA.NH32\Spring.ConversationWA.NH32.2010.csproj">
<Project>{64400FF8-2E9F-4809-B5F4-0C7EB8ABFF87}</Project>
<Name>Spring.ConversationWA.NH32.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Core\Spring.Core.2010.csproj">
<Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project>
<Name>Spring.Core.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Data.NHibernate32\Spring.Data.NHibernate32.2010.csproj">
<Project>{9F0F739C-876E-4C4B-AA55-9AC9242C25C8}</Project>
<Name>Spring.Data.NHibernate32.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Data\Spring.Data.2010.csproj">
<Project>{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}</Project>
<Name>Spring.Data.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Web\Spring.Web.2010.csproj">
<Project>{BA4789EB-281A-48EA-8763-28B9F0596A18}</Project>
<Name>Spring.Web.2010</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\log4net.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\services.xml.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\web.config.net-2.0" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Entities\SPCDetailEnt.hbm.xml" />
<EmbeddedResource Include="Entities\SPCMasterEnt.hbm.xml" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\Web.Config" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.0">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
<Visible>False</Visible>
<ProductName>Windows Installer 3.1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\CircularDependenceTest.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\ConnectionReleaseModeIssue.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\EndConversationTestBegin.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\EndConversationTestEnd.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\EndPausedSessionIsClosedA.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\EndPausedSessionIsClosedB.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\EndPausedTest.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\GetParentObjetFromChild.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\IoeTests.aspx">
<SubType>Code</SubType>
</Content>
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\PatialEndConv_A_Begin.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\PatialEndConv_A_B_Begin.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\PatialEndConv_A_B_End.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\PatialEndConv_A_End.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\RedirectErrorNoPauseConversation.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\SerializeConversationTest.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\SessionIsClosedA.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\SessionIsClosedB.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\SPCLazyLoadTest_A_Begin.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\SPCLazyLoadTest_A_Status.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\SPCSwitchConversationSameRequest.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\TimeOut_NoTimeOut.aspx" />
<Content Include="Data\Spring\ConversationWA\WebConversationStateTest\TimeOut_WithTimeOut.aspx" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<PostBuildEvent>echo "Copying TestWebs to output directory"
rd /S /Q "$(TargetDir)Data"
xcopy "$(ProjectDir)Data" "$(TargetDir)Data\" /y /s
rd /S /Q "$(TargetDir)Data\Spring\ConversationWA\WebConversationStateTest\Bin"
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@@ -1,127 +1,127 @@
<?xml version="1.0" ?>
<project name="Spring.ConversationWA.NH32.Tests" default="test" xmlns="http://nant.sf.net/release/0.91-alpha2/nant.xsd">
<include buildfile="${spring.basedir}/common-project.include" />
<!--
Required properties:
* current.bin.dir - (path) root level to build to
* build.debug - (true|false) debug build?
* current.build.defines.csc - framework-specific build defines
-->
<target name="build">
<!-- copy nh libs. It's necessary here to avoid wrong reference to NHibernate 3.3-->
<copy todir="${current.bin.dir}" overwrite="true">
<fileset basedir="${nh32.lib.dir}">
<include name="**/*.dll" />
</fileset>
</copy>
<csc target="library" define="${current.build.defines.csc}"
warnaserror="true"
optimize="${build.optimize}"
debug="${current.build.debug}"
output="${current.bin.dir}/${project::get-name()}.dll"
doc="${current.bin.dir}/${project::get-name()}.xml">
<nowarn>
<warning number="${nowarn.numbers.test}" />
</nowarn>
<sources failonempty="true">
<include name="**/*.cs" />
<include name="../CommonAssemblyInfo.cs" />
<exclude name="Data/**/*.*" />
<exclude name="bin/**/*" />
</sources>
<references basedir="${current.bin.dir}">
<lib>
<include name="${nh32.lib.dir}"/>
</lib>
<include name="System.Data.dll" />
<include name="System.EnterpriseServices.dll" />
<include name="*.dll" />
<exclude name="${project::get-name()}.dll" />
<exclude name="Spring.Data.NHibernate1*.dll" />
<exclude name="Spring.Data.NHibernate2*.dll" />
<exclude name="Spring.Data.NHibernate30*.dll" />
<exclude name="Spring.Data.NHibernate33*.dll" />
<exclude name="Spring.ConversationWA.NH33*.dll" />
<exclude name="Spring.Data.NHibernate*Tests*.dll" />
<exclude name="CloverRuntime.dll" />
<exclude if="${net-4.0}" name="System.Web.Extensions.dll" />
</references>
<resources prefix="Spring" dynamicprefix="true" failonempty="true">
<include name="**/*.xml" />
<exclude name="Data/**/*" />
<exclude name="obj/**/*" />
<exclude name="bin/**/*" />
</resources>
</csc>
<copy file="${project::get-base-directory()}/app.config"
tofile="${current.bin.dir}/${project::get-name()}.dll.config"/>
<echo message="Copying TestWebs to output directory"/>
<delete dir="${current.bin.dir}/Data"/>
<copy todir="${current.bin.dir}/Data">
<fileset basedir="${project::get-base-directory()}/Data">
<include name="**/*.*" />
<exclude name="bin/*.*" />
</fileset>
</copy>
<copy todir="${current.bin.dir}/Data">
<fileset basedir="${project::get-base-directory()}/Data">
<include name="**/*.*" />
<exclude name="bin/*.*" />
</fileset>
</copy>
</target>
<target name="test" depends="build">
<!--moving temporary files that break the build or test of this project (MOVE)-->
<mkdir dir="${current.bin.dir}/nunitaspex_excluded"/>
<move todir="${current.bin.dir}/nunitaspex_excluded" failonerror="true">
<fileset basedir="${current.bin.dir}">
<include name="Spring.Data.NHibernate33.dll"/>
<include name="Spring.ConversationWA.NH33*.dll"/>
</fileset>
</move>
<!--conditional copies of dll's that can break the build's or test's of other projects (COPY)-->
<!--temporary copies of "System.Data.SQLite.dll" because it is 32bit and causes problems in the compilation of the other test projects. It occurs in 64-bit Windows environment.-->
<property name="no.preexisting.sqlite" value="${not file::exists('${current.bin.dir}/System.Data.SQLite.dll')}"/>
<copy todir="${current.bin.dir}">
<fileset basedir="${project::get-base-directory()}/lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}">
<include name="System.Data.SQLite.dll" if="${no.preexisting.sqlite}"/>
</fileset>
</copy>
<!-- property name="test.assemblyname" value="${project::get-name()}" / -->
<call target="common.run-tests" />
<!--conditional copies of dll's that can break the build's or test's of other projects (DELETE)-->
<delete>
<fileset basedir="${current.bin.dir}">
<include name="System.Data.SQLite.dll" if="${no.preexisting.sqlite}"/>
</fileset>
</delete>
<!--moving temporary files that break the build or test of this project (UNDO MOVE)-->
<move todir="${current.bin.dir}">
<fileset basedir="${current.bin.dir}/nunitaspex_excluded">
<include name="Spring.Data.NHibernate33.dll"/>
<include name="Spring.ConversationWA.NH33*.dll"/>
</fileset>
</move>
</target>
<!--
<target name="test" depends="build">
<nunit2outproc>
<formatter type="Plain" />
<formatter type="Xml" usefile="true" extension=".xml"
outputdir="${current.bin.dir}/results" />
<test assemblyname="${current.bin.dir}/${project::get-name()}.dll"
appconfig="${current.bin.dir}/${project::get-name()}.dll.config" />
</nunit2outproc>
</target>
-->
</project>
<?xml version="1.0" ?>
<project name="Spring.ConversationWA.NH32.Tests" default="test" xmlns="http://nant.sf.net/release/0.91-alpha2/nant.xsd">
<include buildfile="${spring.basedir}/common-project.include" />
<!--
Required properties:
* current.bin.dir - (path) root level to build to
* build.debug - (true|false) debug build?
* current.build.defines.csc - framework-specific build defines
-->
<target name="build">
<!-- copy nh libs. It's necessary here to avoid wrong reference to NHibernate 3.3-->
<copy todir="${current.bin.dir}" overwrite="true">
<fileset basedir="${nh32.lib.dir}">
<include name="**/*.dll" />
</fileset>
</copy>
<csc target="library" define="${current.build.defines.csc}"
warnaserror="true"
optimize="${build.optimize}"
debug="${current.build.debug}"
output="${current.bin.dir}/${project::get-name()}.dll"
doc="${current.bin.dir}/${project::get-name()}.xml">
<nowarn>
<warning number="${nowarn.numbers.test}" />
</nowarn>
<sources failonempty="true">
<include name="**/*.cs" />
<include name="../CommonAssemblyInfo.cs" />
<exclude name="Data/**/*.*" />
<exclude name="bin/**/*" />
</sources>
<references basedir="${current.bin.dir}">
<lib>
<include name="${nh32.lib.dir}"/>
</lib>
<include name="System.Data.dll" />
<include name="System.EnterpriseServices.dll" />
<include name="*.dll" />
<exclude name="${project::get-name()}.dll" />
<exclude name="Spring.Data.NHibernate1*.dll" />
<exclude name="Spring.Data.NHibernate2*.dll" />
<exclude name="Spring.Data.NHibernate30*.dll" />
<exclude name="Spring.Data.NHibernate33*.dll" />
<exclude name="Spring.ConversationWA.NH33*.dll" />
<exclude name="Spring.Data.NHibernate*Tests*.dll" />
<exclude name="CloverRuntime.dll" />
<exclude if="${net-4.0}" name="System.Web.Extensions.dll" />
</references>
<resources prefix="Spring" dynamicprefix="true" failonempty="true">
<include name="**/*.xml" />
<exclude name="Data/**/*" />
<exclude name="obj/**/*" />
<exclude name="bin/**/*" />
</resources>
</csc>
<copy file="${project::get-base-directory()}/app.config"
tofile="${current.bin.dir}/${project::get-name()}.dll.config"/>
<echo message="Copying TestWebs to output directory"/>
<delete dir="${current.bin.dir}/Data"/>
<copy todir="${current.bin.dir}/Data">
<fileset basedir="${project::get-base-directory()}/Data">
<include name="**/*.*" />
<exclude name="bin/*.*" />
</fileset>
</copy>
<copy todir="${current.bin.dir}/Data">
<fileset basedir="${project::get-base-directory()}/Data">
<include name="**/*.*" />
<exclude name="bin/*.*" />
</fileset>
</copy>
</target>
<target name="test" depends="build">
<!--moving temporary files that break the build or test of this project (MOVE)-->
<mkdir dir="${current.bin.dir}/nunitaspex_excluded"/>
<move todir="${current.bin.dir}/nunitaspex_excluded" failonerror="true">
<fileset basedir="${current.bin.dir}">
<include name="Spring.Data.NHibernate33.dll"/>
<include name="Spring.ConversationWA.NH33*.dll"/>
</fileset>
</move>
<!--conditional copies of dll's that can break the build's or test's of other projects (COPY)-->
<!--temporary copies of "System.Data.SQLite.dll" because it is 32bit and causes problems in the compilation of the other test projects. It occurs in 64-bit Windows environment.-->
<property name="no.preexisting.sqlite" value="${not file::exists('${current.bin.dir}/System.Data.SQLite.dll')}"/>
<copy todir="${current.bin.dir}">
<fileset basedir="${project::get-base-directory()}/lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}">
<include name="System.Data.SQLite.dll" if="${no.preexisting.sqlite}"/>
</fileset>
</copy>
<!-- property name="test.assemblyname" value="${project::get-name()}" / -->
<call target="common.run-tests" />
<!--conditional copies of dll's that can break the build's or test's of other projects (DELETE)-->
<delete>
<fileset basedir="${current.bin.dir}">
<include name="System.Data.SQLite.dll" if="${no.preexisting.sqlite}"/>
</fileset>
</delete>
<!--moving temporary files that break the build or test of this project (UNDO MOVE)-->
<move todir="${current.bin.dir}">
<fileset basedir="${current.bin.dir}/nunitaspex_excluded">
<include name="Spring.Data.NHibernate33.dll"/>
<include name="Spring.ConversationWA.NH33*.dll"/>
</fileset>
</move>
</target>
<!--
<target name="test" depends="build">
<nunit2outproc>
<formatter type="Plain" />
<formatter type="Xml" usefile="true" extension=".xml"
outputdir="${current.bin.dir}/results" />
<test assemblyname="${current.bin.dir}/${project::get-name()}.dll"
appconfig="${current.bin.dir}/${project::get-name()}.dll.config" />
</nunit2outproc>
</target>
-->
</project>

View File

@@ -1,19 +1,19 @@
<?xml version="1.0"?>
<configuration>
<startup>
</startup>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/>
</DbProviderFactories>
</system.data>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="1.0.80.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
<?xml version="1.0"?>
<configuration>
<startup>
</startup>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/>
</DbProviderFactories>
</system.data>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="1.0.80.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@@ -1,99 +1,99 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
<section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
</sectionGroup>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter, Common.Logging">
<arg key="Level" value="ERROR" />
</factoryAdapter>
</logging>
<!--
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net">
<arg key="configType" value="FILE-WATCH" />
<arg key="configFile" value="~/log4net.config" />
</factoryAdapter>
</logging>
-->
</common>
<spring>
<parsers>
<parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data" />
<parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data" />
</parsers>
<context name="SpringConvWbApp" type="Spring.Context.Support.WebApplicationContext, Spring.Web">
<resource uri="~/services.xml.config"/>
</context>
</spring>
<appSettings>
<add key="testkey" value="testvalue" />
</appSettings>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<httpModules>
<add name="NUnitAspExModule" type="NUnitAspEx.AspTestExecutionModule, NUnitAspEx" />
<add name="SerializeConversationTestModule" type="Spring.ConversationWA.SerializeConversationTestModule, Spring.ConversationWA.NH33.Tests"/>
<add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
<add name="ConversationModule" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH33"/>
</httpModules>
<httpHandlers>
<add verb="*" path="*.test" type="NUnitAspEx.AspTestMethodHandler, NUnitAspEx" validate="false" />
<add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
<add verb="*" path="ContextMonitor.ashx" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
</httpHandlers>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="NUnitAspExModule" preCondition="integratedMode" type="NUnitAspEx.AspTestExecutionModule, NUnitAspEx" />
<add name="SerializeConversationTestModule" type="Spring.ConversationWA.SerializeConversationTestModule, Spring.ConversationWA.NH33.Tests"/>
<add name="Spring" preCondition="integratedMode" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
<add name="ConversationModule" preCondition="integratedMode" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH33"/>
</modules>
<handlers>
<add name="AspTestMethodHandler" verb="*" path="*.test" preCondition="integratedMode" type="NUnitAspEx.AspTestMethodHandler, NUnitAspEx" validate="false" />
<add name="PageHandlerFactory" verb="*" path="*.aspx" preCondition="integratedMode" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
<add name="ContextMonitor" verb="*" path="ContextMonitor.ashx" preCondition="integratedMode" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
</handlers>
</system.webServer>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite"
publicKeyToken="db937bc2d44ff139"
culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="1.0.80.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
<section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
</sectionGroup>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter, Common.Logging">
<arg key="Level" value="ERROR" />
</factoryAdapter>
</logging>
<!--
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net">
<arg key="configType" value="FILE-WATCH" />
<arg key="configFile" value="~/log4net.config" />
</factoryAdapter>
</logging>
-->
</common>
<spring>
<parsers>
<parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data" />
<parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data" />
</parsers>
<context name="SpringConvWbApp" type="Spring.Context.Support.WebApplicationContext, Spring.Web">
<resource uri="~/services.xml.config"/>
</context>
</spring>
<appSettings>
<add key="testkey" value="testvalue" />
</appSettings>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<httpModules>
<add name="NUnitAspExModule" type="NUnitAspEx.AspTestExecutionModule, NUnitAspEx" />
<add name="SerializeConversationTestModule" type="Spring.ConversationWA.SerializeConversationTestModule, Spring.ConversationWA.NH33.Tests"/>
<add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
<add name="ConversationModule" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH33"/>
</httpModules>
<httpHandlers>
<add verb="*" path="*.test" type="NUnitAspEx.AspTestMethodHandler, NUnitAspEx" validate="false" />
<add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
<add verb="*" path="ContextMonitor.ashx" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
</httpHandlers>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="NUnitAspExModule" preCondition="integratedMode" type="NUnitAspEx.AspTestExecutionModule, NUnitAspEx" />
<add name="SerializeConversationTestModule" type="Spring.ConversationWA.SerializeConversationTestModule, Spring.ConversationWA.NH33.Tests"/>
<add name="Spring" preCondition="integratedMode" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
<add name="ConversationModule" preCondition="integratedMode" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH33"/>
</modules>
<handlers>
<add name="AspTestMethodHandler" verb="*" path="*.test" preCondition="integratedMode" type="NUnitAspEx.AspTestMethodHandler, NUnitAspEx" validate="false" />
<add name="PageHandlerFactory" verb="*" path="*.aspx" preCondition="integratedMode" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
<add name="ContextMonitor" verb="*" path="ContextMonitor.ashx" preCondition="integratedMode" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
</handlers>
</system.webServer>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite"
publicKeyToken="db937bc2d44ff139"
culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="1.0.80.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@@ -1,353 +1,353 @@
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
xmlns:db="http://www.springframework.net/database"
xmlns:tx="http://www.springframework.net/tx">
<!--BEGIN: Conversation tests-->
<object type="EndConversationTestBegin.aspx">
<property name="Conversation" ref="convEndConversationTest"></property>
<property name="ConversationEvidenceBsn" expression="@(convEndConversationTest)['conversationEvidenceBsn']"></property>
</object>
<object type="EndConversationTestEnd.aspx">
<property name="Conversation" ref="convEndConversationTest"></property>
<property name="ConversationEvidenceBsn" expression="@(convEndConversationTest)['conversationEvidenceBsn']"></property>
</object>
<object name="convEndConversationTest" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convEndConversationTest"></property>
<property name="['conversationEvidenceBsn']" ref="conversationEvidenceBsn"></property>
</object>
<object name="convCircularDependenceTest_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convCircularDependenceTest_A"></property>
<property name="InnerConversations">
<list>
<ref object="convCircularDependenceTest_A_A"/>
</list>
</property>
</object>
<object name="convCircularDependenceTest_A_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convCircularDependenceTest_A_A"></property>
<property name="InnerConversations">
<list>
<ref object="convCircularDependenceTest_A_A_A"/>
</list>
</property>
</object>
<object name="convCircularDependenceTest_A_A_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convCircularDependenceTest_A_A_A"></property>
<property name="['conversationEvidenceBsn']" ref="conversationEvidenceBsn"></property>
</object>
<object name="conversationEvidenceBsn" type="Spring.Bsn.ConversationEvidenceBsnImpl, Spring.ConversationWA.NH33.Tests" singleton="false">
</object>
<object type="PatialEndConv_A_Begin.aspx">
<property name="Conversation" ref="convPatialEndConv_A"></property>
</object>
<object type="PatialEndConv_A_End.aspx">
<property name="Conversation" ref="convPatialEndConv_A"></property>
</object>
<object type="PatialEndConv_A_B_Begin.aspx">
<property name="Conversation" ref="convPatialEndConv_A_B"></property>
</object>
<object type="PatialEndConv_A_B_End.aspx">
<property name="Conversation" ref="convPatialEndConv_A_B"></property>
</object>
<object name="convPatialEndConv_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convPatialEndConv_A"></property>
<property name="InnerConversations">
<list>
<ref object="convPatialEndConv_A_A"/>
<ref object="convPatialEndConv_A_B"/>
<ref object="convPatialEndConv_A_C"/>
</list>
</property>
</object>
<object name="convPatialEndConv_A_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convPatialEndConv_A_A"></property>
</object>
<object name="convPatialEndConv_A_B" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convPatialEndConv_A_B"></property>
<property name="InnerConversations">
<list>
<ref object="convPatialEndConv_A_B_A"/>
<ref object="convPatialEndConv_A_B_B"/>
</list>
</property>
</object>
<object name="convPatialEndConv_A_B_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convPatialEndConv_A_B_A"></property>
</object>
<object name="convPatialEndConv_A_B_B" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convPatialEndConv_A_B_B"></property>
</object>
<object name="convPatialEndConv_A_C" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convPatialEndConv_A_C"></property>
</object>
<object type="GetParentObjetFromChild.aspx">
<property name="Conversation" ref="convGetParentObjetFromChildChild"></property>
</object>
<object name="convGetParentObjetFromChildParent" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convGetParentObjetFromChildParent"></property>
<property name="['parentKey']" value="parentValue"></property>
<property name="['overwrittenKey']" value="overwrittenValueParent"></property>
<property name="InnerConversations">
<list>
<ref object="convGetParentObjetFromChildChild"/>
</list>
</property>
</object>
<object name="convGetParentObjetFromChildChild" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convGetParentObjetFromChildChild"></property>
<property name="ParenteConversation" ref="convGetParentObjetFromChildParent"></property>
<property name="['childKey']" value="childValue"></property>
<property name="['overwrittenKey']" value="overwrittenValueChild"></property>
</object>
<object type="TimeOut_NoTimeOut.aspx">
<property name="Conversation" ref="convTimeOut"></property>
</object>
<object type="TimeOut_WithTimeOut.aspx">
<property name="Conversation" ref="convTimeOut"></property>
</object>
<object name="convTimeOut" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convTimeOut"></property>
<property name="TimeOut" value="60000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="['keyTimeOut']" value="this is the orinal value"></property>
</object>
<!--END: Conversation tests-->
<object name="HttpApplicationConfigurer" type="Spring.Context.Support.HttpApplicationConfigurer, Spring.Web">
<property name="ModuleTemplates">
<dictionary>
<entry key="ConversationModule">
<!-- this name must match the module name -->
<object>
<!-- select "view source" in your browser on any page to see the appended html comment -->
<property name="ConversationManagerNameList">
<list element-type="string">
<value>conversationManager</value>
<value>conversationManagerEndPaused</value>
<value>convMngEndPausedSessionIsClosed</value>
</list>
</property>
</object>
</entry>
</dictionary>
</property>
</object>
<!--BEGIN: session-per-conversation -->
<object type="SPCLazyLoadTest_A_Begin.aspx">
<property name="Conversation" ref="convSPCLazyLoad"></property>
<property name="SessionFactory" ref="MySessionFactory"/>
</object>
<object type="SPCLazyLoadTest_A_Status.aspx">
<property name="Conversation" ref="convSPCLazyLoad"></property>
</object>
<object name="convSPCLazyLoad" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convSPCLazyLoad"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object type="SPCSwitchConversationSameRequest.aspx">
<property name="ConversationB" ref="convSPCSwitchConversationSameRequestB"></property>
<property name="ConversationA" ref="convSPCSwitchConversationSameRequestA"></property>
<property name="SessionFactory" ref="MySessionFactory"/>
</object>
<object name="convSPCSwitchConversationSameRequestA" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convSPCSwitchConversationSameRequestA"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convSPCSwitchConversationSameRequestB" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convSPCSwitchConversationSameRequestB"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<!--END: session-per-conversation -->
<!--BEGIN:RedirectErrorNoPauseConversation-->
<object type="RedirectErrorNoPauseConversation.aspx">
<property name="Conversation" ref="convRedirectErrorNoPauseConversation"></property>
</object>
<object name="convRedirectErrorNoPauseConversation" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convRedirectErrorNoPauseConversation"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<!--BEGIN:RedirectErrorNoPauseConversation-->
<!--BEGIN: InvalidOperationException Tests -->
<object type="IoeTests.aspx">
<property name="ConversationA" ref="convIoeTestsA"></property>
<property name="ConversationAA" ref="convIoeTestsAA"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactory" ref="MySessionFactory"></property>
</object>
<object name="convIoeTestsA" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convIoeTestsA"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convIoeTestsAA" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convIoeTestsAA"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="ParenteConversation" ref="convIoeTestsA"></property>
</object>
<!--END: InvalidOperationException Tests -->
<!--BEGIN: EndPausedTest Tests -->
<object type="EndPausedTest.aspx">
<property name="ConvA" ref="convAEndPaused"></property>
<property name="ConvB" ref="convBEndPaused"></property>
</object>
<object name="convAEndPaused" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convAEndPaused"></property>
<property name="ConversationManager" ref="conversationManagerEndPaused"></property>
</object>
<object name="convBEndPaused" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convBEndPaused"></property>
<property name="ConversationManager" ref="conversationManagerEndPaused"></property>
</object>
<object name="conversationManagerEndPaused" type="Spring.ConversationWA.Impl.WebConversationManager, Spring.ConversationWA.NH33" scope="session">
<property name="EndPaused" value="true"></property>
</object>
<!--END: EndPausedTest Tests -->
<!--BEGIN: SessionIsClosed-->
<object type="SessionIsClosedA.aspx">
<property name="Conversation" ref="convASessionIsClosed"></property>
</object>
<object type="SessionIsClosedB.aspx">
<property name="Conversation" ref="convBSessionIsClosed"></property>
<property name="ConversationA" ref="convASessionIsClosed"></property>
</object>
<object name="convASessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convASessionIsClosed"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convBSessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convBSessionIsClosed"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<!--END: SessionIsClosed-->
<!--BEGIN: EndPausedSessionIsClosed-->
<object type="EndPausedSessionIsClosedA.aspx">
<property name="Conversation" ref="convAEndPausedSessionIsClosed"></property>
</object>
<object type="EndPausedSessionIsClosedB.aspx">
<property name="Conversation" ref="convBEndPausedSessionIsClosed"></property>
</object>
<object name="convAEndPausedSessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convAEndPausedSessionIsClosed"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="convMngEndPausedSessionIsClosed"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convBEndPausedSessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convBEndPausedSessionIsClosed"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="convMngEndPausedSessionIsClosed"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convMngEndPausedSessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationManager, Spring.ConversationWA.NH33" scope="session">
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="EndPaused" value="true"/>
</object>
<!--END: EndPausedSessionIsClosed-->
<!--BEGIN: ConnectionReleaseModeIssue-->
<object type="ConnectionReleaseModeIssue.aspx">
<property name="Conversation" ref="convConnectionReleaseModeIssue"/>
<property name="SessionFactory" ref="MySessionFactory"/>
<property name="ConnectionReleaseModeIssueBsn" ref="connectionReleaseModeIssueBsn"/>
</object>
<object name="convConnectionReleaseModeIssue" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convConnectionReleaseModeIssue"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object id="connectionReleaseModeIssueBsn" type="Spring.Bsn.ConnectionReleaseModeIssueBsnImpl, Spring.ConversationWA.NH33.Tests" singleton="true">
<property name="SessionFactory" ref="MySessionFactory"/>
</object>
<!--END: ConnectionReleaseModeIssue-->
<!--BEGIN: SerializeConversationTest-->
<object type="SerializeConversationTest.aspx">
<property name="Conversation" ref="convSerializeConversationTest"/>
</object>
<object name="convSerializeConversationTest" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convSerializeConversationTest"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<!--END: SerializeConversationTest-->
<!-- BEGIN: Common configuration-->
<object name="conversationManager" type="Spring.ConversationWA.Impl.WebConversationManager, Spring.ConversationWA.NH33" scope="session">
<property name="SessionFactoryName" value="MySessionFactory"/>
</object>
<object id="transactionManager" type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate33">
<property name="DbProvider" ref="DbProvider"/>
<property name="SessionFactory" ref="MySessionFactory"/>
</object>
<object id="MySessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate33">
<property name="DbProvider" ref="DbProvider"/>
<property name="MappingAssemblies">
<list>
<value>Spring.ConversationWA.NH33.Tests</value>
</list>
</property>
<property name="HibernateProperties">
<dictionary>
<!--<entry key="connection.provider" value="AcessaDados.NHibernate.Connection.SiefDriverConnectionProvider, AcessaDados"/>-->
<entry key="dialect" value="NHibernate.Dialect.SQLiteDialect"/>
<entry key="connection.driver_class" value="NHibernate.Driver.SQLite20Driver"/>
<entry key="current_session_context_class" value="Spring.Data.NHibernate.SpringSessionContext, Spring.Data.NHibernate33"/>
<entry key="hbm2ddl.keywords" value="none"/>
<entry key="query.startup_check" value="false"/>
<entry key="show_sql" value="false"/>
<entry key="use_outer_join" value="true"/>
<entry key="format_sql" value="true"/>
<entry key="connection.release_mode" value="on_close"/>
</dictionary>
</property>
</object>
<object id="DbProvider" type="Spring.Spring.Data.Common.CountGetConnDbProvider, Spring.ConversationWA.NH33.Tests">
<property name="TargetDbProvider" ref="targetDbProvider"/>
</object>
<db:provider id="targetDbProvider" provider="System.Data.SQLite" connectionString="Data Source=|DataDirectory|../sqlite/conversationTests.db;Version=3;FailIfMissing=True;"></db:provider>
<tx:attribute-driven transaction-manager="transactionManager"/>
<!-- END: Common configuration-->
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
xmlns:db="http://www.springframework.net/database"
xmlns:tx="http://www.springframework.net/tx">
<!--BEGIN: Conversation tests-->
<object type="EndConversationTestBegin.aspx">
<property name="Conversation" ref="convEndConversationTest"></property>
<property name="ConversationEvidenceBsn" expression="@(convEndConversationTest)['conversationEvidenceBsn']"></property>
</object>
<object type="EndConversationTestEnd.aspx">
<property name="Conversation" ref="convEndConversationTest"></property>
<property name="ConversationEvidenceBsn" expression="@(convEndConversationTest)['conversationEvidenceBsn']"></property>
</object>
<object name="convEndConversationTest" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convEndConversationTest"></property>
<property name="['conversationEvidenceBsn']" ref="conversationEvidenceBsn"></property>
</object>
<object name="convCircularDependenceTest_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convCircularDependenceTest_A"></property>
<property name="InnerConversations">
<list>
<ref object="convCircularDependenceTest_A_A"/>
</list>
</property>
</object>
<object name="convCircularDependenceTest_A_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convCircularDependenceTest_A_A"></property>
<property name="InnerConversations">
<list>
<ref object="convCircularDependenceTest_A_A_A"/>
</list>
</property>
</object>
<object name="convCircularDependenceTest_A_A_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convCircularDependenceTest_A_A_A"></property>
<property name="['conversationEvidenceBsn']" ref="conversationEvidenceBsn"></property>
</object>
<object name="conversationEvidenceBsn" type="Spring.Bsn.ConversationEvidenceBsnImpl, Spring.ConversationWA.NH33.Tests" singleton="false">
</object>
<object type="PatialEndConv_A_Begin.aspx">
<property name="Conversation" ref="convPatialEndConv_A"></property>
</object>
<object type="PatialEndConv_A_End.aspx">
<property name="Conversation" ref="convPatialEndConv_A"></property>
</object>
<object type="PatialEndConv_A_B_Begin.aspx">
<property name="Conversation" ref="convPatialEndConv_A_B"></property>
</object>
<object type="PatialEndConv_A_B_End.aspx">
<property name="Conversation" ref="convPatialEndConv_A_B"></property>
</object>
<object name="convPatialEndConv_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convPatialEndConv_A"></property>
<property name="InnerConversations">
<list>
<ref object="convPatialEndConv_A_A"/>
<ref object="convPatialEndConv_A_B"/>
<ref object="convPatialEndConv_A_C"/>
</list>
</property>
</object>
<object name="convPatialEndConv_A_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convPatialEndConv_A_A"></property>
</object>
<object name="convPatialEndConv_A_B" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convPatialEndConv_A_B"></property>
<property name="InnerConversations">
<list>
<ref object="convPatialEndConv_A_B_A"/>
<ref object="convPatialEndConv_A_B_B"/>
</list>
</property>
</object>
<object name="convPatialEndConv_A_B_A" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convPatialEndConv_A_B_A"></property>
</object>
<object name="convPatialEndConv_A_B_B" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convPatialEndConv_A_B_B"></property>
</object>
<object name="convPatialEndConv_A_C" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convPatialEndConv_A_C"></property>
</object>
<object type="GetParentObjetFromChild.aspx">
<property name="Conversation" ref="convGetParentObjetFromChildChild"></property>
</object>
<object name="convGetParentObjetFromChildParent" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convGetParentObjetFromChildParent"></property>
<property name="['parentKey']" value="parentValue"></property>
<property name="['overwrittenKey']" value="overwrittenValueParent"></property>
<property name="InnerConversations">
<list>
<ref object="convGetParentObjetFromChildChild"/>
</list>
</property>
</object>
<object name="convGetParentObjetFromChildChild" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convGetParentObjetFromChildChild"></property>
<property name="ParenteConversation" ref="convGetParentObjetFromChildParent"></property>
<property name="['childKey']" value="childValue"></property>
<property name="['overwrittenKey']" value="overwrittenValueChild"></property>
</object>
<object type="TimeOut_NoTimeOut.aspx">
<property name="Conversation" ref="convTimeOut"></property>
</object>
<object type="TimeOut_WithTimeOut.aspx">
<property name="Conversation" ref="convTimeOut"></property>
</object>
<object name="convTimeOut" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convTimeOut"></property>
<property name="TimeOut" value="60000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="['keyTimeOut']" value="this is the orinal value"></property>
</object>
<!--END: Conversation tests-->
<object name="HttpApplicationConfigurer" type="Spring.Context.Support.HttpApplicationConfigurer, Spring.Web">
<property name="ModuleTemplates">
<dictionary>
<entry key="ConversationModule">
<!-- this name must match the module name -->
<object>
<!-- select "view source" in your browser on any page to see the appended html comment -->
<property name="ConversationManagerNameList">
<list element-type="string">
<value>conversationManager</value>
<value>conversationManagerEndPaused</value>
<value>convMngEndPausedSessionIsClosed</value>
</list>
</property>
</object>
</entry>
</dictionary>
</property>
</object>
<!--BEGIN: session-per-conversation -->
<object type="SPCLazyLoadTest_A_Begin.aspx">
<property name="Conversation" ref="convSPCLazyLoad"></property>
<property name="SessionFactory" ref="MySessionFactory"/>
</object>
<object type="SPCLazyLoadTest_A_Status.aspx">
<property name="Conversation" ref="convSPCLazyLoad"></property>
</object>
<object name="convSPCLazyLoad" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convSPCLazyLoad"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object type="SPCSwitchConversationSameRequest.aspx">
<property name="ConversationB" ref="convSPCSwitchConversationSameRequestB"></property>
<property name="ConversationA" ref="convSPCSwitchConversationSameRequestA"></property>
<property name="SessionFactory" ref="MySessionFactory"/>
</object>
<object name="convSPCSwitchConversationSameRequestA" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convSPCSwitchConversationSameRequestA"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convSPCSwitchConversationSameRequestB" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convSPCSwitchConversationSameRequestB"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<!--END: session-per-conversation -->
<!--BEGIN:RedirectErrorNoPauseConversation-->
<object type="RedirectErrorNoPauseConversation.aspx">
<property name="Conversation" ref="convRedirectErrorNoPauseConversation"></property>
</object>
<object name="convRedirectErrorNoPauseConversation" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convRedirectErrorNoPauseConversation"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<!--BEGIN:RedirectErrorNoPauseConversation-->
<!--BEGIN: InvalidOperationException Tests -->
<object type="IoeTests.aspx">
<property name="ConversationA" ref="convIoeTestsA"></property>
<property name="ConversationAA" ref="convIoeTestsAA"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactory" ref="MySessionFactory"></property>
</object>
<object name="convIoeTestsA" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convIoeTestsA"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convIoeTestsAA" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convIoeTestsAA"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="ParenteConversation" ref="convIoeTestsA"></property>
</object>
<!--END: InvalidOperationException Tests -->
<!--BEGIN: EndPausedTest Tests -->
<object type="EndPausedTest.aspx">
<property name="ConvA" ref="convAEndPaused"></property>
<property name="ConvB" ref="convBEndPaused"></property>
</object>
<object name="convAEndPaused" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convAEndPaused"></property>
<property name="ConversationManager" ref="conversationManagerEndPaused"></property>
</object>
<object name="convBEndPaused" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convBEndPaused"></property>
<property name="ConversationManager" ref="conversationManagerEndPaused"></property>
</object>
<object name="conversationManagerEndPaused" type="Spring.ConversationWA.Impl.WebConversationManager, Spring.ConversationWA.NH33" scope="session">
<property name="EndPaused" value="true"></property>
</object>
<!--END: EndPausedTest Tests -->
<!--BEGIN: SessionIsClosed-->
<object type="SessionIsClosedA.aspx">
<property name="Conversation" ref="convASessionIsClosed"></property>
</object>
<object type="SessionIsClosedB.aspx">
<property name="Conversation" ref="convBSessionIsClosed"></property>
<property name="ConversationA" ref="convASessionIsClosed"></property>
</object>
<object name="convASessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convASessionIsClosed"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convBSessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convBSessionIsClosed"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<!--END: SessionIsClosed-->
<!--BEGIN: EndPausedSessionIsClosed-->
<object type="EndPausedSessionIsClosedA.aspx">
<property name="Conversation" ref="convAEndPausedSessionIsClosed"></property>
</object>
<object type="EndPausedSessionIsClosedB.aspx">
<property name="Conversation" ref="convBEndPausedSessionIsClosed"></property>
</object>
<object name="convAEndPausedSessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convAEndPausedSessionIsClosed"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="convMngEndPausedSessionIsClosed"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convBEndPausedSessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convBEndPausedSessionIsClosed"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="convMngEndPausedSessionIsClosed"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object name="convMngEndPausedSessionIsClosed" type="Spring.ConversationWA.Impl.WebConversationManager, Spring.ConversationWA.NH33" scope="session">
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="EndPaused" value="true"/>
</object>
<!--END: EndPausedSessionIsClosed-->
<!--BEGIN: ConnectionReleaseModeIssue-->
<object type="ConnectionReleaseModeIssue.aspx">
<property name="Conversation" ref="convConnectionReleaseModeIssue"/>
<property name="SessionFactory" ref="MySessionFactory"/>
<property name="ConnectionReleaseModeIssueBsn" ref="connectionReleaseModeIssueBsn"/>
</object>
<object name="convConnectionReleaseModeIssue" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convConnectionReleaseModeIssue"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<object id="connectionReleaseModeIssueBsn" type="Spring.Bsn.ConnectionReleaseModeIssueBsnImpl, Spring.ConversationWA.NH33.Tests" singleton="true">
<property name="SessionFactory" ref="MySessionFactory"/>
</object>
<!--END: ConnectionReleaseModeIssue-->
<!--BEGIN: SerializeConversationTest-->
<object type="SerializeConversationTest.aspx">
<property name="Conversation" ref="convSerializeConversationTest"/>
</object>
<object name="convSerializeConversationTest" type="Spring.ConversationWA.Impl.WebConversationSpringState, Spring.ConversationWA.NH33" scope="session">
<property name="Id" value="convSerializeConversationTest"></property>
<property name="TimeOut" value="600000"></property>
<property name="ConversationManager" ref="conversationManager"></property>
<property name="SessionFactoryName" value="MySessionFactory"/>
<property name="DbProviderName" value="DbProvider"/>
</object>
<!--END: SerializeConversationTest-->
<!-- BEGIN: Common configuration-->
<object name="conversationManager" type="Spring.ConversationWA.Impl.WebConversationManager, Spring.ConversationWA.NH33" scope="session">
<property name="SessionFactoryName" value="MySessionFactory"/>
</object>
<object id="transactionManager" type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate33">
<property name="DbProvider" ref="DbProvider"/>
<property name="SessionFactory" ref="MySessionFactory"/>
</object>
<object id="MySessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate33">
<property name="DbProvider" ref="DbProvider"/>
<property name="MappingAssemblies">
<list>
<value>Spring.ConversationWA.NH33.Tests</value>
</list>
</property>
<property name="HibernateProperties">
<dictionary>
<!--<entry key="connection.provider" value="AcessaDados.NHibernate.Connection.SiefDriverConnectionProvider, AcessaDados"/>-->
<entry key="dialect" value="NHibernate.Dialect.SQLiteDialect"/>
<entry key="connection.driver_class" value="NHibernate.Driver.SQLite20Driver"/>
<entry key="current_session_context_class" value="Spring.Data.NHibernate.SpringSessionContext, Spring.Data.NHibernate33"/>
<entry key="hbm2ddl.keywords" value="none"/>
<entry key="query.startup_check" value="false"/>
<entry key="show_sql" value="false"/>
<entry key="use_outer_join" value="true"/>
<entry key="format_sql" value="true"/>
<entry key="connection.release_mode" value="on_close"/>
</dictionary>
</property>
</object>
<object id="DbProvider" type="Spring.Spring.Data.Common.CountGetConnDbProvider, Spring.ConversationWA.NH33.Tests">
<property name="TargetDbProvider" ref="targetDbProvider"/>
</object>
<db:provider id="targetDbProvider" provider="System.Data.SQLite" connectionString="Data Source=|DataDirectory|../sqlite/conversationTests.db;Version=3;FailIfMissing=True;"></db:provider>
<tx:attribute-driven transaction-manager="transactionManager"/>
<!-- END: Common configuration-->
</objects>

View File

@@ -1,99 +1,99 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
<section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
</sectionGroup>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter, Common.Logging">
<arg key="Level" value="ERROR" />
</factoryAdapter>
</logging>
<!--
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net">
<arg key="configType" value="FILE-WATCH" />
<arg key="configFile" value="~/log4net.config" />
</factoryAdapter>
</logging>
-->
</common>
<spring>
<parsers>
<parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data" />
<parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data" />
</parsers>
<context name="SpringConvWbApp" type="Spring.Context.Support.WebApplicationContext, Spring.Web">
<resource uri="~/services.xml.config"/>
</context>
</spring>
<appSettings>
<add key="testkey" value="testvalue" />
</appSettings>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<httpModules>
<add name="NUnitAspExModule" type="NUnitAspEx.AspTestExecutionModule, NUnitAspEx" />
<add name="SerializeConversationTestModule" type="Spring.ConversationWA.SerializeConversationTestModule, Spring.ConversationWA.NH33.Tests"/>
<add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
<add name="ConversationModule" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH33"/>
</httpModules>
<httpHandlers>
<add verb="*" path="*.test" type="NUnitAspEx.AspTestMethodHandler, NUnitAspEx" validate="false" />
<add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
<add verb="*" path="ContextMonitor.ashx" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
</httpHandlers>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="NUnitAspExModule" preCondition="integratedMode" type="NUnitAspEx.AspTestExecutionModule, NUnitAspEx" />
<add name="SerializeConversationTestModule" type="Spring.ConversationWA.SerializeConversationTestModule, Spring.ConversationWA.NH33.Tests"/>
<add name="Spring" preCondition="integratedMode" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
<add name="ConversationModule" preCondition="integratedMode" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH33"/>
</modules>
<handlers>
<add name="AspTestMethodHandler" verb="*" path="*.test" preCondition="integratedMode" type="NUnitAspEx.AspTestMethodHandler, NUnitAspEx" validate="false" />
<add name="PageHandlerFactory" verb="*" path="*.aspx" preCondition="integratedMode" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
<add name="ContextMonitor" verb="*" path="ContextMonitor.ashx" preCondition="integratedMode" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
</handlers>
</system.webServer>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite"
publicKeyToken="db937bc2d44ff139"
culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="1.0.80.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
<section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
</sectionGroup>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter, Common.Logging">
<arg key="Level" value="ERROR" />
</factoryAdapter>
</logging>
<!--
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net">
<arg key="configType" value="FILE-WATCH" />
<arg key="configFile" value="~/log4net.config" />
</factoryAdapter>
</logging>
-->
</common>
<spring>
<parsers>
<parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data" />
<parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data" />
</parsers>
<context name="SpringConvWbApp" type="Spring.Context.Support.WebApplicationContext, Spring.Web">
<resource uri="~/services.xml.config"/>
</context>
</spring>
<appSettings>
<add key="testkey" value="testvalue" />
</appSettings>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<httpModules>
<add name="NUnitAspExModule" type="NUnitAspEx.AspTestExecutionModule, NUnitAspEx" />
<add name="SerializeConversationTestModule" type="Spring.ConversationWA.SerializeConversationTestModule, Spring.ConversationWA.NH33.Tests"/>
<add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
<add name="ConversationModule" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH33"/>
</httpModules>
<httpHandlers>
<add verb="*" path="*.test" type="NUnitAspEx.AspTestMethodHandler, NUnitAspEx" validate="false" />
<add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
<add verb="*" path="ContextMonitor.ashx" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
</httpHandlers>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="NUnitAspExModule" preCondition="integratedMode" type="NUnitAspEx.AspTestExecutionModule, NUnitAspEx" />
<add name="SerializeConversationTestModule" type="Spring.ConversationWA.SerializeConversationTestModule, Spring.ConversationWA.NH33.Tests"/>
<add name="Spring" preCondition="integratedMode" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
<add name="ConversationModule" preCondition="integratedMode" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH33"/>
</modules>
<handlers>
<add name="AspTestMethodHandler" verb="*" path="*.test" preCondition="integratedMode" type="NUnitAspEx.AspTestMethodHandler, NUnitAspEx" validate="false" />
<add name="PageHandlerFactory" verb="*" path="*.aspx" preCondition="integratedMode" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
<add name="ContextMonitor" verb="*" path="ContextMonitor.ashx" preCondition="integratedMode" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
</handlers>
</system.webServer>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite"
publicKeyToken="db937bc2d44ff139"
culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="1.0.80.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Spring.Entities" assembly="Spring.ConversationWA.NH33.Tests">
<class name="SPCDetailEnt" table="SPCDetail">
<id name="Id" type="Int32" column="Id">
<generator class="increment"></generator>
</id>
<property name="Description" column="Description" type="String"/>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Spring.Entities" assembly="Spring.ConversationWA.NH33.Tests">
<class name="SPCDetailEnt" table="SPCDetail">
<id name="Id" type="Int32" column="Id">
<generator class="increment"></generator>
</id>
<property name="Description" column="Description" type="String"/>
</class>
</hibernate-mapping>

View File

@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Spring.Entities" assembly="Spring.ConversationWA.NH33.Tests">
<class name="SPCMasterEnt" table="SPCMaster">
<id name="Id" type="Int32" column="Id">
<generator class="increment"></generator>
</id>
<property name="Description" column="Description" type="String"/>
<bag name="SPCDetailEntList" fetch="select">
<key column="MasterId"></key>
<one-to-many class="Spring.Entities.SPCDetailEnt, Spring.ConversationWA.NH33.Tests"/>
</bag>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Spring.Entities" assembly="Spring.ConversationWA.NH33.Tests">
<class name="SPCMasterEnt" table="SPCMaster">
<id name="Id" type="Int32" column="Id">
<generator class="increment"></generator>
</id>
<property name="Description" column="Description" type="String"/>
<bag name="SPCDetailEntList" fetch="select">
<key column="MasterId"></key>
<one-to-many class="Spring.Entities.SPCDetailEnt, Spring.ConversationWA.NH33.Tests"/>
</bag>
</class>
</hibernate-mapping>

View File

@@ -1,176 +1,176 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Spring</RootNamespace>
<AssemblyName>Spring.ConversationWA.NH33.Tests</AssemblyName>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>2.0</OldToolsVersion>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<TargetFrameworkSubset>
</TargetFrameworkSubset>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.Net.2008\Spring.ConversationWA.NH33.Tests\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>
</DocumentationFile>
<StartAction>Program</StartAction>
<StartProgram>$(MSBuildProjectDirectory)\..\..\dependencies\tools\NUnit-2.6.0.12051\bin\nunit-x86.exe</StartProgram>
<StartArguments>"$(MSBuildProjectDirectory)\$(OutputPath)\$(AssemblyName).dll"</StartArguments>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Common.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\log4net.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=3.3.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate33\net\3.5\NHibernate.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=2.5.7.10213, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="NUnitAspEx, Version=2.0.3482.27831, Culture=neutral">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\NUnitAspEx.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Spring.ConversationWA.NH32.Tests\lib\net\2.0\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\..\src\Spring\CommonAssemblyInfo.cs">
<Link>CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Bsn\ConversationEvidenceBsnImpl.cs">
<Link>Bsn\ConversationEvidenceBsnImpl.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Bsn\IConversationEvidenceBsn.cs">
<Link>Bsn\IConversationEvidenceBsn.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Bsn\INoDeferedErrorBsn.cs">
<Link>Bsn\INoDeferedErrorBsn.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Bsn\NoDeferedErrorBsnImpl.cs">
<Link>Bsn\NoDeferedErrorBsnImpl.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\ConversationWA\PatialEndConvBeginBasePage.cs">
<Link>ConversationWA\PatialEndConvBeginBasePage.cs</Link>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\ConversationWA\PatialEndConvEndBasePage.cs">
<Link>ConversationWA\PatialEndConvEndBasePage.cs</Link>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\ConversationWA\SerializeConversationTestModule.cs">
<Link>ConversationWA\SerializeConversationTestModule.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\ConversationWA\WebConversationStateTest.cs">
<Link>ConversationWA\WebConversationStateTest.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Entities\SPCDetailEnt.cs">
<Link>Entities\SPCDetailEnt.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Entities\SPCMasterEnt.cs">
<Link>Entities\SPCMasterEnt.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Spring\Data\Common\CountGetConnDbProvider.cs">
<Link>Spring\Data\Common\CountGetConnDbProvider.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\src\Spring\Spring.Aop\Spring.Aop.2008.csproj">
<Project>{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}</Project>
<Name>Spring.Aop.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.ConversationWA.NH33\Spring.ConversationWA.NH33.2008.csproj">
<Project>{64400FF8-2E9F-4809-B5F4-0C7EB8ABFF87}</Project>
<Name>Spring.ConversationWA.NH33.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Core\Spring.Core.2008.csproj">
<Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project>
<Name>Spring.Core.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Data.NHibernate33\Spring.Data.NHibernate33.2008.csproj">
<Project>{67EA5988-C54E-4348-BFFB-E4A61F26143C}</Project>
<Name>Spring.Data.NHibernate33.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Data\Spring.Data.2008.csproj">
<Project>{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}</Project>
<Name>Spring.Data.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Web\Spring.Web.2008.csproj">
<Project>{BA4789EB-281A-48EA-8763-28B9F0596A18}</Project>
<Name>Spring.Web.2008</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\services.xml.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\web.config.net-2.0" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Entities\SPCDetailEnt.hbm.xml" />
<EmbeddedResource Include="Entities\SPCMasterEnt.hbm.xml" />
</ItemGroup>
<ItemGroup>
<None Include="..\Spring.ConversationWA.NH32.Tests\Data\Spring\ConversationWA\WebConversationStateTest\log4net.config">
<Link>Data\Spring\ConversationWA\WebConversationStateTest\log4net.config</Link>
</None>
<None Include="app.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\Web.Config" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<PostBuildEvent>echo "Copying TestWebs to output directory"
rd /S /Q "$(TargetDir)Data"
xcopy "$(ProjectDir)..\Spring.ConversationWA.NH32.Tests\Data" "$(TargetDir)Data\" /y /s
xcopy "$(ProjectDir)Data" "$(TargetDir)Data\" /y /s
rd /S /Q "$(TargetDir)Data\Spring\ConversationWA\WebConversationStateTest\Bin"
</PostBuildEvent>
</PropertyGroup>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Spring</RootNamespace>
<AssemblyName>Spring.ConversationWA.NH33.Tests</AssemblyName>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>2.0</OldToolsVersion>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<TargetFrameworkSubset>
</TargetFrameworkSubset>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.Net.2008\Spring.ConversationWA.NH33.Tests\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>
</DocumentationFile>
<StartAction>Program</StartAction>
<StartProgram>$(MSBuildProjectDirectory)\..\..\dependencies\tools\NUnit-2.6.0.12051\bin\nunit-x86.exe</StartProgram>
<StartArguments>"$(MSBuildProjectDirectory)\$(OutputPath)\$(AssemblyName).dll"</StartArguments>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Common.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\log4net.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=3.3.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate33\net\3.5\NHibernate.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=2.5.7.10213, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="NUnitAspEx, Version=2.0.3482.27831, Culture=neutral">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\NUnitAspEx.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Spring.ConversationWA.NH32.Tests\lib\net\2.0\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\..\src\Spring\CommonAssemblyInfo.cs">
<Link>CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Bsn\ConversationEvidenceBsnImpl.cs">
<Link>Bsn\ConversationEvidenceBsnImpl.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Bsn\IConversationEvidenceBsn.cs">
<Link>Bsn\IConversationEvidenceBsn.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Bsn\INoDeferedErrorBsn.cs">
<Link>Bsn\INoDeferedErrorBsn.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Bsn\NoDeferedErrorBsnImpl.cs">
<Link>Bsn\NoDeferedErrorBsnImpl.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\ConversationWA\PatialEndConvBeginBasePage.cs">
<Link>ConversationWA\PatialEndConvBeginBasePage.cs</Link>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\ConversationWA\PatialEndConvEndBasePage.cs">
<Link>ConversationWA\PatialEndConvEndBasePage.cs</Link>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\ConversationWA\SerializeConversationTestModule.cs">
<Link>ConversationWA\SerializeConversationTestModule.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\ConversationWA\WebConversationStateTest.cs">
<Link>ConversationWA\WebConversationStateTest.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Entities\SPCDetailEnt.cs">
<Link>Entities\SPCDetailEnt.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Entities\SPCMasterEnt.cs">
<Link>Entities\SPCMasterEnt.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Spring\Data\Common\CountGetConnDbProvider.cs">
<Link>Spring\Data\Common\CountGetConnDbProvider.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\src\Spring\Spring.Aop\Spring.Aop.2008.csproj">
<Project>{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}</Project>
<Name>Spring.Aop.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.ConversationWA.NH33\Spring.ConversationWA.NH33.2008.csproj">
<Project>{64400FF8-2E9F-4809-B5F4-0C7EB8ABFF87}</Project>
<Name>Spring.ConversationWA.NH33.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Core\Spring.Core.2008.csproj">
<Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project>
<Name>Spring.Core.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Data.NHibernate33\Spring.Data.NHibernate33.2008.csproj">
<Project>{67EA5988-C54E-4348-BFFB-E4A61F26143C}</Project>
<Name>Spring.Data.NHibernate33.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Data\Spring.Data.2008.csproj">
<Project>{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}</Project>
<Name>Spring.Data.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Web\Spring.Web.2008.csproj">
<Project>{BA4789EB-281A-48EA-8763-28B9F0596A18}</Project>
<Name>Spring.Web.2008</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\services.xml.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\web.config.net-2.0" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Entities\SPCDetailEnt.hbm.xml" />
<EmbeddedResource Include="Entities\SPCMasterEnt.hbm.xml" />
</ItemGroup>
<ItemGroup>
<None Include="..\Spring.ConversationWA.NH32.Tests\Data\Spring\ConversationWA\WebConversationStateTest\log4net.config">
<Link>Data\Spring\ConversationWA\WebConversationStateTest\log4net.config</Link>
</None>
<None Include="app.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\Web.Config" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<PostBuildEvent>echo "Copying TestWebs to output directory"
rd /S /Q "$(TargetDir)Data"
xcopy "$(ProjectDir)..\Spring.ConversationWA.NH32.Tests\Data" "$(TargetDir)Data\" /y /s
xcopy "$(ProjectDir)Data" "$(TargetDir)Data\" /y /s
rd /S /Q "$(TargetDir)Data\Spring\ConversationWA\WebConversationStateTest\Bin"
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@@ -1,206 +1,206 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Spring</RootNamespace>
<AssemblyName>Spring.ConversationWA.NH33.Tests</AssemblyName>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>3.5</OldToolsVersion>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<PublishUrl>http://localhost/Spring.ConversationWA.NH33.Tests/</PublishUrl>
<Install>true</Install>
<InstallFrom>Web</InstallFrom>
<UpdateEnabled>true</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>true</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.Net.2010\Spring.ConversationWA.NH33.Tests\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>
</DocumentationFile>
<StartAction>Program</StartAction>
<StartProgram>$(MSBuildProjectDirectory)\..\..\dependencies\tools\NUnit-2.6.0.12051\bin\nunit-x86.exe</StartProgram>
<StartArguments>"$(MSBuildProjectDirectory)\$(OutputPath)\$(AssemblyName).dll"</StartArguments>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Common.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=3.3.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate33\net\3.5\NHibernate.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=2.5.7.10213, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="NUnitAspEx, Version=2.0.3482.27831, Culture=neutral">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\NUnitAspEx.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Spring.ConversationWA.NH32.Tests\lib\net\2.0\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\..\src\Spring\CommonAssemblyInfo.cs">
<Link>CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Bsn\ConversationEvidenceBsnImpl.cs">
<Link>Bsn\ConversationEvidenceBsnImpl.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Bsn\IConversationEvidenceBsn.cs">
<Link>Bsn\IConversationEvidenceBsn.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Bsn\INoDeferedErrorBsn.cs">
<Link>Bsn\INoDeferedErrorBsn.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Bsn\NoDeferedErrorBsnImpl.cs">
<Link>Bsn\NoDeferedErrorBsnImpl.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\ConversationWA\PatialEndConvBeginBasePage.cs">
<Link>ConversationWA\PatialEndConvBeginBasePage.cs</Link>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\ConversationWA\PatialEndConvEndBasePage.cs">
<Link>ConversationWA\PatialEndConvEndBasePage.cs</Link>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\ConversationWA\WebConversationStateTest.cs">
<Link>ConversationWA\WebConversationStateTest.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Entities\SPCDetailEnt.cs">
<Link>Entities\SPCDetailEnt.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Entities\SPCMasterEnt.cs">
<Link>Entities\SPCMasterEnt.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Spring\Data\Common\ConnectionCreationTrackingDbProvider.cs">
<Link>Spring\Data\Common\ConnectionCreationTrackingDbProvider.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\src\Spring\Spring.Aop\Spring.Aop.2010.csproj">
<Project>{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}</Project>
<Name>Spring.Aop.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.ConversationWA.NH33\Spring.ConversationWA.NH33.2010.csproj">
<Project>{CF375928-B6D5-485C-B04D-2BC41D9DBF1E}</Project>
<Name>Spring.ConversationWA.NH33.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Core\Spring.Core.2010.csproj">
<Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project>
<Name>Spring.Core.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Data.NHibernate33\Spring.Data.NHibernate33.2010.csproj">
<Project>{D546EFB7-9F6C-4C11-B2F8-B85FAD135399}</Project>
<Name>Spring.Data.NHibernate33.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Data\Spring.Data.2010.csproj">
<Project>{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}</Project>
<Name>Spring.Data.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Web\Spring.Web.2010.csproj">
<Project>{BA4789EB-281A-48EA-8763-28B9F0596A18}</Project>
<Name>Spring.Web.2010</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\services.xml.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\web.config.net-1.1" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\web.config.net-2.0" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Entities\SPCDetailEnt.hbm.xml" />
<EmbeddedResource Include="Entities\SPCMasterEnt.hbm.xml" />
</ItemGroup>
<ItemGroup>
<None Include="..\Spring.ConversationWA.NH32.Tests\Data\Spring\ConversationWA\WebConversationStateTest\log4net.config">
<Link>Data\Spring\ConversationWA\WebConversationStateTest\log4net.config</Link>
</None>
<None Include="app.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\Web.Config" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.0">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
<Visible>False</Visible>
<ProductName>Windows Installer 3.1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<PostBuildEvent>echo "Copying TestWebs to output directory"
rd /S /Q "$(TargetDir)Data"
xcopy "$(ProjectDir)..\Spring.ConversationWA.NH32.Tests\Data" "$(TargetDir)Data\" /y /s
xcopy "$(ProjectDir)Data" "$(TargetDir)Data\" /y /s
rd /S /Q "$(TargetDir)Data\Spring\ConversationWA\WebConversationStateTest\Bin"
</PostBuildEvent>
</PropertyGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Spring</RootNamespace>
<AssemblyName>Spring.ConversationWA.NH33.Tests</AssemblyName>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>3.5</OldToolsVersion>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<PublishUrl>http://localhost/Spring.ConversationWA.NH33.Tests/</PublishUrl>
<Install>true</Install>
<InstallFrom>Web</InstallFrom>
<UpdateEnabled>true</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>true</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.Net.2010\Spring.ConversationWA.NH33.Tests\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>
</DocumentationFile>
<StartAction>Program</StartAction>
<StartProgram>$(MSBuildProjectDirectory)\..\..\dependencies\tools\NUnit-2.6.0.12051\bin\nunit-x86.exe</StartProgram>
<StartArguments>"$(MSBuildProjectDirectory)\$(OutputPath)\$(AssemblyName).dll"</StartArguments>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Common.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=3.3.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\NHibernate33\net\3.5\NHibernate.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=2.5.7.10213, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="NUnitAspEx, Version=2.0.3482.27831, Culture=neutral">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Net\2.0\NUnitAspEx.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Spring.ConversationWA.NH32.Tests\lib\net\2.0\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\..\src\Spring\CommonAssemblyInfo.cs">
<Link>CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Bsn\ConversationEvidenceBsnImpl.cs">
<Link>Bsn\ConversationEvidenceBsnImpl.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Bsn\IConversationEvidenceBsn.cs">
<Link>Bsn\IConversationEvidenceBsn.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Bsn\INoDeferedErrorBsn.cs">
<Link>Bsn\INoDeferedErrorBsn.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Bsn\NoDeferedErrorBsnImpl.cs">
<Link>Bsn\NoDeferedErrorBsnImpl.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\ConversationWA\PatialEndConvBeginBasePage.cs">
<Link>ConversationWA\PatialEndConvBeginBasePage.cs</Link>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\ConversationWA\PatialEndConvEndBasePage.cs">
<Link>ConversationWA\PatialEndConvEndBasePage.cs</Link>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\ConversationWA\WebConversationStateTest.cs">
<Link>ConversationWA\WebConversationStateTest.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Entities\SPCDetailEnt.cs">
<Link>Entities\SPCDetailEnt.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Entities\SPCMasterEnt.cs">
<Link>Entities\SPCMasterEnt.cs</Link>
</Compile>
<Compile Include="..\Spring.ConversationWA.NH32.Tests\Spring\Data\Common\ConnectionCreationTrackingDbProvider.cs">
<Link>Spring\Data\Common\ConnectionCreationTrackingDbProvider.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\src\Spring\Spring.Aop\Spring.Aop.2010.csproj">
<Project>{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}</Project>
<Name>Spring.Aop.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.ConversationWA.NH33\Spring.ConversationWA.NH33.2010.csproj">
<Project>{CF375928-B6D5-485C-B04D-2BC41D9DBF1E}</Project>
<Name>Spring.ConversationWA.NH33.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Core\Spring.Core.2010.csproj">
<Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project>
<Name>Spring.Core.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Data.NHibernate33\Spring.Data.NHibernate33.2010.csproj">
<Project>{D546EFB7-9F6C-4C11-B2F8-B85FAD135399}</Project>
<Name>Spring.Data.NHibernate33.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Data\Spring.Data.2010.csproj">
<Project>{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}</Project>
<Name>Spring.Data.2010</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Web\Spring.Web.2010.csproj">
<Project>{BA4789EB-281A-48EA-8763-28B9F0596A18}</Project>
<Name>Spring.Web.2010</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\services.xml.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\web.config.net-1.1" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\web.config.net-2.0" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Entities\SPCDetailEnt.hbm.xml" />
<EmbeddedResource Include="Entities\SPCMasterEnt.hbm.xml" />
</ItemGroup>
<ItemGroup>
<None Include="..\Spring.ConversationWA.NH32.Tests\Data\Spring\ConversationWA\WebConversationStateTest\log4net.config">
<Link>Data\Spring\ConversationWA\WebConversationStateTest\log4net.config</Link>
</None>
<None Include="app.config" />
<None Include="Data\Spring\ConversationWA\WebConversationStateTest\Web.Config" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.0">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
<Visible>False</Visible>
<ProductName>Windows Installer 3.1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<PostBuildEvent>echo "Copying TestWebs to output directory"
rd /S /Q "$(TargetDir)Data"
xcopy "$(ProjectDir)..\Spring.ConversationWA.NH32.Tests\Data" "$(TargetDir)Data\" /y /s
xcopy "$(ProjectDir)Data" "$(TargetDir)Data\" /y /s
rd /S /Q "$(TargetDir)Data\Spring\ConversationWA\WebConversationStateTest\Bin"
</PostBuildEvent>
</PropertyGroup>
</Project>

Some files were not shown because too many files have changed in this diff Show More