You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by ha...@apache.org on 2004/06/26 07:01:51 UTC
svn commit: rev 22116 - in avalon/trunk/central/laboratory/avalon-net/DynamicProxy: . DynamicProxyTest
Author: hammett
Date: Fri Jun 25 22:01:51 2004
New Revision: 22116
Added:
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IMyInterface.cs (contents, props changed)
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IMySecondInterface.cs (contents, props changed)
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IServiceStatus.cs (contents, props changed)
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/MyInterfaceImpl.cs (contents, props changed)
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/MySecondInterfaceImpl.cs (contents, props changed)
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ServiceStatusImpl.cs (contents, props changed)
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/StandardInvocationHandler.cs (contents, props changed)
Modified:
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Apache.Avalon.DynamicProxy.csproj
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/AssemblyInfo.cs
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxy.sln
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/Apache.Avalon.DynamicProxy.Test.csproj
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/AssemblyInfo.cs
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ProxyGeneratorTestCase.cs
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/IInvocationHandler.cs
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/ProxyGenerator.cs
Log:
Refactoring in test cases. Applied suggestion from Stefan Zobel (stefan.zobel at lycos.de) from Spring.Net devel list.
Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Apache.Avalon.DynamicProxy.csproj
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Apache.Avalon.DynamicProxy.csproj (original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Apache.Avalon.DynamicProxy.csproj Fri Jun 25 22:01:51 2004
@@ -1,105 +1,110 @@
-<VisualStudioProject>
- <CSHARP
- ProjectType = "Local"
- ProductVersion = "7.10.3077"
- SchemaVersion = "2.0"
- ProjectGuid = "{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}"
- >
- <Build>
- <Settings
- ApplicationIcon = ""
- AssemblyKeyContainerName = ""
- AssemblyName = "Apache.Avalon.DynamicProxy"
- AssemblyOriginatorKeyFile = ""
- DefaultClientScript = "JScript"
- DefaultHTMLPageLayout = "Grid"
- DefaultTargetSchema = "IE50"
- DelaySign = "false"
- OutputType = "Library"
- PreBuildEvent = ""
- PostBuildEvent = ""
- RootNamespace = "Apache.Avalon.DynamicProxy"
- RunPostBuildEvent = "OnBuildSuccess"
- StartupObject = ""
- >
- <Config
- Name = "Debug"
- AllowUnsafeBlocks = "false"
- BaseAddress = "285212672"
- CheckForOverflowUnderflow = "false"
- ConfigurationOverrideFile = ""
- DefineConstants = "DEBUG;TRACE"
- DocumentationFile = ""
- DebugSymbols = "true"
- FileAlignment = "4096"
- IncrementalBuild = "false"
- NoStdLib = "false"
- NoWarn = ""
- Optimize = "false"
- OutputPath = "..\bin\"
- RegisterForComInterop = "false"
- RemoveIntegerChecks = "false"
- TreatWarningsAsErrors = "false"
- WarningLevel = "4"
- />
- <Config
- Name = "Release"
- AllowUnsafeBlocks = "false"
- BaseAddress = "285212672"
- CheckForOverflowUnderflow = "false"
- ConfigurationOverrideFile = ""
- DefineConstants = "TRACE"
- DocumentationFile = ""
- DebugSymbols = "false"
- FileAlignment = "4096"
- IncrementalBuild = "false"
- NoStdLib = "false"
- NoWarn = ""
- Optimize = "true"
- OutputPath = "bin\Release\"
- RegisterForComInterop = "false"
- RemoveIntegerChecks = "false"
- TreatWarningsAsErrors = "false"
- WarningLevel = "4"
- />
- </Settings>
- <References>
- <Reference
- Name = "System"
- AssemblyName = "System"
- HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
- />
- <Reference
- Name = "System.Data"
- AssemblyName = "System.Data"
- HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
- />
- <Reference
- Name = "System.XML"
- AssemblyName = "System.Xml"
- HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
- />
- </References>
- </Build>
- <Files>
- <Include>
- <File
- RelPath = "AssemblyInfo.cs"
- SubType = "Code"
- BuildAction = "Compile"
- />
- <File
- RelPath = "IInvocationHandler.cs"
- SubType = "Code"
- BuildAction = "Compile"
- />
- <File
- RelPath = "ProxyGenerator.cs"
- SubType = "Code"
- BuildAction = "Compile"
- />
- </Include>
- </Files>
- </CSHARP>
-</VisualStudioProject>
-
+<VisualStudioProject>
+ <CSHARP
+ ProjectType = "Local"
+ ProductVersion = "7.10.3077"
+ SchemaVersion = "2.0"
+ ProjectGuid = "{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}"
+ >
+ <Build>
+ <Settings
+ ApplicationIcon = ""
+ AssemblyKeyContainerName = ""
+ AssemblyName = "Apache.Avalon.DynamicProxy"
+ AssemblyOriginatorKeyFile = ""
+ DefaultClientScript = "JScript"
+ DefaultHTMLPageLayout = "Grid"
+ DefaultTargetSchema = "IE50"
+ DelaySign = "false"
+ OutputType = "Library"
+ PreBuildEvent = ""
+ PostBuildEvent = ""
+ RootNamespace = "Apache.Avalon.DynamicProxy"
+ RunPostBuildEvent = "OnBuildSuccess"
+ StartupObject = ""
+ >
+ <Config
+ Name = "Debug"
+ AllowUnsafeBlocks = "false"
+ BaseAddress = "285212672"
+ CheckForOverflowUnderflow = "false"
+ ConfigurationOverrideFile = ""
+ DefineConstants = "DEBUG;TRACE"
+ DocumentationFile = ""
+ DebugSymbols = "true"
+ FileAlignment = "4096"
+ IncrementalBuild = "false"
+ NoStdLib = "false"
+ NoWarn = ""
+ Optimize = "false"
+ OutputPath = "..\bin\"
+ RegisterForComInterop = "false"
+ RemoveIntegerChecks = "false"
+ TreatWarningsAsErrors = "false"
+ WarningLevel = "4"
+ />
+ <Config
+ Name = "Release"
+ AllowUnsafeBlocks = "false"
+ BaseAddress = "285212672"
+ CheckForOverflowUnderflow = "false"
+ ConfigurationOverrideFile = ""
+ DefineConstants = "TRACE"
+ DocumentationFile = ""
+ DebugSymbols = "false"
+ FileAlignment = "4096"
+ IncrementalBuild = "false"
+ NoStdLib = "false"
+ NoWarn = ""
+ Optimize = "true"
+ OutputPath = "bin\Release\"
+ RegisterForComInterop = "false"
+ RemoveIntegerChecks = "false"
+ TreatWarningsAsErrors = "false"
+ WarningLevel = "4"
+ />
+ </Settings>
+ <References>
+ <Reference
+ Name = "System"
+ AssemblyName = "System"
+ HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
+ />
+ <Reference
+ Name = "System.Data"
+ AssemblyName = "System.Data"
+ HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
+ />
+ <Reference
+ Name = "System.XML"
+ AssemblyName = "System.Xml"
+ HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
+ />
+ </References>
+ </Build>
+ <Files>
+ <Include>
+ <File
+ RelPath = "AssemblyInfo.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "IInvocationHandler.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "ProxyGenerator.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "StandardInvocationHandler.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ </Include>
+ </Files>
+ </CSHARP>
+</VisualStudioProject>
+
Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/AssemblyInfo.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/AssemblyInfo.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/AssemblyInfo.cs Fri Jun 25 22:01:51 2004
@@ -23,7 +23,7 @@
[assembly: AssemblyCopyright("Copyright (c) 2004 The Apache Software Foundation")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
-[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyVersion("1.0.0.1")]
#if STRONG
[assembly: AssemblyDelaySign(false)]
Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxy.sln
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxy.sln (original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxy.sln Fri Jun 25 22:01:51 2004
@@ -1,29 +1,29 @@
-Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Avalon.DynamicProxy", "Apache.Avalon.DynamicProxy.csproj", "{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Avalon.DynamicProxy.Test", "DynamicProxyTest\Apache.Avalon.DynamicProxy.Test.csproj", "{EF89321E-FB2A-41B6-85B3-794D50A55CF1}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfiguration) = preSolution
- Debug = Debug
- Release = Release
- EndGlobalSection
- GlobalSection(ProjectConfiguration) = postSolution
- {70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}.Debug.ActiveCfg = Debug|.NET
- {70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}.Debug.Build.0 = Debug|.NET
- {70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}.Release.ActiveCfg = Release|.NET
- {70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}.Release.Build.0 = Release|.NET
- {EF89321E-FB2A-41B6-85B3-794D50A55CF1}.Debug.ActiveCfg = Debug|.NET
- {EF89321E-FB2A-41B6-85B3-794D50A55CF1}.Debug.Build.0 = Debug|.NET
- {EF89321E-FB2A-41B6-85B3-794D50A55CF1}.Release.ActiveCfg = Release|.NET
- {EF89321E-FB2A-41B6-85B3-794D50A55CF1}.Release.Build.0 = Release|.NET
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- EndGlobalSection
- GlobalSection(ExtensibilityAddIns) = postSolution
- EndGlobalSection
-EndGlobal
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Avalon.DynamicProxy", "Apache.Avalon.DynamicProxy.csproj", "{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Avalon.DynamicProxy.Test", "DynamicProxyTest\Apache.Avalon.DynamicProxy.Test.csproj", "{EF89321E-FB2A-41B6-85B3-794D50A55CF1}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}.Debug.ActiveCfg = Debug|.NET
+ {70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}.Debug.Build.0 = Debug|.NET
+ {70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}.Release.ActiveCfg = Release|.NET
+ {70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}.Release.Build.0 = Release|.NET
+ {EF89321E-FB2A-41B6-85B3-794D50A55CF1}.Debug.ActiveCfg = Debug|.NET
+ {EF89321E-FB2A-41B6-85B3-794D50A55CF1}.Debug.Build.0 = Debug|.NET
+ {EF89321E-FB2A-41B6-85B3-794D50A55CF1}.Release.ActiveCfg = Release|.NET
+ {EF89321E-FB2A-41B6-85B3-794D50A55CF1}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/Apache.Avalon.DynamicProxy.Test.csproj
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/Apache.Avalon.DynamicProxy.Test.csproj (original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/Apache.Avalon.DynamicProxy.Test.csproj Fri Jun 25 22:01:51 2004
@@ -1,110 +1,140 @@
-<VisualStudioProject>
- <CSHARP
- ProjectType = "Local"
- ProductVersion = "7.10.3077"
- SchemaVersion = "2.0"
- ProjectGuid = "{EF89321E-FB2A-41B6-85B3-794D50A55CF1}"
- >
- <Build>
- <Settings
- ApplicationIcon = ""
- AssemblyKeyContainerName = ""
- AssemblyName = "Apache.Avalon.DynamicProxy.Test"
- AssemblyOriginatorKeyFile = ""
- DefaultClientScript = "JScript"
- DefaultHTMLPageLayout = "Grid"
- DefaultTargetSchema = "IE50"
- DelaySign = "false"
- OutputType = "Library"
- PreBuildEvent = ""
- PostBuildEvent = ""
- RootNamespace = "Apache.Avalon.DynamicProxy.Test"
- RunPostBuildEvent = "OnBuildSuccess"
- StartupObject = ""
- >
- <Config
- Name = "Debug"
- AllowUnsafeBlocks = "false"
- BaseAddress = "285212672"
- CheckForOverflowUnderflow = "false"
- ConfigurationOverrideFile = ""
- DefineConstants = "DEBUG;TRACE"
- DocumentationFile = ""
- DebugSymbols = "true"
- FileAlignment = "4096"
- IncrementalBuild = "false"
- NoStdLib = "false"
- NoWarn = ""
- Optimize = "false"
- OutputPath = "..\..\bin\"
- RegisterForComInterop = "false"
- RemoveIntegerChecks = "false"
- TreatWarningsAsErrors = "false"
- WarningLevel = "4"
- />
- <Config
- Name = "Release"
- AllowUnsafeBlocks = "false"
- BaseAddress = "285212672"
- CheckForOverflowUnderflow = "false"
- ConfigurationOverrideFile = ""
- DefineConstants = "TRACE"
- DocumentationFile = ""
- DebugSymbols = "false"
- FileAlignment = "4096"
- IncrementalBuild = "false"
- NoStdLib = "false"
- NoWarn = ""
- Optimize = "true"
- OutputPath = "bin\Release\"
- RegisterForComInterop = "false"
- RemoveIntegerChecks = "false"
- TreatWarningsAsErrors = "false"
- WarningLevel = "4"
- />
- </Settings>
- <References>
- <Reference
- Name = "System"
- AssemblyName = "System"
- HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
- />
- <Reference
- Name = "System.Data"
- AssemblyName = "System.Data"
- HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
- />
- <Reference
- Name = "System.XML"
- AssemblyName = "System.Xml"
- HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
- />
- <Reference
- Name = "DProxy"
- Project = "{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}"
- Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
- />
- <Reference
- Name = "nunit.framework"
- AssemblyName = "nunit.framework"
- HintPath = "..\..\..\..\..\..\dotnet\NUnit2\bin\nunit.framework.dll"
- />
- </References>
- </Build>
- <Files>
- <Include>
- <File
- RelPath = "AssemblyInfo.cs"
- SubType = "Code"
- BuildAction = "Compile"
- />
- <File
- RelPath = "ProxyGeneratorTestCase.cs"
- SubType = "Code"
- BuildAction = "Compile"
- />
- </Include>
- </Files>
- </CSHARP>
-</VisualStudioProject>
-
+<VisualStudioProject>
+ <CSHARP
+ ProjectType = "Local"
+ ProductVersion = "7.10.3077"
+ SchemaVersion = "2.0"
+ ProjectGuid = "{EF89321E-FB2A-41B6-85B3-794D50A55CF1}"
+ >
+ <Build>
+ <Settings
+ ApplicationIcon = ""
+ AssemblyKeyContainerName = ""
+ AssemblyName = "Apache.Avalon.DynamicProxy.Test"
+ AssemblyOriginatorKeyFile = ""
+ DefaultClientScript = "JScript"
+ DefaultHTMLPageLayout = "Grid"
+ DefaultTargetSchema = "IE50"
+ DelaySign = "false"
+ OutputType = "Library"
+ PreBuildEvent = ""
+ PostBuildEvent = ""
+ RootNamespace = "Apache.Avalon.DynamicProxy.Test"
+ RunPostBuildEvent = "OnBuildSuccess"
+ StartupObject = ""
+ >
+ <Config
+ Name = "Debug"
+ AllowUnsafeBlocks = "false"
+ BaseAddress = "285212672"
+ CheckForOverflowUnderflow = "false"
+ ConfigurationOverrideFile = ""
+ DefineConstants = "DEBUG;TRACE"
+ DocumentationFile = ""
+ DebugSymbols = "true"
+ FileAlignment = "4096"
+ IncrementalBuild = "false"
+ NoStdLib = "false"
+ NoWarn = ""
+ Optimize = "false"
+ OutputPath = "..\..\bin\"
+ RegisterForComInterop = "false"
+ RemoveIntegerChecks = "false"
+ TreatWarningsAsErrors = "false"
+ WarningLevel = "4"
+ />
+ <Config
+ Name = "Release"
+ AllowUnsafeBlocks = "false"
+ BaseAddress = "285212672"
+ CheckForOverflowUnderflow = "false"
+ ConfigurationOverrideFile = ""
+ DefineConstants = "TRACE"
+ DocumentationFile = ""
+ DebugSymbols = "false"
+ FileAlignment = "4096"
+ IncrementalBuild = "false"
+ NoStdLib = "false"
+ NoWarn = ""
+ Optimize = "true"
+ OutputPath = "bin\Release\"
+ RegisterForComInterop = "false"
+ RemoveIntegerChecks = "false"
+ TreatWarningsAsErrors = "false"
+ WarningLevel = "4"
+ />
+ </Settings>
+ <References>
+ <Reference
+ Name = "System"
+ AssemblyName = "System"
+ HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
+ />
+ <Reference
+ Name = "System.Data"
+ AssemblyName = "System.Data"
+ HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
+ />
+ <Reference
+ Name = "System.XML"
+ AssemblyName = "System.Xml"
+ HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
+ />
+ <Reference
+ Name = "DProxy"
+ Project = "{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}"
+ Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
+ />
+ <Reference
+ Name = "nunit.framework"
+ AssemblyName = "nunit.framework"
+ HintPath = "..\..\..\..\..\..\..\..\..\dotnet\NUnit2\bin\nunit.framework.dll"
+ />
+ </References>
+ </Build>
+ <Files>
+ <Include>
+ <File
+ RelPath = "AssemblyInfo.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "IMyInterface.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "IMySecondInterface.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "IServiceStatus.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "MyInterfaceImpl.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "MySecondInterfaceImpl.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "ProxyGeneratorTestCase.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "ServiceStatusImpl.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ </Include>
+ </Files>
+ </CSHARP>
+</VisualStudioProject>
+
Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/AssemblyInfo.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/AssemblyInfo.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/AssemblyInfo.cs Fri Jun 25 22:01:51 2004
@@ -23,5 +23,5 @@
[assembly: AssemblyCopyright("Copyright (c) 2004 The Apache Software Foundation")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
-[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyVersion("1.0.0.1")]
Added: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IMyInterface.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IMyInterface.cs Fri Jun 25 22:01:51 2004
@@ -0,0 +1,42 @@
+// Copyright 2004 The Apache Software Foundation
+//
+// 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.
+
+namespace Apache.Avalon.DynamicProxy.Test
+{
+ using System;
+
+ /// <summary>
+ /// Summary description for IMyInterface.
+ /// </summary>
+ public interface IMyInterface
+ {
+ String Name
+ {
+ get;
+ set;
+ }
+
+ bool Started
+ {
+ get;
+ set;
+ }
+
+ // void Calc(int x, int y, out int result);
+
+ int Calc(int x, int y);
+
+ int Calc(int x, int y, int z, Single k);
+ }
+}
Added: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IMySecondInterface.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IMySecondInterface.cs Fri Jun 25 22:01:51 2004
@@ -0,0 +1,30 @@
+// Copyright 2004 The Apache Software Foundation
+//
+// 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.
+
+namespace Apache.Avalon.DynamicProxy.Test
+{
+ using System;
+
+ /// <summary>
+ /// Summary description for IMySecondInterface.
+ /// </summary>
+ public interface IMySecondInterface : IMyInterface
+ {
+ String Address
+ {
+ get;
+ set;
+ }
+ }
+}
Added: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IServiceStatus.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IServiceStatus.cs Fri Jun 25 22:01:51 2004
@@ -0,0 +1,45 @@
+// Copyright 2004 The Apache Software Foundation
+//
+// 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.
+
+namespace Apache.Avalon.DynamicProxy.Test
+{
+ using System;
+
+ /// <summary>
+ /// Simple enum declaration
+ /// </summary>
+ public enum State
+ {
+ Valid,
+ Invalid
+ }
+
+ /// <summary>
+ /// Summary description for IServiceStatus.
+ /// </summary>
+ public interface IServiceStatus
+ {
+ int Requests
+ {
+ get;
+ }
+
+ State ActualState
+ {
+ get;
+ }
+
+ void ChangeState(State state);
+ }
+}
Added: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/MyInterfaceImpl.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/MyInterfaceImpl.cs Fri Jun 25 22:01:51 2004
@@ -0,0 +1,69 @@
+// Copyright 2004 The Apache Software Foundation
+//
+// 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.
+
+namespace Apache.Avalon.DynamicProxy.Test
+{
+ using System;
+
+ /// <summary>
+ /// Summary description for MyInterfaceImpl.
+ /// </summary>
+ public class MyInterfaceImpl : IMyInterface
+ {
+ private String m_name;
+ private bool m_started;
+
+ public MyInterfaceImpl()
+ {
+ }
+
+ #region IMyInterface Members
+
+ public String Name
+ {
+ get
+ {
+ return m_name;
+ }
+ set
+ {
+ m_name = value;
+ }
+ }
+
+ public bool Started
+ {
+ get
+ {
+ return m_started;
+ }
+ set
+ {
+ m_started = value;
+ }
+ }
+
+ public int Calc(int x, int y)
+ {
+ return x + y;
+ }
+
+ public int Calc(int x, int y, int z, Single k)
+ {
+ return x + y + z + (int)k;
+ }
+
+ #endregion
+ }
+}
Added: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/MySecondInterfaceImpl.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/MySecondInterfaceImpl.cs Fri Jun 25 22:01:51 2004
@@ -0,0 +1,46 @@
+// Copyright 2004 The Apache Software Foundation
+//
+// 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.
+
+namespace Apache.Avalon.DynamicProxy.Test
+{
+ using System;
+
+ /// <summary>
+ /// Summary description for MySecondInterfaceImpl.
+ /// </summary>
+ public class MySecondInterfaceImpl : MyInterfaceImpl, IMySecondInterface
+ {
+ private String m_address;
+
+ public MySecondInterfaceImpl()
+ {
+ }
+
+ #region IMySecondInterface Members
+
+ public String Address
+ {
+ get
+ {
+ return m_address;
+ }
+ set
+ {
+ m_address = value;
+ }
+ }
+
+ #endregion
+ }
+}
Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ProxyGeneratorTestCase.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ProxyGeneratorTestCase.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ProxyGeneratorTestCase.cs Fri Jun 25 22:01:51 2004
@@ -25,263 +25,79 @@
/// Summary description for ProxyGeneratorTestCase.
/// </summary>
[TestFixture]
- public class ProxyGeneratorTestCase : Assertion, IInvocationHandler, IMyInterface, IMySecondInterface, IServiceStatus
+ public class ProxyGeneratorTestCase : Assertion
{
- protected String m_nameProperty;
- protected String m_addressProperty;
- protected State m_state = State.Invalid;
- protected bool m_started;
-
[Test]
- public void TestSimpleCase()
+ public void TestGenerationSimpleInterface()
{
- object proxy = ProxyGenerator.CreateProxy( new Type[] { typeof(IMyInterface) }, this );
+ object proxy = ProxyGenerator.CreateProxy(
+ typeof(IMyInterface), new StandardInvocationHandler( new MyInterfaceImpl() ) );
+
AssertNotNull( proxy );
Assert( typeof(IMyInterface).IsAssignableFrom( proxy.GetType() ) );
IMyInterface inter = (IMyInterface) proxy;
- inter.Calc(1, "ola");
+
+ AssertEquals( 45, inter.Calc( 20, 25 ) );
+
inter.Name = "opa";
AssertEquals( "opa", inter.Name );
+
inter.Started = true;
AssertEquals( true, inter.Started );
- AssertEquals( 45, inter.Calc( 20, 25 ) );
}
[Test]
- public void TestMoreComplexCase()
+ public void TestGenerationWithInterfaceHeritage()
{
- object proxy = ProxyGenerator.CreateProxy( new Type[] { typeof(IMySecondInterface) }, this );
+ object proxy = ProxyGenerator.CreateProxy(
+ typeof(IMySecondInterface), new StandardInvocationHandler( new MySecondInterfaceImpl() ) );
+
AssertNotNull( proxy );
Assert( typeof(IMyInterface).IsAssignableFrom( proxy.GetType() ) );
Assert( typeof(IMySecondInterface).IsAssignableFrom( proxy.GetType() ) );
IMySecondInterface inter = (IMySecondInterface) proxy;
- inter.Calc(1, "ola");
- inter.Name = "opa";
- AssertEquals( "opa", inter.Name );
+ inter.Calc(1, 1);
+
+ inter.Name = "hammett";
+ AssertEquals( "hammett", inter.Name );
+
inter.Address = "pereira leite, 44";
AssertEquals( "pereira leite, 44", inter.Address );
+
AssertEquals( 45, inter.Calc( 20, 25 ) );
}
[Test]
- public void TestEnumCase()
+ public void TestEnumProperties()
{
- m_state = State.Invalid;
+ ServiceStatusImpl service = new ServiceStatusImpl();
- object proxy = ProxyGenerator.CreateProxy( new Type[] { typeof(IServiceStatus) }, this );
+ object proxy = ProxyGenerator.CreateProxy(
+ typeof(IServiceStatus), new StandardInvocationHandler( service ) );
+
AssertNotNull( proxy );
Assert( typeof(IServiceStatus).IsAssignableFrom( proxy.GetType() ) );
IServiceStatus inter = (IServiceStatus) proxy;
AssertEquals( State.Invalid, inter.ActualState );
+
inter.ChangeState( State.Valid );
AssertEquals( State.Valid, inter.ActualState );
}
- #region IInvocationHandler Members
-
- public object Invoke(object obj, MethodBase method, params object[] arguments)
- {
- Type[] parameters = new Type[arguments.Length];
-
- for(int i=0; i < arguments.Length; i++ )
- {
- parameters[i] = arguments[i].GetType();
- }
-
- MethodInfo ourMethod = this.GetType().GetMethod( method.Name, parameters );
-
- AssertNotNull( ourMethod );
-
- return ourMethod.Invoke( this, arguments );
- }
-
- #endregion
-
- #region IMyInterface Members
-
- public String Name
- {
- get
- {
- return m_nameProperty;
- }
- set
- {
- m_nameProperty = value;
- }
- }
-
- public bool Started
- {
- get
- {
- return m_started;
- }
- set
- {
- m_started = value;
- }
- }
-
- public void Calc(int x, String y)
- {
- }
-
- public void Calc(int x, String y, Single ip)
- {
- }
-
- public int Calc(int x, int y)
- {
- return x + y;
- }
-
- public int Calc(int x, int y, int z, Single h)
- {
- return x + y + z + (int)h;
- }
-
- #endregion
-
- #region IMySecondInterface Members
-
- public String Address
- {
- get
- {
- return m_addressProperty;
- }
- set
- {
- m_addressProperty = value;
- }
- }
-
- #endregion
-
- #region IServiceStatus Members
-
- public int Requests
- {
- get
- {
- return 32;
- }
- }
-
- public Apache.Avalon.DynamicProxy.Test.State ActualState
- {
- get
- {
- return m_state ;
- }
- }
-
- public void ChangeState(Apache.Avalon.DynamicProxy.Test.State state)
- {
- m_state = state;
- }
-
- #endregion
- }
-
- /// <summary>
- ///
- /// </summary>
- public enum State
- {
- Valid,
- Invalid
- }
-
- /// <summary>
- ///
- /// </summary>
- public interface IMyInterface
- {
- String Name
- {
- get;
- set;
- }
-
- bool Started
+ public class MyInterfaceProxy : IInvocationHandler
{
- get;
- set;
+ #region IInvocationHandler Members
+
+ public object Invoke(object proxy, MethodInfo method, params object[] arguments)
+ {
+ return null;
+ }
+
+ #endregion
}
-
- void Calc(int x, String y);
-
- void Calc(int x, String y, Single ip);
-
- int Calc(int x, int y);
-
- int Calc(int x, int y, int z, Single h);
- }
-
- /// <summary>
- ///
- /// </summary>
- public interface IMySecondInterface : IMyInterface
- {
- String Address
- {
- get;
- set;
- }
- }
-
- public interface IServiceStatus
- {
- int Requests
- {
- get;
- }
-
- State ActualState
- {
- get;
- }
-
- void ChangeState(State state);
- }
-
- public class MyTest : IServiceStatus
- {
- IInvocationHandler handler = null;
-
- #region IServiceStatus Members
-
- public int Requests
- {
- get
- {
- MethodBase method = MethodBase.GetCurrentMethod();
- return (int) handler.Invoke( this, method );
- }
- }
-
- public Apache.Avalon.DynamicProxy.Test.State ActualState
- {
- get
- {
- MethodBase method = MethodBase.GetCurrentMethod();
- return (State) handler.Invoke( this, method );
- }
- }
-
- public void ChangeState(Apache.Avalon.DynamicProxy.Test.State state)
- {
- MethodBase method = MethodBase.GetCurrentMethod();
- handler.Invoke( this, method, state );
- }
-
- #endregion
-
}
}
Added: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ServiceStatusImpl.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ServiceStatusImpl.cs Fri Jun 25 22:01:51 2004
@@ -0,0 +1,55 @@
+// Copyright 2004 The Apache Software Foundation
+//
+// 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.
+
+namespace Apache.Avalon.DynamicProxy.Test
+{
+ using System;
+
+ /// <summary>
+ /// Summary description for ServiceStatusImpl.
+ /// </summary>
+ public class ServiceStatusImpl : IServiceStatus
+ {
+ private Apache.Avalon.DynamicProxy.Test.State m_state = Apache.Avalon.DynamicProxy.Test.State.Invalid;
+
+ public ServiceStatusImpl()
+ {
+ }
+
+ #region IServiceStatus Members
+
+ public int Requests
+ {
+ get
+ {
+ return 10;
+ }
+ }
+
+ public Apache.Avalon.DynamicProxy.Test.State ActualState
+ {
+ get
+ {
+ return m_state;
+ }
+ }
+
+ public void ChangeState(Apache.Avalon.DynamicProxy.Test.State state)
+ {
+ m_state = state;
+ }
+
+ #endregion
+ }
+}
Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/IInvocationHandler.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/IInvocationHandler.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/IInvocationHandler.cs Fri Jun 25 22:01:51 2004
@@ -27,9 +27,9 @@
/// Implementation should invoke the method on the real object.
/// </summary>
/// <param name="proxy">proxy instance</param>
- /// <param name="method"><see cref="System.Reflection.MethodBase"/> being invoked.</param>
+ /// <param name="method"><see cref="System.Reflection.MethodInfo"/> being invoked.</param>
/// <param name="arguments">Arguments of method - if any</param>
/// <returns>Should return the result of method invocation</returns>
- object Invoke(object proxy, MethodBase method, params object[] arguments);
+ object Invoke(object proxy, MethodInfo method, params object[] arguments);
}
}
Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/ProxyGenerator.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/ProxyGenerator.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/ProxyGenerator.cs Fri Jun 25 22:01:51 2004
@@ -28,6 +28,10 @@
/// implementing the specified interfaces. The class implementation will
/// only call the internal <see cref="IInvocationHandler"/> instance.
/// </remarks>
+ /// <remarks>
+ /// This proxy implementation currently doesn't not supports ref and out arguments
+ /// in methods.
+ /// </remarks>
/// <example>
/// <code>
/// MyInvocationHandler handler = ...
@@ -48,6 +52,18 @@
/// Generates a proxy implementing all the specified interfaces and
/// redirecting method invocations to the specifed handler.
/// </summary>
+ /// <param name="theInterface">Interface to be implemented</param>
+ /// <param name="handler">instance of <see cref="IInvocationHandler"/></param>
+ /// <returns>Proxy instance</returns>
+ public static object CreateProxy(Type theInterface, IInvocationHandler handler)
+ {
+ return CreateProxy(new Type[] { theInterface }, handler );
+ }
+
+ /// <summary>
+ /// Generates a proxy implementing all the specified interfaces and
+ /// redirecting method invocations to the specifed handler.
+ /// </summary>
/// <param name="interfaces">Array of interfaces to be implemented</param>
/// <param name="handler">instance of <see cref="IInvocationHandler"/></param>
/// <returns>Proxy instance</returns>
@@ -246,7 +262,7 @@
}
}
- WriteILForMethod( methodBuilder, parameters, handlerField );
+ WriteILForMethod( method, methodBuilder, parameters, handlerField );
}
/// <summary>
@@ -267,7 +283,7 @@
/// <param name="typeBuilder"><see cref="TypeBuilder"/> being constructed.</param>
/// <param name="parameters"></param>
/// <param name="handlerField"></param>
- private static void WriteILForMethod( MethodBuilder builder,
+ private static void WriteILForMethod( MethodInfo method, MethodBuilder builder,
System.Type[] parameters, FieldBuilder handlerField )
{
int arrayPositionInStack = 1;
@@ -284,11 +300,12 @@
ilGenerator.DeclareLocal( typeof(object[]) );
- ilGenerator.Emit(OpCodes.Call, typeof(MethodBase).GetMethod("GetCurrentMethod") );
+ ilGenerator.Emit(OpCodes.Ldtoken, method);
+ ilGenerator.Emit(OpCodes.Call, typeof(MethodBase).GetMethod("GetMethodFromHandle"));
ilGenerator.Emit(OpCodes.Stloc_0);
ilGenerator.Emit(OpCodes.Ldarg_0);
- ilGenerator.Emit(OpCodes.Ldfld, handlerField );
+ ilGenerator.Emit(OpCodes.Ldfld, handlerField);
ilGenerator.Emit(OpCodes.Ldarg_0);
ilGenerator.Emit(OpCodes.Ldloc_0);
ilGenerator.Emit(OpCodes.Ldc_I4, parameters.Length);
@@ -339,7 +356,6 @@
{
ilGenerator.Emit(OpCodes.Pop);
}
-
ilGenerator.Emit(OpCodes.Ret);
}
Added: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/StandardInvocationHandler.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/StandardInvocationHandler.cs Fri Jun 25 22:01:51 2004
@@ -0,0 +1,67 @@
+// Copyright 2004 The Apache Software Foundation
+//
+// 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.
+
+namespace Apache.Avalon.DynamicProxy
+{
+ using System;
+
+ /// <summary>
+ /// Summary description for StandardInvocationHandler.
+ /// </summary>
+ public class StandardInvocationHandler : IInvocationHandler
+ {
+ private object m_target;
+
+ public StandardInvocationHandler(object target)
+ {
+ if (target == null)
+ {
+ throw new ArgumentNullException("target");
+ }
+
+ m_target = target;
+ }
+
+ protected virtual void PreInvoke(object proxy, System.Reflection.MethodInfo method, params object[] arguments)
+ {
+ }
+
+ protected virtual void PostInvoke(object proxy, System.Reflection.MethodInfo method, ref object returnValue, params object[] arguments)
+ {
+ }
+
+ #region IInvocationHandler Members
+
+ public virtual object Invoke(object proxy, System.Reflection.MethodInfo method, params object[] arguments)
+ {
+ PreInvoke(proxy, method, arguments);
+
+ object returnValue = method.Invoke( Target, arguments );
+
+ PostInvoke(proxy, method, ref returnValue, arguments);
+
+ return returnValue;
+ }
+
+ #endregion
+
+ public object Target
+ {
+ get
+ {
+ return m_target;
+ }
+ }
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org