svn commit: rev 43596 - in avalon/trunk/central/laboratory/avalon-net/DynamicProxy: . Builder DynamicProxyTest
[email protected] 9 Sep 2004 14:06:17 -0000
| Newsgroups | gmane.comp.jakarta.avalon.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: hammett
Date: Thu Sep 9 07:06:15 2004
New Revision: 43596
Added:
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Builder/DefaultProxyBuilder.cs (contents, props changed)
Removed:
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Builder/ProxyBuilderImpl.cs
Modified:
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Apache.Avalon.DynamicProxy.csproj
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/CustomProxyGeneratorTestCase.cs
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ProxyGeneratorTestCase.cs
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/ProxyGenerator.cs
Log:
Endless refactoring :-)
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 Thu Sep 9 07:06:15 2004
@@ -104,12 +104,12 @@
BuildAction = "Compile"
/>
<File
- RelPath = "Builder\IProxyBuilder.cs"
+ RelPath = "Builder\DefaultProxyBuilder.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
- RelPath = "Builder\ProxyBuilderImpl.cs"
+ RelPath = "Builder\IProxyBuilder.cs"
SubType = "Code"
BuildAction = "Compile"
/>
Added: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Builder/DefaultProxyBuilder.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Builder/DefaultProxyBuilder.cs Thu Sep 9 07:06:15 2004
@@ -0,0 +1,55 @@
+using Apache.Avalon.DynamicProxy.Builder.CodeGenerators;
+// 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.Builder
+{
+ using System;
+
+ /// <summary>
+ /// Summary description for DefaultProxyBuilder.
+ /// </summary>
+ public class DefaultProxyBuilder : IProxyBuilder
+ {
+ #region IProxyBuilder Members
+
+ public Type CreateInterfaceProxy(Type[] interfaces)
+ {
+ InterfaceProxyGenerator generator = new InterfaceProxyGenerator();
+ return generator.GenerateCode( interfaces );
+ }
+
+ public Type CreateClassProxy(Type theClass)
+ {
+ ClassProxyGenerator generator = new ClassProxyGenerator();
+ return generator.GenerateCode( theClass );
+ }
+
+ public Type CreateCustomInterfaceProxy(Type[] interfaces, EnhanceTypeDelegate enhance,
+ ScreenInterfacesDelegate screenInterfaces)
+ {
+ InterfaceProxyGenerator generator = new InterfaceProxyGenerator(enhance, screenInterfaces);
+ return generator.GenerateCode( interfaces );
+ }
+
+ public Type CreateCustomClassProxy(Type theClass, EnhanceTypeDelegate enhance,
+ ScreenInterfacesDelegate screenInterfaces)
+ {
+ ClassProxyGenerator generator = new ClassProxyGenerator(enhance, screenInterfaces);
+ return generator.GenerateCode( theClass );
+ }
+
+ #endregion
+ }
+}
Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/CustomProxyGeneratorTestCase.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/CustomProxyGeneratorTestCase.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/CustomProxyGeneratorTestCase.cs Thu Sep 9 07:06:15 2004
@@ -28,6 +28,7 @@
[TestFixture]
public class CustomProxyGeneratorTestCase : Assertion
{
+ private ProxyGenerator m_generator;
private bool m_enhanceInvoked;
private bool m_screenInvoked;
private bool m_constructorInvoked;
@@ -35,6 +36,7 @@
[SetUp]
public void Init()
{
+ m_generator = new ProxyGenerator();
m_enhanceInvoked = false;
m_screenInvoked = false;
m_constructorInvoked = false;
@@ -43,7 +45,7 @@
[Test]
public void CreateCustomProxy()
{
- object proxy = ProxyGenerator.CreateCustomProxy(
+ object proxy = m_generator.CreateCustomProxy(
typeof (IMyInterface),
new StandardInvocationHandler(new MyInterfaceImpl()),
new EnhanceTypeDelegate(EnhanceType),
@@ -58,7 +60,7 @@
[Test]
public void CreateCustomClassProxy()
{
- object proxy = ProxyGenerator.CreateCustomClassProxy(
+ object proxy = m_generator.CreateCustomClassProxy(
typeof (ServiceClass),
new StandardInvocationHandler(new ServiceClass()),
new EnhanceTypeDelegate(EnhanceType),
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 Thu Sep 9 07:06:15 2004
@@ -29,10 +29,18 @@
[TestFixture]
public class ProxyGeneratorTestCase : Assertion
{
+ private ProxyGenerator m_generator;
+
+ [SetUp]
+ public void Init()
+ {
+ m_generator = new ProxyGenerator();
+ }
+
[Test]
public void ProxyForClass()
{
- object proxy = ProxyGenerator.CreateClassProxy(
+ object proxy = m_generator.CreateClassProxy(
typeof(ServiceClass), new ResultModifiedInvocationHandler( new ServiceClass() ) );
AssertNotNull( proxy );
@@ -47,7 +55,7 @@
[Test]
public void ProxyForClassWithSuperClass()
{
- object proxy = ProxyGenerator.CreateClassProxy(
+ object proxy = m_generator.CreateClassProxy(
typeof(SpecializedServiceClass), new ResultModifiedInvocationHandler( new SpecializedServiceClass() ) );
AssertNotNull( proxy );
@@ -64,7 +72,7 @@
[Test]
public void ProxyForClassWhichImplementsInterfaces()
{
- object proxy = ProxyGenerator.CreateClassProxy(
+ object proxy = m_generator.CreateClassProxy(
typeof(MyInterfaceImpl), new ResultModifiedInvocationHandler( new MyInterfaceImpl() ) );
AssertNotNull( proxy );
@@ -79,7 +87,7 @@
[Test]
public void ProxyingClassWithoutVirtualMethods()
{
- object proxy = ProxyGenerator.CreateClassProxy(
+ object proxy = m_generator.CreateClassProxy(
typeof(NoVirtualMethodClass), new ResultModifiedInvocationHandler( new SpecializedServiceClass() ) );
AssertNotNull( proxy );
@@ -93,7 +101,7 @@
[Test]
public void ProxyingClassWithSealedMethods()
{
- object proxy = ProxyGenerator.CreateClassProxy(
+ object proxy = m_generator.CreateClassProxy(
typeof(SealedMethodsClass), new ResultModifiedInvocationHandler( new SpecializedServiceClass() ) );
AssertNotNull( proxy );
@@ -109,7 +117,7 @@
{
try
{
- ProxyGenerator.CreateClassProxy(
+ m_generator.CreateClassProxy(
typeof(ICloneable), new StandardInvocationHandler( new SpecializedServiceClass() ) );
}
catch(ArgumentException)
@@ -119,7 +127,7 @@
try
{
- ProxyGenerator.CreateClassProxy(
+ m_generator.CreateClassProxy(
null, new StandardInvocationHandler( new SpecializedServiceClass() ) );
}
catch(ArgumentNullException)
@@ -129,7 +137,7 @@
try
{
- ProxyGenerator.CreateClassProxy(
+ m_generator.CreateClassProxy(
typeof(SpecializedServiceClass), null );
}
catch(ArgumentNullException)
@@ -141,7 +149,7 @@
[Test]
public void TestGenerationSimpleInterface()
{
- object proxy = ProxyGenerator.CreateProxy(
+ object proxy = m_generator.CreateProxy(
typeof(IMyInterface), new StandardInvocationHandler( new MyInterfaceImpl() ) );
AssertNotNull( proxy );
@@ -161,7 +169,7 @@
[Test]
public void TestGenerationWithInterfaceHeritage()
{
- object proxy = ProxyGenerator.CreateProxy(
+ object proxy = m_generator.CreateProxy(
typeof(IMySecondInterface), new StandardInvocationHandler( new MySecondInterfaceImpl() ) );
AssertNotNull( proxy );
@@ -185,7 +193,7 @@
{
ServiceStatusImpl service = new ServiceStatusImpl();
- object proxy = ProxyGenerator.CreateProxy(
+ object proxy = m_generator.CreateProxy(
typeof(IServiceStatus), new StandardInvocationHandler( service ) );
AssertNotNull( proxy );
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 Thu Sep 9 07:06:15 2004
@@ -42,21 +42,31 @@
/// <example>
/// <code>
/// MyInvocationHandler handler = ...
+ /// ProxyGenerator generator = new ProxyGenerator();
/// IInterfaceExposed proxy =
- /// ProxyGenerator.CreateProxy( new Type[] { typeof(IInterfaceExposed) }, handler );
+ /// generator.CreateProxy( new Type[] { typeof(IInterfaceExposed) }, handler );
/// </code>
/// </example>
- public abstract class ProxyGenerator
+ public class ProxyGenerator
{
- private static IProxyBuilder m_builder = new ProxyBuilderImpl();
+ private IProxyBuilder m_builder;
- public static IProxyBuilder ProxyBuilder
+ public ProxyGenerator(IProxyBuilder builder)
+ {
+ m_builder = builder;
+ }
+
+ public ProxyGenerator() : this( new ProxyBuilderImpl() )
+ {
+ }
+
+ public IProxyBuilder ProxyBuilder
{
get { return m_builder; }
set { m_builder = value; }
}
- public static object CreateClassProxy(Type baseClass, IInvocationHandler handler)
+ public virtual object CreateClassProxy(Type baseClass, IInvocationHandler handler)
{
AssertCreateClassProxyArguments(baseClass, handler);
@@ -64,7 +74,7 @@
return CreateProxyInstance( newType, handler );
}
- public static object CreateCustomClassProxy(Type baseClass, IInvocationHandler handler,
+ public virtual object CreateCustomClassProxy(Type baseClass, IInvocationHandler handler,
EnhanceTypeDelegate enhance,
ScreenInterfacesDelegate screenInterfaces,
ConstructorArgumentsDelegate constructorArguments)
@@ -82,7 +92,7 @@
/// <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)
+ public virtual object CreateProxy(Type theInterface, IInvocationHandler handler)
{
return CreateProxy(new Type[] {theInterface}, handler);
}
@@ -94,7 +104,7 @@
/// <param name="interfaces">Array of interfaces to be implemented</param>
/// <param name="handler">instance of <see cref="IInvocationHandler"/></param>
/// <returns>Proxy instance</returns>
- public static object CreateProxy(Type[] interfaces, IInvocationHandler handler)
+ public virtual object CreateProxy(Type[] interfaces, IInvocationHandler handler)
{
AssertCreateProxyArguments(interfaces, handler);
@@ -111,7 +121,7 @@
/// <param name="screenInterfaces"></param>
/// <param name="constructorArguments"></param>
/// <returns></returns>
- public static object CreateCustomProxy(Type theInterface,
+ public virtual object CreateCustomProxy(Type theInterface,
IInvocationHandler handler, EnhanceTypeDelegate enhance,
ScreenInterfacesDelegate screenInterfaces,
ConstructorArgumentsDelegate constructorArguments )
@@ -129,7 +139,7 @@
/// <param name="screenInterfaces"></param>
/// <param name="constructorArguments"></param>
/// <returns></returns>
- public static object CreateCustomProxy(Type[] interfaces,
+ public virtual object CreateCustomProxy(Type[] interfaces,
IInvocationHandler handler, EnhanceTypeDelegate enhance,
ScreenInterfacesDelegate screenInterfaces,
ConstructorArgumentsDelegate constructorArguments )
@@ -139,12 +149,12 @@
return CreateCustomProxyInstance( newType, handler, constructorArguments );
}
- private static object CreateProxyInstance(Type type, IInvocationHandler handler)
+ protected virtual object CreateProxyInstance(Type type, IInvocationHandler handler)
{
return Activator.CreateInstance(type, new object[] {handler});
}
- private static object CreateCustomProxyInstance(Type type, IInvocationHandler handler, ConstructorArgumentsDelegate constructorArguments)
+ protected virtual object CreateCustomProxyInstance(Type type, IInvocationHandler handler, ConstructorArgumentsDelegate constructorArguments)
{
if (constructorArguments != null)
{
@@ -157,7 +167,7 @@
}
}
- private static void AssertCreateProxyArguments(Type[] interfaces, IInvocationHandler handler)
+ protected static void AssertCreateProxyArguments(Type[] interfaces, IInvocationHandler handler)
{
if (interfaces == null)
{
@@ -173,7 +183,7 @@
}
}
- private static void AssertCreateClassProxyArguments(Type baseClass, IInvocationHandler handler)
+ protected static void AssertCreateClassProxyArguments(Type baseClass, IInvocationHandler handler)
{
if (baseClass == null)
{