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. |