Changes to compile under mono 2.0 beta. Thanks James Fitzsimons.

This commit is contained in:
markpollack
2008-07-22 20:49:43 +00:00
parent 74cc8c7223
commit 51f97b6657
37 changed files with 280 additions and 442 deletions

View File

@@ -29,9 +29,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
ProjectSection(SolutionItems) = preProject
Spring.build = Spring.build
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Services.2005", "src\Spring\Spring.Services\Spring.Services.2005.csproj", "{B58E34CF-6E70-481D-AC87-1BC2D13C21FB}"
ProjectSection(WebsiteProperties) = preProject
@@ -147,6 +144,18 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Data.NHibernate20.20
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Messaging.2005", "src\Spring\Spring.Messaging\Spring.Messaging.2005.csproj", "{0E23AE41-D8D8-41C2-84A2-D35564049F0D}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Messaging.Tests.2005", "test\Spring\Spring.Messaging.Tests\Spring.Messaging.Tests.2005.csproj", "{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|.NET = Debug|.NET
@@ -418,6 +427,26 @@ Global
{71368632-B8B7-4A6A-8C65-8DA848120C82}.Release|Any CPU.Build.0 = Release|Any CPU
{71368632-B8B7-4A6A-8C65-8DA848120C82}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{71368632-B8B7-4A6A-8C65-8DA848120C82}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Debug|.NET.ActiveCfg = Debug|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Release|.NET.ActiveCfg = Release|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Release|Any CPU.Build.0 = Release|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Debug|.NET.ActiveCfg = Debug|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Debug|Any CPU.Build.0 = Debug|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Release|.NET.ActiveCfg = Release|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Release|Any CPU.ActiveCfg = Release|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Release|Any CPU.Build.0 = Release|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Release|Mixed Platforms.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@@ -201,8 +201,7 @@
<!-- Ignore Compact Framework 1.0 for now -->
<!-- call target="compile-build-netcf-1.0"/ -->
<!-- Ignore Mono 2.0 for now -->
<!-- call target="compile-build-mono-2.0"/-->
<call target="compile-build-mono-2.0"/>
</target>
@@ -301,11 +300,11 @@
<nant buildfile="src/Spring/Spring.Core/Spring.Core.build" target="build"/>
<nant buildfile="src/Spring/Spring.Aop/Spring.Aop.build" target="build" if="${build-aop}"/>
<nant buildfile="src/Spring/Spring.Web/Spring.Web.build" target="build" if="${build-web}"/>
<nant buildfile="src/Spring/Spring.Web.Extensions/Spring.Web.Extensions.build" target="build" if="${build-web and (nant.settings.currentframework == 'net-2.0')}"/>
<nant buildfile="src/Spring/Spring.Web.Extensions/Spring.Web.Extensions.build" target="build" if="${build-web and (nant.settings.currentframework == 'net-2.0' or nant.settings.currentframework == 'mono-2.0')}"/>
<nant buildfile="src/Spring/Spring.Data/Spring.Data.build" target="build" if="${build-data}"/>
<nant buildfile="src/Spring/Spring.Data.NHibernate/Spring.Data.NHibernate.build" target="build" if="${build-data and (nant.settings.currentframework == 'net-1.1' or nant.settings.currentframework == 'net-2.0')}"/>
<nant buildfile="src/Spring/Spring.Data.NHibernate12/Spring.Data.NHibernate12.build" target="build" if="${build-data and (nant.settings.currentframework == 'net-1.1' or nant.settings.currentframework == 'net-2.0')}"/>
<nant buildfile="src/Spring/Spring.Data.NHibernate20/Spring.Data.NHibernate20.build" target="build" if="${build-data and (nant.settings.currentframework == 'net-2.0')}"/>
<nant buildfile="src/Spring/Spring.Data.NHibernate/Spring.Data.NHibernate.build" target="build" if="${build-data and (nant.settings.currentframework == 'net-1.1' or nant.settings.currentframework == 'net-2.0' or nant.settings.currentframework == 'mono-2.0')}"/>
<nant buildfile="src/Spring/Spring.Data.NHibernate12/Spring.Data.NHibernate12.build" target="build" if="${build-data and (nant.settings.currentframework == 'net-1.1' or nant.settings.currentframework == 'net-2.0' or nant.settings.currentframework == 'mono-2.0')}"/>
<nant buildfile="src/Spring/Spring.Data.NHibernate20/Spring.Data.NHibernate20.build" target="build" if="${build-data and (nant.settings.currentframework == 'net-2.0' or nant.settings.currentframework == 'mono-2.0')}"/>
<nant buildfile="src/Spring/Spring.Services/Spring.Services.build" target="build" if="${build-services}"/>
<nant buildfile="src/Spring/Spring.Testing.NUnit/Spring.Testing.NUnit.build" target="build" if="${build-testing}"/>
<nant buildfile="src/Spring/Spring.Messaging.Nms/Spring.Messaging.Nms.build" target="build" if="${build-nms}"/>
@@ -669,7 +668,7 @@
<call target="${nant.target.root.name}-2.0" />
<!-- ignore Mono 2.0 for now -->
<!-- call target="${nant.target.root.name}-mono-2.0" / -->
<!-- <call target="${nant.target.root.name}-mono-2.0" /> -->
</target>

View File

@@ -203,7 +203,12 @@
<target name="common.set-assembly-attribute-values" depends="generate-build-number">
<property name="assembly.is-cls-compliant" value="false" />
<property name="assembly.configuration" value="${nant.settings.currentframework}.win32; ${current.build.config}"/>
<property name="assembly.product" value="${project.name.full} ${package.version} for .NET ${nant.settings.currentframework.number}" />
<if test="${nant.settings.currentframework!='mono-2.0'}">
<property name="assembly.product" value="${project.name.full} ${package.version} for .NET ${nant.settings.currentframework.number}" />-->
</if>
<if test="${nant.settings.currentframework=='mono-2.0'}">
<property name="assembly.product" value="${project.name.full} ${package.version} for .NET ${nant.settings.currentframework.number} (MONO)" />
</if>
<property name="assembly.company" value="${project.company}" />
<property name="assembly.copyright" value="${project.copyright}" />
<property name="assembly.trademark" value="Apache License, Version 2.0" />
@@ -386,18 +391,20 @@
<target name="set-mono-2.0-runtime-configuration"
depends="check-bin-dir, check-sdkdoc-dir, check-sdkdoc-debug, check-current-build-config, check-build-debug, check-build-defines">
<property name="nant.settings.currentframework" value="mono-2.0"/>
<property name="nant.settings.currentframework.number" value="2.0"/>
<property name="current.build.debug" value="${build.debug}" dynamic="true"/>
<property name="current.build.defines.csc" value="${build.defines.csc},MONO,MONO_2_0" dynamic="true"/>
<property name="current.build.defines.jsc" value="${build.defines.jsc},MONO,MONO_2_0" dynamic="true"/>
<property name="current.build.defines.vbc" value="${build.defines.vbc},MONO=True,MONO_2_0=True" dynamic="true"/>
<property name="current.build.defines.vjc" value="${build.defines.vjc},MONO,MONO_2_0" dynamic="true"/>
<property name="current.build.defines.cl" value="${build.defines.cl} /D MONO /D MONO_2_0" dynamic="true"/>
<property name="current.build.defines.csc" value="${build.defines.csc},MONO,NET_2_0,MONO_2_0" dynamic="true"/>
<property name="current.build.defines.jsc" value="${build.defines.jsc},MONO,NET_2_0,MONO_2_0" dynamic="true"/>
<property name="current.build.defines.vbc" value="${build.defines.vbc},MONO=True,NET_2_0,MONO_2_0=True" dynamic="true"/>
<property name="current.build.defines.vjc" value="${build.defines.vjc},MONO,NET_2_0,MONO_2_0" dynamic="true"/>
<property name="current.build.defines.cl" value="${build.defines.cl} /D MONO /D MONO_2_0 /D NET_2_0" dynamic="true"/>
<property name="current.bin.dir"
value="${bin.dir}/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}"/>
<property name="current.sdkdoc.dir"
value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}"/>
<property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true"/>
<property name="link.sdkdoc.version" value="MsdnOnline"/>
<property name="nowarn.numbers" value="${nowarn.numbers},0169,0414,0219"/>
<property name="nowarn.numbers.test" value="${nowarn.numbers.test.default},0414"/>
</target>
<target name="set-sscli-1.0-runtime-configuration"

View File

@@ -2,14 +2,14 @@
<project name="Spring.AopQuickStart" default="build" xmlns="http://nant.sf.net/schemas/nant.xsd">
<target name="build">
<nant buildfile="src\Spring.AopQuickStart.Common\Spring.AopQuickStart.Common.build" target="build" />
<nant buildfile="src\Spring.AopQuickStart.Step1\Spring.AopQuickStart.Step1.build" target="build"/>
<nant buildfile="src\Spring.AopQuickStart.Step2\Spring.AopQuickStart.Step2.build" target="build" />
<nant buildfile="src\Spring.AopQuickStart.Step3\Spring.AopQuickStart.Step3.build" target="build" />
<nant buildfile="src\Spring.AopQuickStart.Step4\Spring.AopQuickStart.Step4.build" target="build" />
<nant buildfile="src\Spring.AopQuickStart.Step5\Spring.AopQuickStart.Step5.build" target="build" />
<nant buildfile="src\Spring.AopQuickStart.Step6\Spring.AopQuickStart.Step6.build" target="build" />
<nant buildfile="src\Spring.AopQuickStart.Step7\Spring.AopQuickStart.Step7.build" target="build" />
<nant buildfile="src/Spring.AopQuickStart.Common/Spring.AopQuickStart.Common.build" target="build" />
<nant buildfile="src/Spring.AopQuickStart.Step1/Spring.AopQuickStart.Step1.build" target="build"/>
<nant buildfile="src/Spring.AopQuickStart.Step2/Spring.AopQuickStart.Step2.build" target="build" />
<nant buildfile="src/Spring.AopQuickStart.Step3/Spring.AopQuickStart.Step3.build" target="build" />
<nant buildfile="src/Spring.AopQuickStart.Step4/Spring.AopQuickStart.Step4.build" target="build" />
<nant buildfile="src/Spring.AopQuickStart.Step5/Spring.AopQuickStart.Step5.build" target="build" />
<nant buildfile="src/Spring.AopQuickStart.Step6/Spring.AopQuickStart.Step6.build" target="build" />
<nant buildfile="src/Spring.AopQuickStart.Step7/Spring.AopQuickStart.Step7.build" target="build" />
</target>
</project>
</project>

View File

@@ -2,12 +2,12 @@
<project name="Spring.Calculator" default="build" xmlns="http://nant.sf.net/schemas/nant.xsd">
<target name="build">
<nant buildfile="src\Spring.Aspects\Spring.Aspects.build" target="build" />
<nant buildfile="src\Spring.Calculator.Contract\Spring.Calculator.Contract.build" target="build"/>
<nant buildfile="src\Spring.Calculator.Services\Spring.Calculator.Services.build" target="build" />
<nant buildfile="src\Spring.Calculator.RemoteApp\Spring.Calculator.RemoteApp.build" target="build" />
<nant buildfile="src\Spring.Calculator.RegisterComponentServices\Spring.Calculator.RegisterComponentServices.build" target="build" />
<nant buildfile="src\Spring.Calculator.ClientApp\Spring.Calculator.ClientApp.build" target="build"/>
<nant buildfile="src/Spring.Aspects/Spring.Aspects.build" target="build" />
<nant buildfile="src/Spring.Calculator.Contract/Spring.Calculator.Contract.build" target="build"/>
<nant buildfile="src/Spring.Calculator.Services/Spring.Calculator.Services.build" target="build" />
<nant buildfile="src/Spring.Calculator.RemoteApp/Spring.Calculator.RemoteApp.build" target="build" />
<nant buildfile="src/Spring.Calculator.RegisterComponentServices/Spring.Calculator.RegisterComponentServices.build" target="build" />
<nant buildfile="src/Spring.Calculator.ClientApp/Spring.Calculator.ClientApp.build" target="build"/>
</target>
</project>
</project>

View File

@@ -2,14 +2,14 @@
<project name="Spring.Examples" default="build" xmlns="http://nant.sf.net/schemas/nant.xsd">
<target name="build">
<nant buildfile=".\Spring.IocQuickStart.MovieFinder\Spring.IocQuickStart.MovieFinder.build" target="build" />
<nant buildfile=".\Spring.IocQuickStart.AppContext\Spring.IocQuickStart.AppContext.build" target="build" />
<nant buildfile=".\Spring.IocQuickStart.EventRegistry\Spring.IocQuickStart.EventRegistry.build" target="build" />
<nant buildfile=".\Spring.AopQuickStart\Spring.AopQuickStart.build" target="build" />
<nant buildfile=".\Spring.Calculator\Spring.Calculator.build" target="build" />
<nant buildfile="./Spring.IoCQuickStart.MovieFinder/Spring.IocQuickStart.MovieFinder.build" target="build" />
<nant buildfile="./Spring.IoCQuickStart.AppContext/Spring.IocQuickStart.AppContext.build" target="build" />
<nant buildfile="./Spring.IoCQuickStart.EventRegistry/Spring.IocQuickStart.EventRegistry.build" target="build" />
<nant buildfile="./Spring.AopQuickStart/Spring.AopQuickStart.build" target="build" />
<nant buildfile="./Spring.Calculator/Spring.Calculator.build" target="build" />
<nant buildfile=".\SpringAir\SpringAir.build" target="test" if="${build-web}"/>
<nant buildfile="./SpringAir/SpringAir.build" target="test" if="${build-web}"/>
</target>
@@ -17,3 +17,4 @@
</project>

View File

@@ -25,10 +25,11 @@
<references basedir="${current.bin.dir}">
<include name="System.Drawing.dll" />
<include name="Spring.Core.dll" />
<include name="System.Windows.Forms.dll" />
</references>
</csc>
<copy tofile="${current.bin.dir}/${project::get-name()}.exe.config"
file="src/App.config" overwrite="true">
</copy>
</target>
</project>
</project>

View File

@@ -2,29 +2,29 @@
<project name="SpringAir" default="build" xmlns="http://nant.sf.net/schemas/nant.xsd">
<target name="test">
<nant buildfile="src\SpringAir.Core\SpringAir.Core.build" target="build" />
<nant buildfile="test\SpringAir.Core.Tests\SpringAir.Core.Tests.build" target="test" />
<nant buildfile="src/SpringAir.Core/SpringAir.Core.build" target="build" />
<nant buildfile="test/SpringAir.Core.Tests/SpringAir.Core.Tests.build" target="test" />
<!--
<nant buildfile="src\SpringAir.Data.Ado\SpringAir.Data.Ado.build" target="build" />
<nant buildfile="src/SpringAir.Data.Ado/SpringAir.Data.Ado.build" target="build" />
-->
<nant buildfile="src\SpringAir.Web.2003\SpringAir.Web.build" target="build" if="${ 'net-1.1' == '${framework::get-family(framework::get-target-framework())}-${framework::get-version(framework::get-target-framework())}' }" />
<nant buildfile="src\SpringAir.Web.2005\SpringAir.Web.build" target="build" if="${ 'net-2.0' == '${framework::get-family(framework::get-target-framework())}-${framework::get-version(framework::get-target-framework())}' }" />
<nant buildfile="src/SpringAir.Web.2003/SpringAir.Web.build" target="build" if="${ 'net-1.1' == '${framework::get-family(framework::get-target-framework())}-${framework::get-version(framework::get-target-framework())}' }" />
<nant buildfile="src/SpringAir.Web.2005/SpringAir.Web.build" target="build" if="${ 'net-2.0' == '${framework::get-family(framework::get-target-framework())}-${framework::get-version(framework::get-target-framework())}' }" />
</target>
<target name="clean-obj">
<delete dir="src\SpringAir.Data.Ado\obj" failonerror="false"/>
<delete dir="src\SpringAir.Data.Ado\bin" failonerror="false"/>
<delete dir="src\SpringAir.Core\obj" failonerror="false"/>
<delete dir="src\SpringAir.Core\bin" failonerror="false"/>
<delete dir="test\SpringAir.Core.Tests\obj" failonerror="false"/>
<delete dir="test\SpringAir.Core.Tests\bin" failonerror="false"/>
<delete dir="test\SpringAir.Data.Ado.Tests\obj" failonerror="false"/>
<delete dir="test\SpringAir.Data.Ado.Tests\bin" failonerror="false"/>
<delete dir="src/SpringAir.Data.Ado/obj" failonerror="false"/>
<delete dir="src/SpringAir.Data.Ado/bin" failonerror="false"/>
<delete dir="src/SpringAir.Core/obj" failonerror="false"/>
<delete dir="src/SpringAir.Core/bin" failonerror="false"/>
<delete dir="test/SpringAir.Core.Tests/obj" failonerror="false"/>
<delete dir="test/SpringAir.Core.Tests/bin" failonerror="false"/>
<delete dir="test/SpringAir.Data.Ado.Tests/obj" failonerror="false"/>
<delete dir="test/SpringAir.Data.Ado.Tests/bin" failonerror="false"/>
</target>
<target name="sqlcreate">
<exec program="isql" commandline="-U ${sql.username}
-P ${sql.password} -i ${sql.load_file}"/>
</target>
</project>
</project>

View File

@@ -22,12 +22,24 @@
</csc>
</target>
<target name="test" depends="build">
<nunit2outproc>
<if test="${nant.settings.currentframework!='mono-2.0'}">
<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="${project::get-name()}.dll.config" />
</nunit2outproc>
</if>
<if test="${nant.settings.currentframework=='mono-2.0'}">
<nunit2>
<formatter type="Plain" />
<formatter type="Xml" usefile="true" extension=".xml"
outputdir="${current.bin.dir}/results" />
outputdir="${current.bin.dir}/results" />
<test assemblyname="${current.bin.dir}/${project::get-name()}.dll"
appconfig="${project::get-name()}.dll.config" />
</nunit2outproc>
appconfig="${current.bin.dir}/${project::get-name()}.dll.config" />
</nunit2>
</if>
</target>
</project>

View File

@@ -113,7 +113,11 @@ namespace Spring.Core.TypeResolution
private static Type LoadTypeDirectlyFromAssembly(TypeAssemblyHolder typeInfo)
{
Type type = null;
Assembly assembly = Assembly.LoadWithPartialName(typeInfo.AssemblyName);
#if MONO_2_0
Assembly assembly = Assembly.Load(typeInfo.AssemblyName);
#else
Assembly assembly = Assembly.LoadWithPartialName(typeInfo.AssemblyName);
#endif
if (assembly != null)
{
type = assembly.GetType(typeInfo.TypeName, true, true);

View File

@@ -20,7 +20,7 @@
using System;
using System.Runtime.Serialization;
#if NET_2_0 && !MONO
#if NET_2_0 && !MONO_2_0
using Microsoft.VisualBasic;
using Microsoft.VisualBasic.CompilerServices;
#endif
@@ -59,7 +59,7 @@ namespace Spring.Expressions
/// </returns>
protected override object Get(object context, EvaluationContext evalContext)
{
#if NET_2_0 && !MONO
#if NET_2_0 && !MONO_2_0
string text = Left.GetValueInternal( context, evalContext ) as string;
string pattern = Right.GetValueInternal( context, evalContext ) as string;
@@ -69,4 +69,4 @@ namespace Spring.Expressions
#endif
}
}
}
}

View File

@@ -1,4 +1,4 @@
// $ANTLR 2.7.6 (2005-12-22): "Expression.g" -> "ExpressionLexer.cs"$
// $ANTLR 2.7.6 (2005-12-22): "Expressions/Expression.g" -> "ExpressionLexer.cs"$
namespace Spring.Expressions
{
@@ -123,18 +123,18 @@ namespace Spring.Expressions
caseSensitiveLiterals = true;
setCaseSensitive(true);
literals = new Hashtable(100, (float) 0.4, null, Comparer.Default);
literals.Add("false", 6);
literals.Add("true", 7);
literals.Add("and", 8);
literals.Add("matches", 14);
literals.Add("in", 10);
literals.Add("null", 15);
literals.Add("between", 12);
literals.Add("matches", 14);
literals.Add("or", 9);
literals.Add("between", 12);
literals.Add("is", 11);
literals.Add("like", 13);
literals.Add("new", 46);
literals.Add("date", 52);
literals.Add("false", 6);
}
override public IToken nextToken() //throws TokenStreamException

View File

@@ -1,4 +1,4 @@
// $ANTLR 2.7.6 (2005-12-22): "Expression.g" -> "ExpressionParser.cs"$
// $ANTLR 2.7.6 (2005-12-22): "Expressions/Expression.g" -> "ExpressionParser.cs"$
namespace Spring.Expressions
{

View File

@@ -1,4 +1,4 @@
// $ANTLR 2.7.6 (2005-12-22): "Expression.g" -> "ExpressionLexer.cs"$
// $ANTLR 2.7.6 (2005-12-22): "Expressions/Expression.g" -> "ExpressionLexer.cs"$
namespace Spring.Expressions
{

View File

@@ -1,4 +1,4 @@
// $ANTLR 2.7.6 (2005-12-22): Expression.g -> ExpressionParserTokenTypes.txt$
// $ANTLR 2.7.6 (2005-12-22): Expressions/Expression.g -> ExpressionParserTokenTypes.txt$
ExpressionParser // output token vocab name
EXPR=4
OPERAND=5

View File

@@ -30,13 +30,13 @@ namespace Spring.Objects.Factory
/// The root interface for accessing a Spring.NET IoC container.
/// </summary>
/// <remarks>
/// <p>
/// <para>
/// This is the basic client view of a Spring.NET IoC container; further interfaces
/// such as <see cref="Spring.Objects.Factory.IListableObjectFactory"/> and
/// <see cref="Spring.Objects.Factory.Config.IConfigurableObjectFactory"/>
/// are available for specific purposes such as enumeration and configuration.
/// </p>
/// <p>
/// </para>
/// <para>
/// This is the root interface to be implemented by objects that can hold a number
/// of object definitions, each uniquely identified by a <see cref="System.String"/>
/// name. An independent instance of any of these objects can be obtained
@@ -45,15 +45,15 @@ namespace Spring.Objects.Factory
/// singleton in the scope of the factory). Which type of instance
/// will be returned depends on the object factory configuration - the API is the same.
/// The Singleton approach is more useful and hence more common in practice.
/// </p>
/// <p>
/// </para>
/// <para>
/// The point of this approach is that the IObjectFactory is a central registry of
/// application components, and centralizes the configuring of application components
/// (no more do individual objects need to read properties files, for example).
/// See chapters 4 and 11 of "Expert One-on-One J2EE Design and Development" for a
/// discussion of the benefits of this approach.
/// </p>
/// <p>
/// </para>
/// <para>
/// Normally an IObjectFactory will load object definitions stored in a configuration
/// source (such as an XML document), and use the <see cref="Spring.Objects"/>
/// namespace to configure the objects. However, an implementation could simply return
@@ -61,8 +61,8 @@ namespace Spring.Objects.Factory
/// constraints on how the definitions could be stored: LDAP, RDBMS, XML, properties
/// file etc. Implementations are encouraged to support references amongst objects,
/// to either Singletons or Prototypes.
/// </p>
/// <p>
/// </para>
/// <para>
/// In contrast to the methods in
/// <see cref="Spring.Objects.Factory.IListableObjectFactory"/>, all of the methods
/// in this interface will also check parent factories if this is an
@@ -70,13 +70,13 @@ namespace Spring.Objects.Factory
/// not found in this factory instance, the immediate parent is asked. Objects in
/// this factory instance are supposed to override objects of the same name in any
/// parent factory.
/// </p>
/// <p>
/// </para>
/// <para>
/// Object factories are supposed to support the standard object lifecycle interfaces
/// as far as possible. The maximum set of initialization methods and their standard
/// order is:
/// </p>
/// <p>
/// </para>
/// <para>
/// <list type="bullet">
/// <item>
/// <description>
@@ -124,12 +124,12 @@ namespace Spring.Objects.Factory
/// </description>
/// </item>
/// </list>
/// </p>
/// </para>
/// <p/>
/// <p>
/// <para>
/// On shutdown of an object factory, the following lifecycle methods apply:
/// </p>
/// <p>
/// </para>
/// <para>
/// <list type="bullet">
/// <item>
/// <description>
@@ -143,7 +143,7 @@ namespace Spring.Objects.Factory
/// </description>
/// </item>
/// </list>
/// </p>
/// </para>
/// </remarks>
/// <author>Rod Johnson</author>
/// <author>Juergen Hoeller</author>
@@ -154,14 +154,14 @@ namespace Spring.Objects.Factory
/// Is this object a singleton?
/// </summary>
/// <remarks>
/// <p>
/// <para>
/// That is, will <see cref="Spring.Objects.Factory.IObjectFactory.GetObject(string)"/>
/// always return the same object?
/// </p>
/// <p>
/// </para>
/// <para>
/// Will ask the parent factory if the object cannot be found in this factory
/// instance.
/// </p>
/// </para>
/// </remarks>
/// <param name="name">The name of the object to query.</param>
/// <returns>True if the named object is a singleton.</returns>
@@ -195,10 +195,10 @@ namespace Spring.Objects.Factory
/// Does this object factory contain an object with the given name?
/// </summary>
/// <remarks>
/// <p>
/// <para>
/// Will ask the parent factory if the object cannot be found in this factory
/// instance.
/// </p>
/// </para>
/// </remarks>
/// <param name="name">The name of the object to query.</param>
/// <returns>True if an object with the given name is defined.</returns>
@@ -208,10 +208,10 @@ namespace Spring.Objects.Factory
/// Return the aliases for the given object name, if defined.
/// </summary>
/// <remarks>
/// <p>
/// <para>
/// Will ask the parent factory if the object cannot be found in this factory
/// instance.
/// </p>
/// </para>
/// </remarks>
/// <param name="name">The object name to check for aliases.</param>
/// <returns>The aliases, or an empty array if none.</returns>
@@ -220,27 +220,28 @@ namespace Spring.Objects.Factory
/// </exception>
string[] GetAliases(string name);
#if !MONO
/// <summary>
/// Return an instance (possibly shared or independent) of the given object name.
/// </summary>
/// <remarks>
/// <p>
/// <para>
/// This method allows an object factory to be used as a replacement for the
/// Singleton or Prototype design pattern.
/// </p>
/// <p>
/// </para>
/// <para>
/// Note that callers should retain references to returned objects. There is no
/// guarantee that this method will be implemented to be efficient. For example,
/// it may be synchronized, or may need to run an RDBMS query.
/// </p>
/// <p>
/// </para>
/// <para>
/// Will ask the parent factory if the object cannot be found in this factory
/// instance.
/// </p>
/// <p>
/// </para>
/// <para>
/// This is the indexer for the <see cref="Spring.Objects.Factory.IObjectFactory"/>
/// interface.
/// </p>
/// </para>
/// </remarks>
/// <param name="name">The name of the object to return.</param>
/// <returns>The instance of the object.</returns>
@@ -250,25 +251,26 @@ namespace Spring.Objects.Factory
/// <exception cref="Spring.Objects.ObjectsException">
/// If the object could not be created.
/// </exception>
object this[string name] { get; }
#endif
object this[string name] { get; }
/// <summary>
/// Return an instance (possibly shared or independent) of the given object name.
/// </summary>
/// <remarks>
/// <p>
/// <para>
/// This method allows an object factory to be used as a replacement for the
/// Singleton or Prototype design pattern.
/// </p>
/// <p>
/// </para>
/// <para>
/// Note that callers should retain references to returned objects. There is no
/// guarantee that this method will be implemented to be efficient. For example,
/// it may be synchronized, or may need to run an RDBMS query.
/// </p>
/// <p>
/// </para>
/// <para>
/// Will ask the parent factory if the object cannot be found in this factory
/// instance.
/// </p>
/// </para>
/// </remarks>
/// <param name="name">The name of the object to return.</param>
/// <returns>The instance of the object.</returns>
@@ -284,19 +286,19 @@ namespace Spring.Objects.Factory
/// Return an instance (possibly shared or independent) of the given object name.
/// </summary>
/// <remarks>
/// <p>
/// <para>
/// This method allows an object factory to be used as a replacement for the
/// Singleton or Prototype design pattern.
/// </p>
/// <p>
/// </para>
/// <para>
/// Note that callers should retain references to returned objects. There is no
/// guarantee that this method will be implemented to be efficient. For example,
/// it may be synchronized, or may need to run an RDBMS query.
/// </p>
/// <p>
/// </para>
/// <para>
/// Will ask the parent factory if the object cannot be found in this factory
/// instance.
/// </p>
/// </para>
/// </remarks>
/// <param name="name">The name of the object to return.</param>
/// <param name="arguments">
@@ -353,23 +355,23 @@ namespace Spring.Objects.Factory
/// Return an instance (possibly shared or independent) of the given object name.
/// </summary>
/// <remarks>
/// <p>
/// <para>
/// Provides a measure of type safety by throwing an exception if the object is
/// not of the required <see cref="System.Type"/>.
/// </p>
/// <p>
/// </para>
/// <para>
/// This method allows an object factory to be used as a replacement for the
/// Singleton or Prototype design pattern.
/// </p>
/// <p>
/// </para>
/// <para>
/// Note that callers should retain references to returned objects. There is no
/// guarantee that this method will be implemented to be efficient. For example,
/// it may be synchronized, or may need to run an RDBMS query.
/// </p>
/// <p>
/// </para>
/// <para>
/// Will ask the parent factory if the object cannot be found in this factory
/// instance.
/// </p>
/// </para>
/// </remarks>
/// <param name="name">The name of the object to return.</param>
/// <param name="requiredType">
@@ -394,12 +396,12 @@ namespace Spring.Objects.Factory
/// Determine the type of the object with the given name.
/// </summary>
/// <remarks>
/// <p>
/// <para>
/// More specifically, checks the type of object that
/// <see cref="Spring.Objects.Factory.IObjectFactory.GetObject(string)"/> would return.
/// For an <see cref="Spring.Objects.Factory.IFactoryObject"/>, returns the type
/// of object that the <see cref="Spring.Objects.Factory.IFactoryObject"/> creates.
/// </p>
/// </para>
/// </remarks>
/// <param name="name">The name of the object to query.</param>
/// <returns>
@@ -432,14 +434,14 @@ namespace Spring.Objects.Factory
/// using the named object definition.
/// </summary>
/// <remarks>
/// <p>
/// <para>
/// In addition to being generally useful, typically this method is used to provide
/// dependency injection functionality for objects that are instantiated outwith the
/// control of a developer. A case in point is the way that the current (1.1)
/// ASP.NET classes instantiate web controls... the instantiation takes place within
/// a private method of a compiled page, and thus cannot be hooked into the
/// typical Spring.NET IOC container lifecycle for dependency injection.
/// </p>
/// </para>
/// </remarks>
/// <example>
/// The following code snippet assumes that the instantiated factory instance

View File

@@ -208,18 +208,9 @@ namespace Spring.Objects.Factory.Xml
{
try
{
XmlReader reader = null;
if (SystemUtils.MonoRuntime)
{
reader = XmlUtils.CreateReader(stream);
}
else
{
reader =
XmlReader reader =
XmlUtils.CreateValidatingReader(stream, Resolver, NamespaceParserRegistry.GetSchemas(),
new ValidationEventHandler(HandleValidation));
}
new ValidationEventHandler(HandleValidation));
#region Instrumentation
@@ -325,4 +316,4 @@ namespace Spring.Objects.Factory.Xml
#endregion
}
}
}

View File

@@ -20,7 +20,7 @@
<warning number="219" />
<warning number="162" />
<warning number="618" /> <!-- disable deprecation warnings (due to deprecated code generated by antlr ) -->
<!-- warning number="1591" / -->
<warning number="${nowarn.numbers},0612,1570" if="${nant.settings.currentframework=='mono-2.0'}"/>
</nowarn>
<sources failonempty="true">
<include name="**/*.cs" />
@@ -29,18 +29,20 @@
<exclude name="Expressions/Parser/ExpressionParserTokenTypes.cs" />
</sources>
<resources basedir="." prefix="Spring.Objects.Factory.Xml">
<include name="Objects\Factory\Xml\spring-objects-1.1.xsd" />
<include name="Objects/Factory/Xml/spring-objects-1.1.xsd" />
</resources>
<resources basedir="." prefix="Spring.Objects.Factory.Xml">
<include name="Objects\Factory\Xml\spring-tool-1.1.xsd" />
<include name="Objects/Factory/Xml/spring-tool-1.1.xsd" />
</resources>
<resources basedir="." prefix="Spring.Validation.Config">
<include name="Validation\Config\spring-validation-1.1.xsd" />
<include name="Validation/Config/spring-validation-1.1.xsd" />
</resources>
<references basedir="${current.bin.dir}">
<include name="Common.Logging.dll"/>
<include name="antlr.runtime.dll" />
<include name="System.Drawing.dll"/>
<include name="System.Configuration.dll"/>
<include name="System.Xml.dll"/>
<include name="Microsoft.VisualBasic.dll"/>
</references>
</csc>
@@ -55,7 +57,7 @@
failonerror="true"/>
</if>
<if test="${framework::exists('mono-1.0')}">
<exec program="java.exe" commandline="-cp ${spring.basedir}\build-support\tools\antlr-2.7.6\antlr.jar antlr.Tool -o Expressions\Parser Expressions\Expression.g" failonerror="true"/>
<exec program="java" commandline="-cp ${spring.basedir}/build-support/tools/antlr-2.7.6/antlr.jar antlr.Tool -o Expressions/Parser Expressions/Expression.g" failonerror="true"/>
</if>
<!--
ANTLR 2.7.6 win executable has missing dependency, so we have to use JAR file

View File

@@ -105,7 +105,7 @@ namespace Spring.Util
public static XmlReader CreateValidatingReader(Stream stream, XmlResolver xmlResolver, XmlSchemaSet schemas, ValidationEventHandler eventHandler)
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.XmlResolver = xmlResolver;
settings.Schemas.XmlResolver = xmlResolver;
settings.Schemas.Add(schemas);
settings.ValidationType = ValidationType.Schema;
if (eventHandler != null)

View File

@@ -17,6 +17,7 @@
<arg line="${compiler.args}"/>
<nowarn>
<warning number="0169" />
<warning number="0219,0414" if="${nant.settings.currentframework=='mono-2.0'}"/>
</nowarn>
<sources failonempty="true">
<include name="**/*.cs" />
@@ -27,6 +28,7 @@
<include name="${nh.lib.dir}"/>
</lib>
<include name="System.Data.dll" />
<include name="System.Web.dll" />
<include name="System.EnterpriseServices.dll" />
<include name="NHibernate.dll" />
<include name="*.dll" />

View File

@@ -17,6 +17,7 @@
<arg line="${compiler.args}"/>
<nowarn>
<warning number="${nowarn.numbers.test},0169" />
<warning number=",0219,0414" if="${nant.settings.currentframework=='mono-2.0'}"/>
</nowarn>
<sources failonempty="true">
<include name="**/*.cs" />
@@ -35,6 +36,7 @@
<include name="${nh12.lib.dir}"/>
</lib>
<include name="System.Data.dll" />
<include name="System.Web.dll" />
<include name="System.EnterpriseServices.dll" />
<include name="NHibernate.dll" />
<include name="*.dll" />

View File

@@ -19,6 +19,7 @@
<arg line="${compiler.args}"/>
<nowarn>
<warning number="${nowarn.numbers.test},0169" />
<warning number="0219" if="${nant.settings.currentframework=='mono-2.0'}"/>
</nowarn>
<sources failonempty="true">
<include name="**/*.cs" />
@@ -40,6 +41,7 @@
<references basedir="${current.bin.dir}">
<include name="${nh20.lib.dir}/NHibernate.dll"/>
<include name="System.Data.dll" />
<include name="System.Web.dll" />
<include name="System.EnterpriseServices.dll" />
<include name="*NHibernate.dll" />
<include name="*.dll" />

View File

@@ -16,19 +16,20 @@
<arg line="${compiler.args}"/>
<nowarn>
<warning number="1591,0169,0168" />
<warning number="0414,1584" if="${nant.settings.currentframework=='mono-2.0'}"/>
</nowarn>
<sources failonempty="true">
<include name="**/*.cs" />
<include name="../GenCommonAssemblyInfo.cs" />
</sources>
<resources basedir="." prefix="Spring.Data.Common" failonempty="true">
<include name="Data\Common\dbproviders.xml" />
<include name="Data/Common/dbproviders.xml" />
</resources>
<resources basedir="." prefix="Spring.Data.Config" failonempty="true">
<include name="Data\Config\spring-database-1.1.xsd" />
<include name="Data/Config/spring-database-1.1.xsd" />
</resources>
<resources basedir="." prefix="Spring.Transaction.Config" failonempty="true">
<include name="Transaction\Config\spring-tx-1.1.xsd" />
<include name="Transaction/Config/spring-tx-1.1.xsd" />
</resources>
<resources basedir="Resources">
<include name="**/*" />
@@ -36,6 +37,7 @@
<references basedir="${current.bin.dir}">
<include name="System.Data.dll" />
<include name="System.EnterpriseServices.dll" />
<include name="System.Transactions.dll" />
<include name="Common.Logging.dll"/>
<include name="Spring.Core.dll" />
<include name="Spring.Aop.dll" />

View File

@@ -9,10 +9,8 @@ using Apache.NMS;
namespace Spring.Messaging.Nms.Listener
{
public abstract class AbstractMessageListenerContainer : NmsDestinationAccessor, ILifecycle, IDisposable
public abstract class AbstractMessageListenerContainer : AbstractNmsListeningContainer
{
private String clientId;
private object destination;
private String messageSelector;
@@ -27,40 +25,13 @@ namespace Spring.Messaging.Nms.Listener
private bool exposeListenerISession = true;
private bool autoStartup = true;
private IConnection sharedConnection;
private volatile bool active = false;
private bool running = false;
private IList pausedTasks = new Spring.Collections.LinkedList();
private object lifecycleMonitor = new object();
private object sharedConnectionMonitor = new object();
#region Properties
/// <summary> Set whether to automatically start the listener after initialization.
/// <p>Default is "true"; set this to "false" to allow for manual startup.</p>
/// </summary>
virtual public bool AutoStartup
{
set { this.autoStartup = value; }
}
public string ClientId
{
set { clientId = value; }
get { return clientId; }
}
public IDestination Destination
{
get
@@ -79,18 +50,7 @@ namespace Spring.Messaging.Nms.Listener
}
}
virtual public bool Active
{
get
{
lock (this.lifecycleMonitor)
{
return this.active;
}
}
}
public string DestinationName
{
get
@@ -173,143 +133,10 @@ namespace Spring.Messaging.Nms.Listener
}
public IConnection SharedConnection
{
get
{
if (!SharedConnectionEnabled)
{
throw new System.SystemException("This message listener container does not maintain a shared IConnection");
}
lock (this.sharedConnectionMonitor)
{
if (this.sharedConnection == null)
{
//TODO SharedConnectionNotInitializedException
throw new ApplicationException("This message listener container's shared IConnection has not been initialized yet");
}
return this.sharedConnection;
}
}
}
#endregion
public void Start()
{
DoStart();
}
private void DoStart()
{
lock (this.lifecycleMonitor)
{
running = true;
System.Threading.Monitor.PulseAll(this.lifecycleMonitor);
//TODO - PausedTasks
}
if (SharedConnectionEnabled)
{
StartSharedConnection();
}
}
protected virtual void StartSharedConnection()
{
lock (sharedConnectionMonitor)
{
if (sharedConnection != null)
{
try
{
sharedConnection.Start();
}
catch (Exception ex)
{
logger.Debug("Ignoring IConnection start exception - assuming already started", ex);
}
}
}
}
public void Stop()
{
DoStop();
}
public bool IsRunning
{
get
{
lock (lifecycleMonitor)
{
return running;
}
}
}
public void Dispose()
{
Shutdown();
}
public virtual void Shutdown()
{
logger.Debug("Shutting down message listener container");
bool wasRunning = false;
lock (this.lifecycleMonitor)
{
wasRunning = this.running;
this.running = false;
this.active = false;
System.Threading.Monitor.PulseAll(this.lifecycleMonitor);
}
try
{
DestroyListener();
}
finally
{
lock (this.sharedConnectionMonitor)
{
NmsUtils.CloseConnection(this.sharedConnection, wasRunning);
}
}
}
protected virtual void DoStop()
{
lock (this.lifecycleMonitor)
{
this.running = false;
System.Threading.Monitor.PulseAll(this.lifecycleMonitor);
}
if (SharedConnectionEnabled)
{
StopSharedConnection();
}
}
protected virtual void StopSharedConnection()
{
lock (this.sharedConnectionMonitor)
{
if (this.sharedConnection != null)
{
try
{
this.sharedConnection.Stop();
}
catch (System.InvalidOperationException ex)
{
logger.Debug("Ignoring IConnection stop exception - assuming already stopped", ex);
}
}
}
}
#region Template methods for listeners
@@ -480,101 +307,16 @@ namespace Spring.Messaging.Nms.Listener
Initialize();
}
public virtual void Initialize()
{
try
{
lock (this.lifecycleMonitor)
{
this.active = true;
System.Threading.Monitor.PulseAll(this.lifecycleMonitor);
}
if (SharedConnectionEnabled)
{
EstablishSharedConnection();
}
if (this.autoStartup)
{
DoStart();
}
RegisterListener();
}
catch (Exception)
{
lock (this.sharedConnectionMonitor)
{
ConnectionFactoryUtils.ReleaseConnection(sharedConnection, ConnectionFactory, autoStartup);
}
throw;
}
}
protected virtual void EstablishSharedConnection()
{
RefreshSharedConnection();
}
protected void RefreshSharedConnection()
{
bool running = IsRunning;
lock (this.sharedConnectionMonitor)
{
NmsUtils.CloseConnection(this.sharedConnection, running);
IConnection con = CreateConnection();
try
{
PrepareSharedConnection(con);
}
catch (Exception)
{
NmsUtils.CloseConnection(con);
throw;
}
this.sharedConnection = con;
}
}
protected virtual void PrepareSharedConnection(IConnection connection)
{
if (ClientId != null)
{
connection.ClientId = ClientId;
}
}
#region Template methods to be implemented by subclasses
/// <summary> Return whether a shared NMS IConnection should be maintained
/// by this listener container base class.
/// </summary>
/// <seealso cref="SharedConnection">
/// </seealso>
protected abstract bool SharedConnectionEnabled
{
get;
}
/// <summary> Register the specified listener on the underlying NMS IConnection.
/// <p>Subclasses need to implement this method for their specific
/// listener management process.</p>
/// </summary>
/// <throws> NMSException if registration failed </throws>
/// <seealso cref="IMessageListener">
/// </seealso>
/// <seealso cref="SharedConnection">
/// </seealso>
protected abstract void RegisterListener();
/// <summary> Destroy the registered listener.
/// The NMS IConnection will automatically be closed <i>afterwards</i>
/// <p>Subclasses need to implement this method for their specific
/// listener management process.</p>
/// </summary>
/// <throws> NMSException if destruction failed </throws>
protected abstract void DestroyListener();
#endregion

View File

@@ -66,6 +66,7 @@
<Compile Include="Messaging\Nms\IProducerCallback.cs" />
<Compile Include="Messaging\Nms\ISessionCallback.cs" />
<Compile Include="Messaging\Nms\Listener\AbstractMessageListenerContainer.cs" />
<Compile Include="Messaging\Nms\Listener\AbstractNmsListeningContainer.cs" />
<Compile Include="Messaging\Nms\Listener\Adapter\MessageListenerAdapter.cs" />
<Compile Include="Messaging\Nms\Listener\DefaultMessageListenerContainer.cs" />
<Compile Include="Messaging\Nms\Listener\ISessionAwareMessageListener.cs" />

View File

@@ -18,7 +18,7 @@
#endregion
#if (!NET_1_0)
#if (!NET_1_0 && !MONO)
#region Imports
@@ -314,4 +314,4 @@ namespace Spring.EnterpriseServices
}
}
#endif // (!NET_1_0)
#endif // (!NET_1_0)

View File

@@ -18,7 +18,7 @@
#endregion
#if (!NET_1_0)
#if (!NET_1_0 && !MONO)
#region Imports

View File

@@ -18,7 +18,7 @@
#endregion
#if (!NET_1_0)
#if (!NET_1_0 && !MONO)
#region Imports

View File

@@ -37,6 +37,7 @@
<include name="Spring.Core.dll" />
<include name="Spring.Aop.dll" />
<include name="Spring.Web.dll" />
<include name="System.Web.Services.dll" />
<!-- TO REMOVE : for .NET 3.0 build -->
<!--<include if="${net-2.0}" name="C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\System.ServiceModel.dll" />-->

View File

@@ -127,14 +127,14 @@ namespace Spring.Context.Support
/// Since the HttpRuntime discards it's configurationsection cache, we maintain our own context cache.
/// Despite it really speeds up context-lookup, since we don't have to go through the whole HttpConfigurationSystem
/// </summary>
private static readonly Hashtable s_webContextCache = new CaseInsensitiveHashtable(); //CollectionsUtil.CreateCaseInsensitiveHashtable();
private static readonly Hashtable s_webContextCache = new CaseInsensitiveHashtable();
static WebApplicationContext()
{
// register for ContextRegistry.Cleared event - we need to discard our cache in this case
ContextRegistry.Cleared += new EventHandler(OnContextRegistryCleared);
#if NET_2_0 && !MONO
#if NET_2_0 && !MONO_2_0
if (HttpRuntime.AppDomainAppVirtualPath != null) // check if we're within an ASP.NET AppDomain!
{
// ensure HttpRuntime has been fully initialized!
@@ -375,4 +375,4 @@ namespace Spring.Context.Support
return new WebObjectFactory(contextPath, this.CaseSensitive, GetInternalParentObjectFactory());
}
}
}
}

View File

@@ -16,7 +16,7 @@
>
<arg line="${compiler.args}"/>
<nowarn>
<warning number="${nowarn.numbers}" />
<warning number="${nowarn.numbers},0108,0114,0612" />
</nowarn>
<sources failonempty="true">
<include name="**/*.cs" />
@@ -30,7 +30,9 @@
<include name="antlr.runtime.dll" />
<include name="Spring.Core.dll" />
<include name="Spring.Aop.dll" />
<include name="Microsoft.Web.Services2.dll" />
<include name="System.Configuration.dll" />
<include name="System.Web.dll" />
<include name="System.Web.Services.dll" />
</references>
</csc>
</target>

View File

@@ -33,9 +33,14 @@ namespace Spring.Util
/// <author>Erich Eichinger</author>
internal class ControlCollectionAccessor
{
private static readonly IDynamicField _owner = new SafeField(typeof (ControlCollection).GetField("_owner", BindingFlags.Instance | BindingFlags.NonPublic));
#if MONO_2_0
private static readonly IDynamicField _owner = new SafeField(typeof (ControlCollection).GetField("owner", BindingFlags.Instance | BindingFlags.NonPublic));
#else
private static readonly IDynamicField _owner = new SafeField(typeof (ControlCollection).GetField("_owner", BindingFlags.Instance | BindingFlags.NonPublic));
#endif
private readonly ControlCollection _controls;
private readonly Type _controlsType;
private readonly Type _controlsType;
/// <summary>
/// Returns the underlying ControlCollection instance.
@@ -72,4 +77,4 @@ namespace Spring.Util
set { _owner.SetValue(_controls, value); }
}
}
}
}

View File

@@ -38,7 +38,7 @@ namespace Spring.Util
/// </summary>
int CodePage { get; set; }
#if NET_2_0
#if NET_2_0 && !MONO
/// <summary>
/// <see cref="System.Web.SessionState.HttpSessionState.CookieMode"/>
/// </summary>

View File

@@ -219,7 +219,7 @@ namespace Spring.Util
get { return _sessionState.CodePage; }
set { _sessionState.CodePage = value; }
}
#if NET_2_0
#if NET_2_0 && !MONO
public HttpCookieMode CookieMode
{
get { return _sessionState.CookieMode; }

View File

@@ -18,7 +18,7 @@
#endregion
#if NET_2_0
#if NET_2_0 && !MONO
#region Imports

View File

@@ -167,10 +167,16 @@ namespace Spring.Web.Support
/// </remarks>
internal class PageHandlerWrapper : Page, IHttpHandler
{
#if NET_2_0
#if NET_2_0 && !MONO_2_0
private static readonly FieldInfo fiHttpContext_CurrentHandler =
typeof(HttpContext).GetField("_currentHandler", BindingFlags.NonPublic | BindingFlags.Instance);
private static readonly MethodInfo miPage_SetPreviousPage =
#endif
#if MONO_2_0
private static readonly FieldInfo fiHttpContext_CurrentHandler =
typeof(HttpContext).GetField("handler", BindingFlags.NonPublic | BindingFlags.Instance);
#endif
#if NET_2_0 || !MONO_2_0
private static readonly MethodInfo miPage_SetPreviousPage =
typeof(System.Web.UI.Page).GetMethod("SetPreviousPage", BindingFlags.NonPublic | BindingFlags.Instance);
#endif
@@ -277,11 +283,15 @@ namespace Spring.Web.Support
{
System.Web.UI.Page page = (Page) handler;
// TODO: to fix this would require a change to the Mono source as there is no mechanisim (public or private) for explicitly setting the
// PreviousPage at the moment
#if !MONO_2_0
// During Server.Transfer/Execute() the PreviousPage property gets set
if (this.PreviousPage != null)
{
miPage_SetPreviousPage.Invoke(page, new object[] { this.PreviousPage });
}
#endif
}
#endif
@@ -420,4 +430,4 @@ namespace Spring.Web.Support
{
}
}
}
}

View File

@@ -18,7 +18,7 @@
output="${current.bin.dir}/${project::get-name()}.dll"
doc="${current.bin.dir}/${project::get-name()}.xml">
<nowarn>
<warning number="${nowarn.numbers.test},0219,0169" /> <!-- add 0414 for mono 2.0 -->
<warning number="${nowarn.numbers.test},0219,0169,0612" /> <!-- add 0414 for mono 2.0 -->
</nowarn>
<sources failonempty="true">
<include name="**/*.cs" />
@@ -42,27 +42,33 @@
<include name="System.Drawing.dll" />
<include name="System.Data.dll" />
<include name="System.Web.Services.dll" />
<include name="System.Runtime.Serialization.Formatters.Soap.dll" />
<include name="System.Windows.Forms.dll" />
<include name="Rhino.Mocks.dll" />
<include name="*.dll" />
<exclude name="${project::get-name()}.dll" />
<exclude name="CloverRuntime.dll" />
</references>
</csc>
<!-- for some reason, on my new machine the csc task doesn't create the resource assembly for the sr-SP-Cyrl culture so do it by hand (MLP)-->
<if test="${framework::get-target-framework() != 'net-2.0'}">
<mkdir dir="${current.bin.dir}/sr-SP-Cyrl"/>
<copy file="Resources/Spring.Context.Tests.sr-SP-Cyrl.resx" todir="${current.bin.dir}/sr-SP-Cyrl"/>
<resgen input="${current.bin.dir}/sr-SP-Cyrl/Spring.Context.Tests.sr-SP-Cyrl.resx" output="${current.bin.dir}/sr-SP-Cyrl/Spring.Resources.Spring.Context.Tests.sr-SP-Cyrl.resources" />
<copy file="Resources/Tesla.sr-SP-Cyrl.resx" todir="${current.bin.dir}/sr-SP-Cyrl"/>
<resgen input="${current.bin.dir}/sr-SP-Cyrl/Tesla.sr-SP-Cyrl.resx" output="${current.bin.dir}/sr-SP-Cyrl/Spring.Resources.Tesla.sr-SP-Cyrl.resources" />
<al output="${current.bin.dir}/sr-SP-Cyrl/Spring.Core.Tests.resources.dll"
target="lib"
culture="sr-SP-Cyrl">
<sources>
<include name="${current.bin.dir}/sr-SP-Cyrl/Spring.Resources.Spring.Context.Tests.sr-SP-Cyrl.resources"/>
<include name="${current.bin.dir}/sr-SP-Cyrl/Spring.Resources.Tesla.sr-SP-Cyrl.resources" />
</sources>
</al>
<!-- Mono's al tells me Culture name sr-SP-Cyrl is not supported. Not sure if that's a limitation of my installation (James Fitzsimons) -->
<if test="${nant.settings.currentframework!='mono-2.0'}">
<!-- for some reason, on my new machine the csc task doesn't create the resource assembly for the sr-SP-Cyrl culture so do it by hand (MLP)-->
<if test="${framework::get-target-framework() != 'net-2.0'}">
<mkdir dir="${current.bin.dir}/sr-SP-Cyrl"/>
<copy file="Resources/Spring.Context.Tests.sr-SP-Cyrl.resx" todir="${current.bin.dir}/sr-SP-Cyrl"/>
<resgen input="${current.bin.dir}/sr-SP-Cyrl/Spring.Context.Tests.sr-SP-Cyrl.resx" output="${current.bin.dir}/sr-SP-Cyrl/Spring.Resources.Spring.Context.Tests.sr-SP-Cyrl.resources" />
<copy file="Resources/Tesla.sr-SP-Cyrl.resx" todir="${current.bin.dir}/sr-SP-Cyrl"/>
<resgen input="${current.bin.dir}/sr-SP-Cyrl/Tesla.sr-SP-Cyrl.resx" output="${current.bin.dir}/sr-SP-Cyrl/Spring.Resources.Tesla.sr-SP-Cyrl.resources" />
<al output="${current.bin.dir}/sr-SP-Cyrl/Spring.Core.Tests.resources.dll"
target="lib"
culture="sr-SP-Cyrl">
<sources>
<include name="${current.bin.dir}/sr-SP-Cyrl/Spring.Resources.Spring.Context.Tests.sr-SP-Cyrl.resources"/>
<include name="${current.bin.dir}/sr-SP-Cyrl/Spring.Resources.Tesla.sr-SP-Cyrl.resources" />
</sources>
</al>
</if>
</if>
<copy todir="${current.bin.dir}">
@@ -79,9 +85,14 @@
<copy file="${project::get-base-directory()}/${project::get-name()}.dll.config"
tofile="${current.bin.dir}/${project::get-name()}.dll.config"
if="${framework::get-target-framework() == 'net-2.0'}"/>
<copy file="${project::get-base-directory()}/${project::get-name()}.dll.config"
tofile="${current.bin.dir}/${project::get-name()}.dll.config"
if="${framework::get-target-framework() == 'mono-2.0'}"/>
</target>
<target name="test" depends="build">
<if test="${nant.settings.currentframework!='mono-2.0'}">
<nunit2outproc>
<formatter type="Plain" />
<formatter type="Xml" usefile="true" extension=".xml"
@@ -89,6 +100,16 @@
<test assemblyname="${current.bin.dir}/${project::get-name()}.dll"
appconfig="${current.bin.dir}/${project::get-name()}.dll.config" />
</nunit2outproc>
</if>
<if test="${nant.settings.currentframework=='mono-2.0'}">
<nunit2>
<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" />
</nunit2>
</if>
</target>
<!--
<target name="test-mono-1.0" >