Author: hammett
Date: Tue Aug 31 11:44:51 2004
New Revision: 37257

Modified:
   avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/BaseKernel.cs
   
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Handler/AbstractHandler.cs
   avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IKernelEvents.cs
   avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernel.sln
Log:
Event infraestructure.

Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/BaseKernel.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/BaseKernel.cs 
(original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/BaseKernel.cs Tue 
Aug 31 11:44:51 2004
@@ -27,6 +27,7 @@
        public class BaseKernel : IKernel, IDisposable

        {

         private static readonly object ComponentRegisteredEvent = new object();

+        private static readonly object ComponentInterceptionEvent = new object();

         private static readonly object ComponentCreatedEvent = new object();

         private static readonly object ComponentDestroyedEvent = new object();

 

@@ -97,10 +98,44 @@
             OnNewHandler( model, key, service, implementation, handler);

         }

 

+        /// <summary>

+        /// Pending

+        /// </summary>

+        /// <value></value>

         public event ComponentDataDelegate ComponentRegistered

         {

             add { m_events.AddHandler(ComponentRegisteredEvent, value); }

             remove { m_events.RemoveHandler(ComponentRegisteredEvent, value); }

+        }

+

+        /// <summary>

+        /// Pending

+        /// </summary>

+        /// <value></value>

+        public event InterceptionDelegate ComponentInterception

+        {

+            add { m_events.AddHandler(ComponentInterceptionEvent, value); }

+            remove { m_events.RemoveHandler(ComponentInterceptionEvent, value); }

+        }

+

+        /// <summary>

+        /// Pending

+        /// </summary>

+        /// <value></value>

+        public event ComponentInstanceDelegate ComponentCreated

+        {

+            add { m_events.AddHandler(ComponentCreatedEvent, value); }

+            remove { m_events.RemoveHandler(ComponentCreatedEvent, value); }

+        }

+

+        /// <summary>

+        /// Pending

+        /// </summary>

+        /// <value></value>

+        public event ComponentInstanceDelegate ComponentDestroyed

+        {

+            add { m_events.AddHandler(ComponentDestroyedEvent, value); }

+            remove { m_events.RemoveHandler(ComponentDestroyedEvent, value); }

         }

 

         /// <summary>


Modified: 
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Handler/AbstractHandler.cs
==============================================================================
--- 
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Handler/AbstractHandler.cs
    (original)
+++ 
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Handler/AbstractHandler.cs
    Tue Aug 31 11:44:51 2004
@@ -67,7 +67,10 @@
                        {
                                object instance = m_lifestyleManager.Resolve();
 
-                               RegisterInstance( ref instance );
+                // TODO: Proxy

+                // instance = RaiseInterceptorEvent( instance );

+

+                RegisterInstance( instance );
 
                                return instance;
                        }
@@ -104,9 +107,9 @@
 
                #endregion
 
-               protected virtual void RegisterInstance( ref object instance )
+               protected virtual void RegisterInstance( object instance )
                {
-                       // RaiseComponentCreatedEvent( ref instance );
+                       RaiseComponentCreatedEvent( instance );
 
                        if (!HasInstance( instance, false ))
                        {
@@ -117,10 +120,10 @@
                }
 
                protected virtual void UnregisterInstance( object instance )
-               {
-                       // RaiseComponentCreatedEvent( instance );
-
-                       if (m_instances.Count == 0)
+               {

+            RaiseComponentDestroyedEvent( instance );

+

+            if (m_instances.Count == 0)
                        {
                                return;
                        }
@@ -152,34 +155,28 @@
                        return false;
                }
 
-        /*
-               protected virtual void RaiseComponentCreatedEvent( ref object instance 
)
-               {
-                       IEventManager eventManager = (IEventManager) 
m_kernel.GetSubsystem( KernelConstants.EVENTS );
-                       
-                       if (eventManager != null)
-                       {
-                               // We're passing the instance and allowing the 
listeners to
-                               // replace/wrap the instance as they wish.
-                               EventManagerData data = new EventManagerData( 
m_componentModel, instance );
-                               
-                               eventManager.OnComponentCreated( data );
-
-                               /// 90% of cases we're setting the same instance back
-                               instance = data.Instance;
-                       }
-               }
-
                protected virtual void RaiseComponentCreatedEvent( object instance )
-               {
-                       IEventManager eventManager = (IEventManager) 
m_kernel.GetSubsystem( KernelConstants.EVENTS );
-                       
-                       if (eventManager != null)
-                       {
-                               EventManagerData data = new EventManagerData( 
m_componentModel, instance );
-                               eventManager.OnComponentDestroyed( data );
-                       }
-               }
-        */
-       }
+               {

+            ComponentInstanceDelegate createdEvent = m_kernel.ComponentCreated;

+            

+            if (createdEvent == null)

+            {

+                return;

+            }

+

+            createdEvent( m_componentModel, this, instance );

+        }

+

+        protected virtual void RaiseComponentDestroyedEvent(object instance)

+        {

+            ComponentInstanceDelegate destroyedEvent = m_kernel.ComponentDestroyed;

+

+            if (destroyedEvent == null)

+            {

+                return;

+            }

+

+            destroyedEvent(m_componentModel, this, instance);

+        }

+    }
 }

Modified: 
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IKernelEvents.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IKernelEvents.cs     
 (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IKernelEvents.cs     
 Tue Aug 31 11:44:51 2004
@@ -21,9 +21,9 @@
 

     public delegate void ComponentDataDelegate( IComponentModel model, String key, 
IHandler handler );

 

-       public delegate void InterceptionDelegate( IComponentModel model, String key, 
IHandler handler, IInterceptedComponent interceptedComponent );

+       public delegate void InterceptionDelegate( IComponentModel model, IHandler 
handler, IInterceptedComponent interceptedComponent );

 

-       public delegate void ComponentInstanceDelegate( IComponentModel model, String 
key, IHandler handler, object instance );

+       public delegate void ComponentInstanceDelegate( IComponentModel model, 
IHandler handler, object instance );

 

     /// <summary>

     /// 

@@ -34,15 +34,20 @@
         /// 

         /// </summary>

         event ComponentDataDelegate ComponentRegistered;

-       

-               /// <summary>

+

+        /// <summary>

+        /// 

+        /// </summary>

+        event InterceptionDelegate ComponentInterception;

+

+        /// <summary>

                /// 

                /// </summary>

-               // event InterceptionDelegate ComponentCreated;

+        event ComponentInstanceDelegate ComponentCreated;

 

-               /// <summary>

+        /// <summary>

                /// 

                /// </summary>

-               // event ComponentInstanceDelegate ComponentDestroyed;

+               event ComponentInstanceDelegate ComponentDestroyed;

        }

 }


Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernel.sln
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernel.sln      
 (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernel.sln      
 Tue Aug 31 11:44:51 2004
@@ -1,29 +1,25 @@
-Microsoft Visual Studio Solution File, Format Version 8.00

+Microsoft Visual Studio Solution File, Format Version 9.00

+# Visual C# Express 2005

 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = 
"Apache.Avalon.Castle.MicroKernel", "Apache.Avalon.Castle.MicroKernel.csproj", 
"{1E57B734-BA4B-4ADE-B4C2-78C7D4993AD4}"

-       ProjectSection(ProjectDependencies) = postProject

-       EndProjectSection

 EndProject

 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = 
"Apache.Avalon.Castle.MicroKernel.Test", 
"MicroKernelTest\Apache.Avalon.Castle.MicroKernel.Test.csproj", 
"{50442F0D-987F-4A8D-B38C-DFA855B9249E}"

-       ProjectSection(ProjectDependencies) = postProject

-       EndProjectSection

 EndProject

 Global

-       GlobalSection(SolutionConfiguration) = preSolution

-               Debug = Debug

-               Release = Release

+       GlobalSection(SolutionConfigurationPlatforms) = preSolution

+               Debug|Any CPU = Debug|Any CPU

+               Release|Any CPU = Release|Any CPU

        EndGlobalSection

-       GlobalSection(ProjectConfiguration) = postSolution

-               {1E57B734-BA4B-4ADE-B4C2-78C7D4993AD4}.Debug.ActiveCfg = Debug|.NET

-               {1E57B734-BA4B-4ADE-B4C2-78C7D4993AD4}.Debug.Build.0 = Debug|.NET

-               {1E57B734-BA4B-4ADE-B4C2-78C7D4993AD4}.Release.ActiveCfg = Release|.NET

-               {1E57B734-BA4B-4ADE-B4C2-78C7D4993AD4}.Release.Build.0 = Release|.NET

-               {50442F0D-987F-4A8D-B38C-DFA855B9249E}.Debug.ActiveCfg = Debug|.NET

-               {50442F0D-987F-4A8D-B38C-DFA855B9249E}.Debug.Build.0 = Debug|.NET

-               {50442F0D-987F-4A8D-B38C-DFA855B9249E}.Release.ActiveCfg = Release|.NET

-               {50442F0D-987F-4A8D-B38C-DFA855B9249E}.Release.Build.0 = Release|.NET

+       GlobalSection(ProjectConfigurationPlatforms) = postSolution

+               {1E57B734-BA4B-4ADE-B4C2-78C7D4993AD4}.Debug|Any CPU.ActiveCfg = 
Debug|Any CPU

+               {1E57B734-BA4B-4ADE-B4C2-78C7D4993AD4}.Debug|Any CPU.Build.0 = 
Debug|Any CPU

+               {1E57B734-BA4B-4ADE-B4C2-78C7D4993AD4}.Release|Any CPU.ActiveCfg = 
Release|Any CPU

+               {1E57B734-BA4B-4ADE-B4C2-78C7D4993AD4}.Release|Any CPU.Build.0 = 
Release|Any CPU

+               {50442F0D-987F-4A8D-B38C-DFA855B9249E}.Debug|Any CPU.ActiveCfg = 
Debug|Any CPU

+               {50442F0D-987F-4A8D-B38C-DFA855B9249E}.Debug|Any CPU.Build.0 = 
Debug|Any CPU

+               {50442F0D-987F-4A8D-B38C-DFA855B9249E}.Release|Any CPU.ActiveCfg = 
Release|Any CPU

+               {50442F0D-987F-4A8D-B38C-DFA855B9249E}.Release|Any CPU.Build.0 = 
Release|Any CPU

        EndGlobalSection

-       GlobalSection(ExtensibilityGlobals) = postSolution

-       EndGlobalSection

-       GlobalSection(ExtensibilityAddIns) = postSolution

+       GlobalSection(SolutionProperties) = preSolution

+               HideSolutionNode = FALSE

        EndGlobalSection

 EndGlobal


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to