|
From: <fab...@us...> - 2009-05-18 23:00:57
|
Revision: 4345
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4345&view=rev
Author: fabiomaulo
Date: 2009-05-18 23:00:41 +0000 (Mon, 18 May 2009)
Log Message:
-----------
- Base abstract class for internal bytecode providers (with ActivatorObjectsFactory)
- Refactoring all internals bytecode providers.
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Bytecode/CodeDom/BytecodeProviderImpl.cs
trunk/nhibernate/src/NHibernate/Bytecode/IBytecodeProvider.cs
trunk/nhibernate/src/NHibernate/Bytecode/Lightweight/BytecodeProviderImpl.cs
trunk/nhibernate/src/NHibernate/Bytecode/NullBytecodeProvider.cs
trunk/nhibernate/src/NHibernate/NHibernate.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate/Bytecode/AbstractBytecodeProvider.cs
Added: trunk/nhibernate/src/NHibernate/Bytecode/AbstractBytecodeProvider.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Bytecode/AbstractBytecodeProvider.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Bytecode/AbstractBytecodeProvider.cs 2009-05-18 23:00:41 UTC (rev 4345)
@@ -0,0 +1,67 @@
+using System;
+using NHibernate.Properties;
+using NHibernate.Util;
+
+namespace NHibernate.Bytecode
+{
+ public abstract class AbstractBytecodeProvider : IBytecodeProvider, IInjectableProxyFactoryFactory
+ {
+ private readonly IObjectsFactory objectsFactory = new ActivatorObjectsFactory();
+ protected System.Type proxyFactoryFactory;
+
+ #region IBytecodeProvider Members
+
+ public virtual IProxyFactoryFactory ProxyFactoryFactory
+ {
+ get
+ {
+ if (proxyFactoryFactory != null)
+ {
+ try
+ {
+ return (IProxyFactoryFactory)Activator.CreateInstance(proxyFactoryFactory);
+ }
+ catch (Exception e)
+ {
+ throw new HibernateByteCodeException("Failed to create an instance of '" + proxyFactoryFactory.FullName + "'!", e);
+ }
+ }
+
+ throw new ProxyFactoryFactoryNotConfiguredException();
+ }
+ }
+
+ public abstract IReflectionOptimizer GetReflectionOptimizer(System.Type clazz, IGetter[] getters, ISetter[] setters);
+
+ public virtual IObjectsFactory ObjectsFactory
+ {
+ get { return objectsFactory; }
+ }
+
+ #endregion
+
+ #region IInjectableProxyFactoryFactory Members
+
+ public virtual void SetProxyFactoryFactory(string typeName)
+ {
+ System.Type pffc;
+ try
+ {
+ pffc = ReflectHelper.ClassForName(typeName);
+ }
+ catch (Exception he)
+ {
+ throw new UnableToLoadProxyFactoryFactoryException(typeName, he);
+ }
+
+ if (typeof(IProxyFactoryFactory).IsAssignableFrom(pffc) == false)
+ {
+ var he = new HibernateByteCodeException(pffc.FullName + " does not implement " + typeof(IProxyFactoryFactory).FullName);
+ throw he;
+ }
+ proxyFactoryFactory = pffc;
+ }
+
+ #endregion
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/Bytecode/CodeDom/BytecodeProviderImpl.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Bytecode/CodeDom/BytecodeProviderImpl.cs 2009-05-18 22:28:37 UTC (rev 4344)
+++ trunk/nhibernate/src/NHibernate/Bytecode/CodeDom/BytecodeProviderImpl.cs 2009-05-18 23:00:41 UTC (rev 4345)
@@ -5,42 +5,20 @@
using log4net;
using Microsoft.CSharp;
using NHibernate.Properties;
-using NHibernate.Util;
namespace NHibernate.Bytecode.CodeDom
{
/// <summary>
/// CodeDOM-based bytecode provider.
/// </summary>
- public class BytecodeProviderImpl : IBytecodeProvider, IInjectableProxyFactoryFactory
+ public class BytecodeProviderImpl : AbstractBytecodeProvider
{
private static readonly ILog log = LogManager.GetLogger(typeof (BytecodeProviderImpl));
- private System.Type proxyFactoryFactory;
#region IBytecodeProvider Members
- public IProxyFactoryFactory ProxyFactoryFactory
+ public override IReflectionOptimizer GetReflectionOptimizer(System.Type clazz, IGetter[] getters, ISetter[] setters)
{
- get
- {
- if (proxyFactoryFactory != null)
- {
- try
- {
- return (IProxyFactoryFactory) Activator.CreateInstance(proxyFactoryFactory);
- }
- catch (Exception e)
- {
- throw new HibernateByteCodeException("Failed to create an instance of '" + proxyFactoryFactory.FullName + "'!", e);
- }
- }
-
- throw new ProxyFactoryFactoryNotConfiguredException();
- }
- }
-
- public IReflectionOptimizer GetReflectionOptimizer(System.Type clazz, IGetter[] getters, ISetter[] setters)
- {
if (clazz.IsValueType)
{
// Cannot create optimizer for value types - the setter method will not work.
@@ -52,30 +30,6 @@
#endregion
- #region Implementation of IInjectableProxyFactoryFactory
-
- public void SetProxyFactoryFactory(string typeName)
- {
- System.Type pffc;
- try
- {
- pffc = ReflectHelper.ClassForName(typeName);
- }
- catch (Exception he)
- {
- throw new UnableToLoadProxyFactoryFactoryException(typeName, he);
- }
-
- if (typeof (IProxyFactoryFactory).IsAssignableFrom(pffc) == false)
- {
- var he = new HibernateByteCodeException(pffc.FullName + " does not implement " + typeof(IProxyFactoryFactory).FullName);
- throw he;
- }
- proxyFactoryFactory = pffc;
- }
-
- #endregion
-
#region Nested type: Generator
public class Generator
Modified: trunk/nhibernate/src/NHibernate/Bytecode/IBytecodeProvider.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Bytecode/IBytecodeProvider.cs 2009-05-18 22:28:37 UTC (rev 4344)
+++ trunk/nhibernate/src/NHibernate/Bytecode/IBytecodeProvider.cs 2009-05-18 23:00:41 UTC (rev 4345)
@@ -20,6 +20,8 @@
/// <returns>The reflection optimization delegate.</returns>
IReflectionOptimizer GetReflectionOptimizer(System.Type clazz, IGetter[] getters, ISetter[] setters);
+ IObjectsFactory ObjectsFactory { get; }
+
// <summary> Generate a ClassTransformer capable of performing bytecode manipulation. </summary>
// <param name="classFilter">
// filter used to limit which classes are to be instrumented via this ClassTransformer.
@@ -31,6 +33,5 @@
// <returns> The appropriate ClassTransformer. </returns>
// Not ported
//ClassTransformer getTransformer(ClassFilter classFilter, FieldFilter fieldFilter);
-
}
}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/Bytecode/Lightweight/BytecodeProviderImpl.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Bytecode/Lightweight/BytecodeProviderImpl.cs 2009-05-18 22:28:37 UTC (rev 4344)
+++ trunk/nhibernate/src/NHibernate/Bytecode/Lightweight/BytecodeProviderImpl.cs 2009-05-18 23:00:41 UTC (rev 4345)
@@ -1,6 +1,4 @@
-using System;
using NHibernate.Properties;
-using NHibernate.Util;
namespace NHibernate.Bytecode.Lightweight
{
@@ -12,31 +10,11 @@
/// Used in <see cref="NHibernate.Persister.Entity.AbstractEntityPersister"/> and
/// <see cref="NHibernate.Type.ComponentType"/>
/// </remarks>
- public class BytecodeProviderImpl : IBytecodeProvider, IInjectableProxyFactoryFactory
+ public class BytecodeProviderImpl : AbstractBytecodeProvider
{
- private System.Type proxyFactoryFactory;
#region IBytecodeProvider Members
- public virtual IProxyFactoryFactory ProxyFactoryFactory
- {
- get
- {
- if (proxyFactoryFactory != null)
- {
- try
- {
- return (IProxyFactoryFactory) Activator.CreateInstance(proxyFactoryFactory);
- }
- catch (Exception e)
- {
- throw new HibernateByteCodeException("Failed to create an instance of '" + proxyFactoryFactory.FullName + "'!", e);
- }
- }
- throw new ProxyFactoryFactoryNotConfiguredException();
- }
- }
-
/// <summary>
/// Generate the IReflectionOptimizer object
/// </summary>
@@ -44,35 +22,11 @@
/// <param name="setters">Array of setters</param>
/// <param name="getters">Array of getters</param>
/// <returns><see langword="null" /> if the generation fails</returns>
- public IReflectionOptimizer GetReflectionOptimizer(System.Type mappedClass, IGetter[] getters, ISetter[] setters)
+ public override IReflectionOptimizer GetReflectionOptimizer(System.Type mappedClass, IGetter[] getters, ISetter[] setters)
{
return new ReflectionOptimizer(mappedClass, getters, setters);
}
#endregion
-
- #region IInjectableProxyFactoryFactory Members
-
- public void SetProxyFactoryFactory(string typeName)
- {
- System.Type pffc;
- try
- {
- pffc = ReflectHelper.ClassForName(typeName);
- }
- catch (Exception he)
- {
- throw new UnableToLoadProxyFactoryFactoryException(typeName, he);
- }
-
- if (typeof (IProxyFactoryFactory).IsAssignableFrom(pffc) == false)
- {
- var he = new HibernateByteCodeException(pffc.FullName + " does not implement " + typeof(IProxyFactoryFactory).FullName);
- throw he;
- }
- proxyFactoryFactory = pffc;
- }
-
- #endregion
}
}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/Bytecode/NullBytecodeProvider.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Bytecode/NullBytecodeProvider.cs 2009-05-18 22:28:37 UTC (rev 4344)
+++ trunk/nhibernate/src/NHibernate/Bytecode/NullBytecodeProvider.cs 2009-05-18 23:00:41 UTC (rev 4345)
@@ -1,6 +1,4 @@
-using System;
using NHibernate.Properties;
-using NHibernate.Util;
namespace NHibernate.Bytecode
{
@@ -8,60 +6,15 @@
/// A <see cref="IBytecodeProvider" /> implementation that returns
/// <see langword="null" />, disabling reflection optimization.
/// </summary>
- public class NullBytecodeProvider : IBytecodeProvider, IInjectableProxyFactoryFactory
+ public class NullBytecodeProvider : AbstractBytecodeProvider
{
- private System.Type proxyFactoryFactory;
-
#region IBytecodeProvider Members
- public IProxyFactoryFactory ProxyFactoryFactory
+ public override IReflectionOptimizer GetReflectionOptimizer(System.Type clazz, IGetter[] getters, ISetter[] setters)
{
- get
- {
- if (proxyFactoryFactory != null)
- {
- try
- {
- return (IProxyFactoryFactory) Activator.CreateInstance(proxyFactoryFactory);
- }
- catch (Exception e)
- {
- throw new HibernateByteCodeException("Failed to create an instance of '" + proxyFactoryFactory.FullName + "'!", e);
- }
- }
- throw new ProxyFactoryFactoryNotConfiguredException();
- }
- }
-
- public IReflectionOptimizer GetReflectionOptimizer(System.Type clazz, IGetter[] getters, ISetter[] setters)
- {
return null;
}
#endregion
-
- #region Implementation of IInjectableProxyFactoryFactory
-
- public void SetProxyFactoryFactory(string typeName)
- {
- System.Type pffc;
- try
- {
- pffc = ReflectHelper.ClassForName(typeName);
- }
- catch (Exception he)
- {
- throw new UnableToLoadProxyFactoryFactoryException(typeName, he);
- }
-
- if (typeof (IProxyFactoryFactory).IsAssignableFrom(pffc) == false)
- {
- var he = new HibernateByteCodeException(pffc.FullName + " does not implement " + typeof(IProxyFactoryFactory).FullName);
- throw he;
- }
- proxyFactoryFactory = pffc;
- }
-
- #endregion
}
}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-05-18 22:28:37 UTC (rev 4344)
+++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-05-18 23:00:41 UTC (rev 4345)
@@ -449,6 +449,7 @@
<Compile Include="AdoNet\Util\FormatStyle.cs" />
<Compile Include="AdoNet\Util\IFormatter.cs" />
<Compile Include="AdoNet\Util\SqlStatementLogger.cs" />
+ <Compile Include="Bytecode\AbstractBytecodeProvider.cs" />
<Compile Include="Bytecode\ActivatorObjectsFactory.cs" />
<Compile Include="Bytecode\HibernateByteCodeException.cs" />
<Compile Include="Bytecode\IObjectsFactory.cs" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|