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/08/30 16:56:40 UTC
svn commit: rev 37207 - in avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel: . Concerns Concerns/Default Factory/Default Handler Handler/Default MicroKernelTest MicroKernelTest/Concerns MicroKernelTest/Lifestyle Model Model/Default Subsystems Subsystems/Events/Default
Author: hammett
Date: Mon Aug 30 07:56:39 2004
New Revision: 37207
Added:
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/DefaultAvalonKernel.cs (contents, props changed)
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IAvalonKernel.cs (contents, props changed)
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IContainerFacility.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IKernel.cs (contents, props changed)
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/DefaultAvalonKernelTestCase.cs
Removed:
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/AvalonKernel.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/DefaultKernel.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Kernel.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/DefaultKernelTestCase.cs
Modified:
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Apache.Avalon.Castle.MicroKernel.csproj
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/BaseKernel.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/ConcernManager.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/Default/AbstractConcern.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/Default/EnableLookupConcern.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/Default/StartConcern.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/ICommissionConcern.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/IConcern.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Factory/Default/SimpleComponentFactory.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Handler/AbstractHandler.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Handler/Default/DefaultHandler.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Handler/Default/SimpleHandler.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Handler/IHandler.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IKernelSubsystem.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IResolver.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernel.sln
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/AbstractHandlerTestCase.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/Apache.Avalon.Castle.MicroKernel.Test.csproj
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/AssemblerTestCase.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/BaseKernelTestCase.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/ConcernManagerTestCase.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/Concerns/AbstractConcernTestCase.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/DefaultComponentModelBuilderTestCase.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/DependencyDisposeTestCase.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/EventManagerTestCase.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/EventSubsystemTestCase.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/Lifestyle/LifestyleManagerTestCase.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/LoggerManagerTestCase.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/SimpleComponentFactoryTestCase.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/Default/DefaultComponentModel.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/Default/DefaultComponentModelBuilder.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/IComponentModel.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/IConstructionModel.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/IDependencyModel.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/ModelBuilderException.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Subsystems/AbstractSubsystem.cs
avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Subsystems/Events/Default/EventManager.cs
Log:
Refactoring 1
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Apache.Avalon.Castle.MicroKernel.csproj
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Apache.Avalon.Castle.MicroKernel.csproj (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Apache.Avalon.Castle.MicroKernel.csproj Mon Aug 30 07:56:39 2004
@@ -104,32 +104,37 @@
BuildAction = "Compile"
/>
<File
- RelPath = "AvalonKernel.cs"
+ RelPath = "BaseKernel.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
- RelPath = "BaseKernel.cs"
+ RelPath = "DefaultAvalonKernel.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
- RelPath = "DefaultKernel.cs"
+ RelPath = "IAvalonKernel.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
- RelPath = "IKernelSubsystem.cs"
+ RelPath = "IContainerFacility.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
- RelPath = "IResolver.cs"
+ RelPath = "IKernel.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "IKernelSubsystem.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
- RelPath = "Kernel.cs"
+ RelPath = "IResolver.cs"
SubType = "Code"
BuildAction = "Compile"
/>
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 Mon Aug 30 07:56:39 2004
@@ -16,18 +16,16 @@
{
using System;
using System.Collections;
- using System.Collections.Specialized;
- using Apache.Avalon.DynamicProxy;
using Apache.Avalon.Castle.MicroKernel.Model;
using Apache.Avalon.Castle.MicroKernel.Subsystems.Lookup.Default;
using Apache.Avalon.Castle.MicroKernel.Subsystems.Events;
using Apache.Avalon.Castle.MicroKernel.Subsystems.Events.Default;
/// <summary>
- /// Summary description for BaseKernel.
+ /// Base implementation of <see cref="IKernel"/>
/// </summary>
- public class BaseKernel : Kernel
+ public class BaseKernel : IKernel
{
protected Hashtable m_components;
@@ -39,10 +37,10 @@
protected IHandlerFactory m_handlerFactory;
- protected ILifestyleManagerFactory m_lifestyleManagerFactory;
-
protected IComponentModelBuilder m_componentModelBuilder;
+ protected ILifestyleManagerFactory m_lifestyleManagerFactory;
+
/// <summary>
///
/// </summary>
@@ -54,20 +52,19 @@
m_handlerFactory = new Handler.Default.SimpleHandlerFactory();
m_dependencyToSatisfy = new Hashtable();
m_componentModelBuilder = new Model.Default.DefaultComponentModelBuilder( this );
- m_lifestyleManagerFactory = new Lifestyle.Default.SimpleLifestyleManagerFactory();
-
- AddSubsystem( KernelConstants.LOOKUP, new LookupCriteriaMatcher() );
- AddSubsystem( KernelConstants.EVENTS, new EventManager() );
- }
-
+ m_lifestyleManagerFactory = new Lifestyle.Default.SimpleLifestyleManagerFactory();
+
+ InitializeSubsystems();
+ }
+
#region Kernel Members
- /// <summary>
- ///
- /// </summary>
- /// <param name="key"></param>
- /// <param name="service"></param>
- /// <param name="implementation"></param>
+ /// <summary>
+ /// Adds a component to kernel.
+ /// </summary>
+ /// <param name="key">The unique key that identifies the component</param>
+ /// <param name="service">The service exposed by this component</param>
+ /// <param name="implementation">The actual implementation</param>
public void AddComponent( String key, Type service, Type implementation )
{
AssertUtil.ArgumentNotNull( key, "key" );
@@ -98,33 +95,6 @@
}
/// <summary>
- ///
- /// </summary>
- /// <param name="flags"></param>
- /// <param name="aspect"></param>
- public void AddAspect( AspectPointCutFlags flags, IAspect aspect )
- {
- AssertUtil.ArgumentNotNull( aspect, "aspect" );
-
- /*
- if ((AspectPointCutFlags.Before & flags) != 0)
- {
- lock(m_aspectBefore)
- {
- m_aspectBefore.Add( aspect );
- }
- }
- if ((AspectPointCutFlags.After & flags) != 0)
- {
- lock(m_aspectAfter)
- {
- m_aspectAfter.Add( aspect );
- }
- }
- */
- }
-
- /// <summary>
/// Adds a subsystem.
/// </summary>
/// <param name="key">Name of this subsystem</param>
@@ -198,20 +168,6 @@
}
}
- public IAspect[] GetAspects( AspectPointCutFlags pointcut )
- {
- if (pointcut == AspectPointCutFlags.Before)
- {
- return (IAspect[]) m_aspectBefore.ToArray( typeof(IAspect) );
- }
- else if (pointcut == AspectPointCutFlags.After)
- {
- return (IAspect[]) m_aspectAfter.ToArray( typeof(IAspect) );
- }
-
- return new IAspect[0];
- }
-
/// <summary>
///
/// </summary>
@@ -266,6 +222,15 @@
}
#endregion
+
+ /// <summary>
+ ///
+ /// </summary>
+ protected virtual void InitializeSubsystems()
+ {
+ AddSubsystem( KernelConstants.LOOKUP, new LookupCriteriaMatcher() );
+ AddSubsystem( KernelConstants.EVENTS, new EventManager() );
+ }
private void OnNewHandler( String key, Type service, Type implementation, IHandler handler )
{
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/ConcernManager.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/ConcernManager.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/ConcernManager.cs Mon Aug 30 07:56:39 2004
@@ -94,7 +94,7 @@
}
}
- public IConcern GetCommissionChain( Kernel kernel )
+ public IConcern GetCommissionChain( IKernel kernel )
{
ArrayList concerns = new ArrayList( m_commissionConcerns );
concerns.Insert( 0, m_creationConcern );
@@ -112,7 +112,7 @@
return next;
}
- public IConcern GetDecommissionChain( Kernel kernel )
+ public IConcern GetDecommissionChain( IKernel kernel )
{
ArrayList concerns = new ArrayList( m_decommissionConcerns );
concerns.Add( m_destructionConcern );
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/Default/AbstractConcern.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/Default/AbstractConcern.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/Default/AbstractConcern.cs Mon Aug 30 07:56:39 2004
@@ -24,7 +24,7 @@
public abstract class AbstractConcern : IConcern
{
protected IConcern m_next;
- protected Kernel m_kernel;
+ protected IKernel m_kernel;
public AbstractConcern(IConcern next)
{
@@ -33,12 +33,12 @@
#region IConcern Members
- public virtual void Init(Kernel kernel)
+ public virtual void Init( IKernel kernel )
{
m_kernel = kernel;
}
- public virtual void Apply(IComponentModel model, object component)
+ public virtual void Apply( IComponentModel model, object component )
{
if (Next != null)
{
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/Default/EnableLookupConcern.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/Default/EnableLookupConcern.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/Default/EnableLookupConcern.cs Mon Aug 30 07:56:39 2004
@@ -68,10 +68,10 @@
/// </summary>
public class LookupManager : ILookupManager
{
- Kernel m_kernel;
+ IKernel m_kernel;
HybridDictionary m_key2handler = new HybridDictionary();
- public LookupManager( Kernel kernel, IDependencyModel[] dependencies )
+ public LookupManager( IKernel kernel, IDependencyModel[] dependencies )
{
m_kernel = kernel;
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/Default/StartConcern.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/Default/StartConcern.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/Default/StartConcern.cs Mon Aug 30 07:56:39 2004
@@ -1,38 +1,35 @@
-// 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.Castle.MicroKernel.Concerns.Default
-{
- using System;
-
- using Apache.Avalon.Framework;
- using Apache.Avalon.Castle.MicroKernel.Model;
-
- /// <summary>
- /// Summary description for StartConcern.
- /// </summary>
- public class StartConcern : AbstractConcern, ICommissionConcern
- {
- public StartConcern(IConcern next) : base(next)
- {
- }
-
- public override void Apply(IComponentModel model, object component)
- {
- ContainerUtil.Start( component );
-
- base.Apply( model, component );
- }
- }
-}
+using Apache.Avalon.Castle.MicroKernel.Model;
+using Apache.Avalon.Framework;
+// 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.Castle.MicroKernel.Concerns.Default
+{
+ /// <summary>
+ /// Summary description for StartConcern.
+ /// </summary>
+ public class StartConcern : AbstractConcern, ICommissionConcern
+ {
+ public StartConcern(IConcern next) : base(next)
+ {
+ }
+
+ public override void Apply(IComponentModel model, object component)
+ {
+ ContainerUtil.Start(component);
+
+ base.Apply(model, component);
+ }
+ }
+}
\ No newline at end of file
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/ICommissionConcern.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/ICommissionConcern.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/ICommissionConcern.cs Mon Aug 30 07:56:39 2004
@@ -1,25 +1,23 @@
-// 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.Castle.MicroKernel.Concerns
-{
- using System;
-
- /// <summary>
- /// Summary description for ICommissionConcern.
- /// </summary>
- public interface ICommissionConcern : IConcern
- {
- }
-}
+ // 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.Castle.MicroKernel.Concerns
+{
+ /// <summary>
+ /// Summary description for ICommissionConcern.
+ /// </summary>
+ public interface ICommissionConcern : IConcern
+ {
+ }
+}
\ No newline at end of file
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/IConcern.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/IConcern.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Concerns/IConcern.cs Mon Aug 30 07:56:39 2004
@@ -23,7 +23,7 @@
/// </summary>
public interface IConcern
{
- void Init( Kernel kernel );
+ void Init( IKernel kernel );
void Apply( IComponentModel model, object component );
Added: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/DefaultAvalonKernel.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/DefaultAvalonKernel.cs Mon Aug 30 07:56:39 2004
@@ -0,0 +1,62 @@
+// 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.Castle.MicroKernel
+{
+ using System;
+
+ using Apache.Avalon.Castle.MicroKernel.Concerns;
+ using Apache.Avalon.Castle.MicroKernel.Model;
+ using Apache.Avalon.Castle.MicroKernel.Subsystems.Configuration.Default;
+ using Apache.Avalon.Castle.MicroKernel.Subsystems.Logger.Default;
+ using Apache.Avalon.Castle.MicroKernel.Subsystems.Context.Default;
+
+ /// <summary>
+ /// Specialization of BaseKernel to adhere to Avalon
+ /// constraints and semantics.
+ /// </summary>
+ public class DefaultAvalonKernel : BaseKernel, IAvalonKernel
+ {
+ protected ConcernManager m_concerns = new ConcernManager();
+
+ /// <summary>
+ ///
+ /// </summary>
+ public DefaultAvalonKernel()
+ {
+ m_handlerFactory = new Handler.Default.DefaultHandlerFactory();
+ m_lifestyleManagerFactory = new Lifestyle.Default.SimpleLifestyleManagerFactory();
+
+ AddSubsystem( KernelConstants.CONFIGURATION, new DefaultConfigurationManager() );
+ AddSubsystem( KernelConstants.LOGGER, new LoggerManager() );
+ // AddSubsystem( KernelConstants.CONTEXT, new ContextManager() );
+ }
+
+ #region AvalonKernel Members
+
+ /// <summary>
+ /// Manages the concerns related
+ /// to Avalon Framework
+ /// </summary>
+ public ConcernManager Concerns
+ {
+ get
+ {
+ return m_concerns;
+ }
+ }
+
+ #endregion
+ }
+}
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Factory/Default/SimpleComponentFactory.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Factory/Default/SimpleComponentFactory.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Factory/Default/SimpleComponentFactory.cs Mon Aug 30 07:56:39 2004
@@ -27,23 +27,23 @@
/// </summary>
public class SimpleComponentFactory : IComponentFactory
{
- protected IAspect[] m_before;
- protected IAspect[] m_after;
+ // protected IAspect[] m_before;
+ // protected IAspect[] m_after;
protected IComponentModel m_componentModel;
protected Hashtable m_serv2handler;
private Hashtable m_instances = new Hashtable();
- public SimpleComponentFactory( IAspect[] before, IAspect[] after,
+ public SimpleComponentFactory( /*IAspect[] before, IAspect[] after, */
IComponentModel componentModel,
Hashtable serv2handler)
{
- AssertUtil.ArgumentNotNull( before, "before" );
- AssertUtil.ArgumentNotNull( after, "after" );
+ // AssertUtil.ArgumentNotNull( before, "before" );
+ // AssertUtil.ArgumentNotNull( after, "after" );
AssertUtil.ArgumentNotNull( componentModel, "componentModel" );
AssertUtil.ArgumentNotNull( serv2handler, "serv2handler" );
- m_before = before;
- m_after = after;
+ // m_before = before;
+ // m_after = after;
m_componentModel = componentModel;
m_serv2handler = serv2handler;
}
@@ -60,12 +60,13 @@
Object instance = Activator.CreateInstance( m_componentModel.ConstructionModel.Implementation, arguments );
+ /*
if (m_before.Length != 0 || m_after.Length != 0 )
{
instance = DynamicProxy.ProxyGenerator.CreateProxy(
new Type[] { m_componentModel.Service },
new Aspects.AspectInvocationHandler( m_before, m_after, instance ) );
- }
+ }*/
SetupProperties( instance, burden );
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 Mon Aug 30 07:56:39 2004
@@ -25,7 +25,7 @@
/// </summary>
public abstract class AbstractHandler : IHandler
{
- protected Kernel m_kernel;
+ protected IKernel m_kernel;
protected IComponentModel m_componentModel;
@@ -53,7 +53,7 @@
#region IHandler Members
- public virtual void Init( Kernel kernel )
+ public virtual void Init( IKernel kernel )
{
m_kernel = kernel;
}
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Handler/Default/DefaultHandler.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Handler/Default/DefaultHandler.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Handler/Default/DefaultHandler.cs Mon Aug 30 07:56:39 2004
@@ -32,13 +32,13 @@
protected override void CreateComponentFactoryAndLifestyleManager()
{
IComponentFactory innerFactory = new Factory.Default.SimpleComponentFactory(
- m_kernel.GetAspects(AspectPointCutFlags.Before),
- m_kernel.GetAspects(AspectPointCutFlags.After),
+ // m_kernel.GetAspects(AspectPointCutFlags.Before),
+ // m_kernel.GetAspects(AspectPointCutFlags.After),
m_componentModel, m_serv2handler);
- if (m_kernel is AvalonKernel)
+ if (m_kernel is IAvalonKernel)
{
- AvalonKernel kernel = (AvalonKernel) m_kernel;
+ IAvalonKernel kernel = (IAvalonKernel) m_kernel;
IConcern commissionChain = kernel.Concerns.GetCommissionChain( kernel );
IConcern decommissionChain = kernel.Concerns.GetDecommissionChain( kernel );
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Handler/Default/SimpleHandler.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Handler/Default/SimpleHandler.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Handler/Default/SimpleHandler.cs Mon Aug 30 07:56:39 2004
@@ -36,7 +36,7 @@
#region IHandler Members
- public override void Init( Kernel kernel )
+ public override void Init( IKernel kernel )
{
base.Init(kernel);
@@ -101,8 +101,8 @@
protected virtual void CreateComponentFactoryAndLifestyleManager()
{
IComponentFactory factory = new Factory.Default.SimpleComponentFactory(
- m_kernel.GetAspects(AspectPointCutFlags.Before),
- m_kernel.GetAspects(AspectPointCutFlags.After),
+ // m_kernel.GetAspects(AspectPointCutFlags.Before),
+ // m_kernel.GetAspects(AspectPointCutFlags.After),
m_componentModel, m_serv2handler);
m_lifestyleManager = m_kernel.LifestyleManagerFactory.Create(
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Handler/IHandler.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Handler/IHandler.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Handler/IHandler.cs Mon Aug 30 07:56:39 2004
@@ -25,7 +25,7 @@
///
/// </summary>
/// <param name="kernel"></param>
- void Init( Kernel kernel );
+ void Init( IKernel kernel );
/// <summary>
///
Added: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IAvalonKernel.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IAvalonKernel.cs Mon Aug 30 07:56:39 2004
@@ -0,0 +1,36 @@
+// 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.Castle.MicroKernel
+{
+ using System;
+
+ using Apache.Avalon.Castle.MicroKernel.Concerns;
+ using Apache.Avalon.Castle.MicroKernel.Model;
+
+ /// <summary>
+ /// Specialization of Kernel to support
+ /// avalon semantics
+ /// </summary>
+ public interface IAvalonKernel : IKernel
+ {
+ /// <summary>
+ /// Manages the concerns related to Avalon Framework
+ /// </summary>
+ ConcernManager Concerns
+ {
+ get;
+ }
+ }
+}
Added: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IContainerFacility.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IContainerFacility.cs Mon Aug 30 07:56:39 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.Castle.MicroKernel
+{
+ using System;
+
+ /// <summary>
+ /// Summary description for IContainerFacility.
+ /// </summary>
+ public interface IContainerFacility
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="kernel"></param>
+ void Init( IKernel kernel );
+ }
+}
Added: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IKernel.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IKernel.cs Mon Aug 30 07:56:39 2004
@@ -0,0 +1,103 @@
+ // 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.Castle.MicroKernel
+{
+ using System;
+
+ using Apache.Avalon.Castle.MicroKernel.Model;
+
+ public delegate void DependencyListenerDelegate(Type service, IHandler handler);
+
+ /// <summary>
+ /// Defines the Kernel service
+ /// </summary>
+ public interface IKernel
+ {
+ /// <summary>
+ /// Adds a component to kernel.
+ /// </summary>
+ /// <param name="key">The unique key that identifies the component</param>
+ /// <param name="service">The service exposed by this component</param>
+ /// <param name="implementation">The actual implementation</param>
+ void AddComponent(String key, Type service, Type implementation);
+
+ /// <summary>
+ /// IComponentModel instance builder.
+ /// </summary>
+ IComponentModelBuilder ModelBuilder { get; set; }
+
+ /// <summary>
+ /// Obtains a component handler using the
+ /// unique component key
+ /// </summary>
+ IHandler this[String key] { get; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="key"></param>
+ /// <param name="criteria"></param>
+ /// <returns></returns>
+ IHandler GetHandler(String key, object criteria);
+
+ /// <summary>
+ /// Gets or Sets the IHandlerFactory implementation
+ /// </summary>
+ IHandlerFactory HandlerFactory { get; set; }
+
+ /// <summary>
+ /// Gets or Sets the ILifestyleManagerFactory implementation
+ /// </summary>
+ ILifestyleManagerFactory LifestyleManagerFactory { get; set; }
+
+ /// <summary>
+ /// Returns true if kernel "knows" the specified
+ /// service
+ /// </summary>
+ /// <param name="service">The service interface</param>
+ /// <returns>true if is already registered</returns>
+ bool HasService(Type service);
+
+ /// <summary>
+ /// Used by handlers to register itself as
+ /// and dependency to be satisfied.
+ /// </summary>
+ /// <param name="service">The service interface</param>
+ /// <param name="depDelegate">Delegate to be invoked</param>
+ void AddDependencyListener(Type service, DependencyListenerDelegate depDelegate);
+
+ /// <summary>
+ /// Returns a IHandler implementation for
+ /// the specified service
+ /// </summary>
+ /// <param name="service">The service interface</param>
+ /// <returns>IHandler implementation</returns>
+ IHandler GetHandlerForService(Type service);
+
+ /// <summary>
+ /// Adds a subsystem.
+ /// </summary>
+ /// <param name="key">Name of this subsystem</param>
+ /// <param name="system">Subsystem implementation</param>
+ void AddSubsystem(String key, IKernelSubsystem system);
+
+ /// <summary>
+ /// Returns a registered subsystem;
+ /// </summary>
+ /// <param name="key">Key used when registered subsystem</param>
+ /// <returns>Subsystem implementation</returns>
+ IKernelSubsystem GetSubsystem(String key);
+ }
+}
\ No newline at end of file
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IKernelSubsystem.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IKernelSubsystem.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IKernelSubsystem.cs Mon Aug 30 07:56:39 2004
@@ -1,26 +1,24 @@
-// 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.Castle.MicroKernel
-{
- using System;
-
- /// <summary>
- /// Summary description for IKernelSubsystem.
- /// </summary>
- public interface IKernelSubsystem
- {
- void Init(Kernel kernel);
- }
-}
+ // 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.Castle.MicroKernel
+{
+ /// <summary>
+ /// Summary description for IKernelSubsystem.
+ /// </summary>
+ public interface IKernelSubsystem
+ {
+ void Init(IKernel kernel);
+ }
+}
\ No newline at end of file
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IResolver.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IResolver.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/IResolver.cs Mon Aug 30 07:56:39 2004
@@ -1,28 +1,26 @@
-// 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.Castle.MicroKernel
-{
- using System;
-
- /// <summary>
- /// Summary description for IResolver.
- /// </summary>
- public interface IResolver
- {
- object Resolve();
-
- void Release( object instance );
- }
-}
+ // 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.Castle.MicroKernel
+{
+ /// <summary>
+ /// Summary description for IResolver.
+ /// </summary>
+ public interface IResolver
+ {
+ object Resolve();
+
+ void Release(object instance);
+ }
+}
\ No newline at end of file
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 Mon Aug 30 07:56:39 2004
@@ -1,29 +1,37 @@
-Microsoft Visual Studio Solution File, Format Version 8.00
-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
- 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
- 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.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
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Avalon.Castle.Facilities.Aspects", "..\Facilities\Aspects\Apache.Avalon.Castle.Facilities.Aspects.csproj", "{17546A9D-FAE9-42D1-BF36-740187216D34}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ 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
+ {17546A9D-FAE9-42D1-BF36-740187216D34}.Debug.ActiveCfg = Debug|.NET
+ {17546A9D-FAE9-42D1-BF36-740187216D34}.Debug.Build.0 = Debug|.NET
+ {17546A9D-FAE9-42D1-BF36-740187216D34}.Release.ActiveCfg = Release|.NET
+ {17546A9D-FAE9-42D1-BF36-740187216D34}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/AbstractHandlerTestCase.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/AbstractHandlerTestCase.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/AbstractHandlerTestCase.cs Mon Aug 30 07:56:39 2004
@@ -30,7 +30,7 @@
[TestFixture]
public class AbstractHandlerTestCase : Assertion
{
- private Kernel kernel = new DefaultKernel();
+ private IKernel kernel = new DefaultAvalonKernel();
private Type service = typeof( IMailService );
private Type implementation = typeof( SimpleMailService );
private IComponentModel model;
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/Apache.Avalon.Castle.MicroKernel.Test.csproj
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/Apache.Avalon.Castle.MicroKernel.Test.csproj (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/Apache.Avalon.Castle.MicroKernel.Test.csproj Mon Aug 30 07:56:39 2004
@@ -124,17 +124,17 @@
BuildAction = "Compile"
/>
<File
- RelPath = "DefaultComponentModelBuilderTestCase.cs"
+ RelPath = "DefaultAvalonKernelTestCase.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
- RelPath = "DefaultConfigurationManagerTestCase.cs"
+ RelPath = "DefaultComponentModelBuilderTestCase.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
- RelPath = "DefaultKernelTestCase.cs"
+ RelPath = "DefaultConfigurationManagerTestCase.cs"
SubType = "Code"
BuildAction = "Compile"
/>
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/AssemblerTestCase.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/AssemblerTestCase.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/AssemblerTestCase.cs Mon Aug 30 07:56:39 2004
@@ -30,7 +30,7 @@
[TestFixture]
public class AssemblerTestCase : Assertion
{
- private AvalonKernel m_kernel = new DefaultKernel();
+ private IAvalonKernel m_kernel = new DefaultAvalonKernel();
private DefaultComponentModelBuilder m_builder;
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/BaseKernelTestCase.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/BaseKernelTestCase.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/BaseKernelTestCase.cs Mon Aug 30 07:56:39 2004
@@ -68,58 +68,41 @@
handler.Release( service );
}
- /// <summary>
- /// Adds a InterceptionAspect to calling chain and check if is has been called
- /// during method execution
- /// </summary>
+ /*
[Test]
- public void AddingAspect()
+ public void FacilityEvents()
{
BaseKernel container = new BaseKernel();
+ MockFacility facility = new MockFacility();
- InterceptionAspect aspect = new InterceptionAspect();
+ container.RegisterFacility( facility );
- container.AddAspect(
- AspectPointCutFlags.Before|AspectPointCutFlags.After,
- aspect );
+ Assert( facility.OnInitCalled );
- container.AddComponent( "a", typeof(IMailService), typeof(SimpleMailService) );
+ container.AddComponent( "a", typeof(IMailService), typeof(SimpleMailServiceWithLogger) );
+
+ Assert( facility.ComponentAddedCalled );
IHandler handler = container[ "a" ];
IMailService service = handler.Resolve() as IMailService;
+ Assert( facility.ComponentCreatedCalled );
+
AssertNotNull( service );
- service.Send("hammett at apache dot org", "johndoe at yahoo dot org", "Aloha!", "What's up?");
+ service.Send("hammett at apache dot org",
+ "johndoe at yahoo dot org", "Aloha!", "What's up?");
handler.Release( service );
- AssertEquals( 2, aspect.m_invocations.Count );
- AssertEquals( "Before Send", aspect.m_invocations[0] );
- AssertEquals( "After Send", aspect.m_invocations[1] );
+ Assert( facility.ComponentReleasedCalled );
}
- public class InterceptionAspect : IAspect
+ public class MockFacility : IContainerFacility
{
- public ArrayList m_invocations = new ArrayList();
-
- public void Perform( AspectPointCutFlags pointcut,
- object componentInstance,
- MethodBase method,
- object returnValue,
- Exception exception,
- params object[] arguments)
- {
- if (pointcut == AspectPointCutFlags.Before)
- {
- m_invocations.Add("Before " + method.Name);
- }
- else if (pointcut == AspectPointCutFlags.After)
- {
- m_invocations.Add("After " + method.Name);
- }
- }
+
}
+ */
}
}
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/ConcernManagerTestCase.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/ConcernManagerTestCase.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/ConcernManagerTestCase.cs Mon Aug 30 07:56:39 2004
@@ -27,12 +27,12 @@
[TestFixture]
public class ConcernManagerTestCase : Assertion
{
- private Kernel m_kernel;
+ private IKernel m_kernel;
[SetUp]
public void CreateKernel()
{
- m_kernel = new DefaultKernel();
+ m_kernel = new DefaultAvalonKernel();
}
[Test]
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/Concerns/AbstractConcernTestCase.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/Concerns/AbstractConcernTestCase.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/Concerns/AbstractConcernTestCase.cs Mon Aug 30 07:56:39 2004
@@ -28,7 +28,7 @@
/// </summary>
public abstract class AbstractConcernTestCase : Assertion
{
- protected Kernel m_kernel = new DefaultKernel();
+ protected IKernel m_kernel = new DefaultAvalonKernel();
public abstract IConcern Create();
Added: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/DefaultAvalonKernelTestCase.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/DefaultAvalonKernelTestCase.cs Mon Aug 30 07:56:39 2004
@@ -0,0 +1,153 @@
+using Apache.Avalon.Castle.MicroKernel.Handler;
+// 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.Castle.MicroKernel.Test
+{
+ using System;
+
+ using NUnit.Framework;
+
+ using Apache.Avalon.Castle.MicroKernel.Test.Components;
+
+ /// <summary>
+ /// Summary description for DefaultAvalonKernelTestCase.
+ /// </summary>
+ [TestFixture]
+ public class DefaultAvalonKernelTestCase : Assertion
+ {
+ [Test]
+ public void Creation()
+ {
+ IAvalonKernel kernel = new DefaultAvalonKernel();
+ AssertNotNull(kernel);
+ }
+
+ /// <summary>
+ /// Just a simple Service resolution.
+ /// No concerns or aspects involved.
+ /// </summary>
+ [Test]
+ public void SimpleUsage()
+ {
+ IAvalonKernel container = new DefaultAvalonKernel();
+ container.AddComponent( "a", typeof(IMailService), typeof(SimpleMailService) );
+
+ IHandler handler = container[ "a" ];
+
+ IMailService service = handler.Resolve() as IMailService;
+
+ AssertNotNull( service );
+
+ service.Send("hammett at apache dot org", "johndoe at yahoo dot org", "Aloha!", "What's up?");
+
+ handler.Release( service );
+ }
+
+ [Test]
+ public void SimpleAvalonComponent()
+ {
+ IAvalonKernel container = new DefaultAvalonKernel();
+ container.AddComponent( "a", typeof(IMailService), typeof(AvalonMailService2) );
+
+ IHandler handler = container[ "a" ];
+
+ IMailService service = handler.Resolve() as IMailService;
+
+ AssertNotNull( service );
+
+ AvalonMailService realInstance = (AvalonMailService) service;
+
+ Assert( realInstance.initialized );
+ Assert( realInstance.configured );
+ Assert( !realInstance.disposed );
+
+ service.Send("hammett at apache dot org", "johndoe at yahoo dot org", "Aloha!", "What's up?");
+
+ handler.Release( service );
+
+ Assert( realInstance.disposed );
+ }
+
+ [Test]
+ public void AvalonComponentWithUnsatisfiedDependencies()
+ {
+ IAvalonKernel container = new DefaultAvalonKernel();
+ container.AddComponent( "b", typeof(ISpamService), typeof(AvalonSpamService) );
+
+ IHandler handler = container[ "b" ];
+
+ try
+ {
+ ISpamService service = handler.Resolve() as ISpamService;
+ Fail("Dependencies unsatisfied for this component. Resolve should fail.");
+ }
+ catch(HandlerException)
+ {
+ // Expected.
+ }
+ }
+
+ [Test]
+ public void AvalonComponentWithDependencies()
+ {
+ IAvalonKernel container = new DefaultAvalonKernel();
+ container.AddComponent( "a", typeof(IMailService), typeof(AvalonMailService) );
+ container.AddComponent( "b", typeof(ISpamService), typeof(AvalonSpamService) );
+
+ IHandler handler = container[ "b" ];
+
+ ISpamService service = handler.Resolve() as ISpamService;
+ AssertNotNull( service );
+
+ service.AnnoyPeople( "Work at home and earn a thousand dollars per second!" );
+
+ handler.Release( service );
+ }
+
+ [Test]
+ public void HybridAvalonComponent()
+ {
+ IAvalonKernel container = new DefaultAvalonKernel();
+ container.AddComponent( "a", typeof(IMailService), typeof(AvalonMailService) );
+ container.AddComponent( "b", typeof(ISpamService), typeof(AvalonSpamService2) );
+
+ IHandler handler = container[ "b" ];
+
+ ISpamService service = handler.Resolve() as ISpamService;
+ AssertNotNull( service );
+
+ service.AnnoyPeople( "Work at home and earn a thousand dollars per second!" );
+
+ handler.Release( service );
+ }
+
+ [Test]
+ public void HybridAvalonComponentUsingSetters()
+ {
+ IAvalonKernel container = new DefaultAvalonKernel();
+ container.AddComponent( "a", typeof(IMailService), typeof(AvalonMailService) );
+ container.AddComponent( "b", typeof(ISpamService2), typeof(AvalonSpamService3) );
+
+ IHandler handler = container[ "b" ];
+
+ ISpamService service = handler.Resolve() as ISpamService;
+ AssertNotNull( service );
+
+ service.AnnoyPeople( "Work at home and earn a thousand dollars per second!" );
+
+ handler.Release( service );
+ }
+ }
+}
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/DefaultComponentModelBuilderTestCase.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/DefaultComponentModelBuilderTestCase.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/DefaultComponentModelBuilderTestCase.cs Mon Aug 30 07:56:39 2004
@@ -29,7 +29,7 @@
[TestFixture]
public class DefaultComponentModelBuilderTestCase : Assertion
{
- private Kernel m_kernel;
+ private IKernel m_kernel;
[SetUp]
public void CreateKernel()
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/DependencyDisposeTestCase.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/DependencyDisposeTestCase.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/DependencyDisposeTestCase.cs Mon Aug 30 07:56:39 2004
@@ -31,7 +31,7 @@
[Test]
public void SingletonDependencyDisposal()
{
- AvalonKernel container = new DefaultKernel();
+ IAvalonKernel container = new DefaultAvalonKernel();
container.AddComponent( "a", typeof(IMailService), typeof(AvalonMailService) );
container.AddComponent( "b", typeof(ISpamService2), typeof(AvalonSpamService3) );
@@ -52,7 +52,7 @@
[Test]
public void TransientDependencyDisposal()
{
- AvalonKernel container = new DefaultKernel();
+ IAvalonKernel container = new DefaultAvalonKernel();
container.AddComponent( "a", typeof(IMailService), typeof(AvalonMailService2) );
container.AddComponent( "b", typeof(ISpamService2), typeof(AvalonSpamService3) );
@@ -69,6 +69,5 @@
Assert( "A transient component should have been disposed", mailService.disposed );
}
-
}
}
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/EventManagerTestCase.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/EventManagerTestCase.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/EventManagerTestCase.cs Mon Aug 30 07:56:39 2004
@@ -28,23 +28,23 @@
[TestFixture]
public class EventManagerTestCase : Assertion
{
- private Kernel m_kernel;
+ private IKernel m_kernel;
private bool m_invoked = false;
[SetUp]
public void CreateKernel()
{
- m_kernel = new DefaultKernel();
+ m_kernel = new DefaultAvalonKernel();
}
[Test]
public void TestUsage()
{
- EventManager manager = new EventManager();
+ IEventManager manager = new EventManager();
manager.Init( m_kernel );
- manager.ComponentAdded += new KernelDelegate(Evento);
- manager.ComponentDestroyed += new KernelDelegate(Evento);
+ manager.ComponentAdded += new KernelDelegate(TheEvent);
+ manager.ComponentDestroyed += new KernelDelegate(TheEvent);
Assert( !m_invoked );
@@ -62,7 +62,7 @@
Assert( m_invoked );
}
- public void Evento( EventManagerData data )
+ public void TheEvent( EventManagerData data )
{
m_invoked = true;
}
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/EventSubsystemTestCase.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/EventSubsystemTestCase.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/EventSubsystemTestCase.cs Mon Aug 30 07:56:39 2004
@@ -35,7 +35,7 @@
[Test]
public void TestComponentAddedEvent()
{
- Kernel kernel = new DefaultKernel();
+ IKernel kernel = new DefaultAvalonKernel();
IEventManager eventManager = (IEventManager) kernel.GetSubsystem( KernelConstants.EVENTS );
eventManager.ComponentAdded += new KernelDelegate(OnComponentAdded);
@@ -53,7 +53,7 @@
[Test]
public void TestComponentCreatedEvent()
{
- Kernel kernel = new DefaultKernel();
+ IKernel kernel = new DefaultAvalonKernel();
IEventManager eventManager = (IEventManager) kernel.GetSubsystem( KernelConstants.EVENTS );
eventManager.ComponentCreated += new KernelDelegate(OnComponentCreated);
@@ -75,7 +75,7 @@
[Test]
public void TestComponentDestroyedEvent()
{
- Kernel kernel = new DefaultKernel();
+ IKernel kernel = new DefaultAvalonKernel();
IEventManager eventManager = (IEventManager) kernel.GetSubsystem( KernelConstants.EVENTS );
eventManager.ComponentDestroyed += new KernelDelegate(OnComponentDestroyed);
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/Lifestyle/LifestyleManagerTestCase.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/Lifestyle/LifestyleManagerTestCase.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/Lifestyle/LifestyleManagerTestCase.cs Mon Aug 30 07:56:39 2004
@@ -28,14 +28,14 @@
[TestFixture]
public class LifestyleManagerTestCase : Assertion
{
- private AvalonKernel m_kernel;
+ private IAvalonKernel m_kernel;
private IComponent m_instance3;
[SetUp]
public void CreateContainer()
{
- m_kernel = new DefaultKernel();
+ m_kernel = new DefaultAvalonKernel();
}
[Test]
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/LoggerManagerTestCase.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/LoggerManagerTestCase.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/LoggerManagerTestCase.cs Mon Aug 30 07:56:39 2004
@@ -31,7 +31,7 @@
[Test]
public void TestUsage()
{
- Kernel kernel = new BaseKernel();
+ IKernel kernel = new BaseKernel();
LoggerManager manager = new LoggerManager();
kernel.AddSubsystem( KernelConstants.LOGGER, manager );
@@ -44,7 +44,7 @@
[Test]
public void TestCreateLogger()
{
- Kernel kernel = new BaseKernel();
+ IKernel kernel = new BaseKernel();
LoggerManager manager = new LoggerManager();
kernel.AddSubsystem( KernelConstants.LOGGER, manager );
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/SimpleComponentFactoryTestCase.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/SimpleComponentFactoryTestCase.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/MicroKernelTest/SimpleComponentFactoryTestCase.cs Mon Aug 30 07:56:39 2004
@@ -53,7 +53,7 @@
IComponentModel model = new DefaultComponentModelBuilder(kernel).BuildModel( "a", service, implementation );
SimpleComponentFactory factory = new SimpleComponentFactory(
- new IAspect[0], new IAspect[0], model, new Hashtable() );
+ /*new IAspect[0], new IAspect[0],*/ model, new Hashtable() );
Object instance = factory.Incarnate();
@@ -81,7 +81,7 @@
serv2Handler[ serviceDep ] = kernel.GetHandlerForService( serviceDep );
SimpleComponentFactory factory = new SimpleComponentFactory(
- new IAspect[0], new IAspect[0], model, serv2Handler );
+ /*new IAspect[0], new IAspect[0],*/ model, serv2Handler );
Object instance = factory.Incarnate();
@@ -116,7 +116,7 @@
serv2Handler[ serviceDep2 ] = kernel.GetHandlerForService( serviceDep2 );
SimpleComponentFactory factory = new SimpleComponentFactory(
- new IAspect[0], new IAspect[0], model, serv2Handler );
+ /*new IAspect[0], new IAspect[0],*/ model, serv2Handler );
Object instance = factory.Incarnate();
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/Default/DefaultComponentModel.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/Default/DefaultComponentModel.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/Default/DefaultComponentModel.cs Mon Aug 30 07:56:39 2004
@@ -1,140 +1,141 @@
-// 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.Castle.MicroKernel.Model.Default
-{
- using System;
-
- using Apache.Avalon.Framework;
- using Apache.Avalon.Castle.MicroKernel.Model;
-
- /// <summary>
- /// Summary description for DefaultComponentModel.
- /// </summary>
- public class DefaultComponentModel : IComponentModel
- {
- private Type m_service;
- private String m_name;
- private Lifestyle m_lifestyle;
- private ILogger m_logger;
- private IConfiguration m_config;
- private IContext m_context;
- private IDependencyModel[] m_dependencies;
- private IConstructionModel m_constructionModel;
-
- public DefaultComponentModel(
- String name,
- Type service,
- Lifestyle lifestyle,
- ILogger logger,
- IConfiguration configuration,
- IContext context,
- IDependencyModel[] dependencies,
- IConstructionModel constructionModel)
- {
- AssertUtil.ArgumentNotNull( name, "name" );
- AssertUtil.ArgumentNotNull( service, "service" );
- AssertUtil.ArgumentNotNull( logger, "logger" );
- AssertUtil.ArgumentNotNull( configuration, "configuration" );
- AssertUtil.ArgumentNotNull( context, "context" );
- AssertUtil.ArgumentNotNull( dependencies, "dependencies" );
- AssertUtil.ArgumentNotNull( constructionModel, "constructionModel" );
-
- m_name = name;
- m_service = service;
- m_lifestyle = lifestyle;
- m_logger = logger;
- m_config = configuration;
- m_context = context;
- m_dependencies = dependencies;
- m_constructionModel = constructionModel;
- }
-
- #region IComponentModel Members
-
- public String Name
- {
- get
- {
- return m_name;
- }
- }
-
- public Type Service
- {
- get
- {
- return m_service;
- }
- }
-
- public Lifestyle SupportedLifestyle
- {
- get
- {
- return m_lifestyle;
- }
- }
-
- public ILogger Logger
- {
- get
- {
- return m_logger;
- }
- set
- {
- m_logger = value;
- }
- }
-
- public IConfiguration Configuration
- {
- get
- {
- return m_config;
- }
- set
- {
- m_config = value;
- }
- }
-
- public IContext Context
- {
- get
- {
- return m_context;
- }
- }
-
- public IDependencyModel[] Dependencies
- {
- get
- {
- return m_dependencies;
- }
- }
-
- public IConstructionModel ConstructionModel
- {
- get
- {
- return m_constructionModel;
- }
- }
-
- #endregion
- }
-}
+ // 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.Castle.MicroKernel.Model.Default
+{
+ using System;
+
+ using Apache.Avalon.Framework;
+ using Apache.Avalon.Castle.MicroKernel.Model;
+
+ /// <summary>
+ /// Summary description for DefaultComponentModel.
+ /// </summary>
+ public class DefaultComponentModel : IComponentModel
+ {
+ private Type m_service;
+ private String m_name;
+ private Lifestyle m_lifestyle;
+ private Activation m_activation;
+ private ILogger m_logger;
+ private IConfiguration m_config;
+ private IContext m_context;
+ private IDependencyModel[] m_dependencies;
+ private IConstructionModel m_constructionModel;
+
+ protected DefaultComponentModel()
+ {
+ m_context = new DefaultContext();
+ }
+
+ public DefaultComponentModel(
+ ComponentData data,
+ Type service,
+ ILogger logger,
+ IConfiguration configuration,
+ IConstructionModel constructionModel) : this()
+ {
+ AssertUtil.ArgumentNotNull(data, "data");
+ AssertUtil.ArgumentNotNull(service, "service");
+ AssertUtil.ArgumentNotNull(logger, "logger");
+ AssertUtil.ArgumentNotNull(configuration, "configuration");
+ AssertUtil.ArgumentNotNull(constructionModel, "constructionModel");
+
+ m_name = data.Name;
+ m_service = service;
+ m_lifestyle = data.SupportedLifestyle;
+ m_activation = data.AvalonComponent.Activation;
+ m_logger = logger;
+ m_config = configuration;
+ m_dependencies = data.DependencyModel;
+ m_constructionModel = constructionModel;
+ }
+
+ public DefaultComponentModel(
+ String name,
+ Type service,
+ Lifestyle lifestyle,
+ ILogger logger,
+ IConfiguration configuration,
+ IDependencyModel[] dependencies,
+ IConstructionModel constructionModel) : this()
+ {
+ AssertUtil.ArgumentNotNull(name, "name");
+ AssertUtil.ArgumentNotNull(service, "service");
+ AssertUtil.ArgumentNotNull(logger, "logger");
+ AssertUtil.ArgumentNotNull(configuration, "configuration");
+ AssertUtil.ArgumentNotNull(dependencies, "dependencies");
+ AssertUtil.ArgumentNotNull(constructionModel, "constructionModel");
+
+ m_name = name;
+ m_service = service;
+ m_lifestyle = lifestyle;
+ m_logger = logger;
+ m_config = configuration;
+ m_dependencies = dependencies;
+ m_constructionModel = constructionModel;
+ }
+
+ #region IComponentModel Members
+
+ public String Name
+ {
+ get { return m_name; }
+ }
+
+ public Type Service
+ {
+ get { return m_service; }
+ }
+
+ public Lifestyle SupportedLifestyle
+ {
+ get { return m_lifestyle; }
+ }
+
+ public Activation ActivationPolicy
+ {
+ get { return m_activation; }
+ }
+
+ public ILogger Logger
+ {
+ get { return m_logger; }
+ set { m_logger = value; }
+ }
+
+ public IConfiguration Configuration
+ {
+ get { return m_config; }
+ set { m_config = value; }
+ }
+
+ public IContext Context
+ {
+ get { return m_context; }
+ }
+
+ public IDependencyModel[] Dependencies
+ {
+ get { return m_dependencies; }
+ }
+
+ public IConstructionModel ConstructionModel
+ {
+ get { return m_constructionModel; }
+ }
+
+ #endregion
+ }
+}
\ No newline at end of file
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/Default/DefaultComponentModelBuilder.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/Default/DefaultComponentModelBuilder.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/Default/DefaultComponentModelBuilder.cs Mon Aug 30 07:56:39 2004
@@ -22,16 +22,15 @@
using Apache.Avalon.Castle.MicroKernel.Subsystems.Configuration;
using Apache.Avalon.Castle.MicroKernel.Subsystems.Logger;
- using Apache.Avalon.Castle.MicroKernel.Subsystems.Context;
/// <summary>
/// Summary description for DefaultComponentModelBuilder.
/// </summary>
public class DefaultComponentModelBuilder : IComponentModelBuilder
{
- private Kernel m_kernel;
+ private IKernel m_kernel;
- public DefaultComponentModelBuilder(Kernel kernel)
+ public DefaultComponentModelBuilder( IKernel kernel )
{
m_kernel = kernel;
}
@@ -54,13 +53,9 @@
new DefaultConstructionModel( implementation, data.Constructor, data.PropertiesInfo );
ILogger logger = CreateLogger( data );
- IContext context = CreateContext();
IConfiguration config = CreateConfiguration( data );
- return new DefaultComponentModel(
- data.Name, service, data.SupportedLifestyle,
- logger, config, new DefaultContext(),
- data.DependencyModel, constructionModel );
+ return new DefaultComponentModel( data, service, logger, config, constructionModel );
}
#endregion
@@ -94,13 +89,6 @@
{
return new DefaultConfiguration();
}
- }
-
- protected virtual IContext CreateContext()
- {
- // IContext context =
- // m_kernel.ContextManager.CreateContext( data.AvalonContext, data.ContextEntries );
- return new DefaultContext();
}
protected void InspectAvalonAttributes( ComponentData componentData )
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/IComponentModel.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/IComponentModel.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/IComponentModel.cs Mon Aug 30 07:56:39 2004
@@ -1,68 +1,72 @@
-// 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.Castle.MicroKernel.Model
-{
- using System;
-
- using Apache.Avalon.Framework;
-
- /// <summary>
- /// Summary description for IComponentModel.
- /// </summary>
- public interface IComponentModel
- {
- String Name
- {
- get;
- }
-
- Lifestyle SupportedLifestyle
- {
- get;
- }
-
- Type Service
- {
- get;
- }
-
- ILogger Logger
- {
- get;
- set;
- }
-
- IConfiguration Configuration
- {
- get;
- set;
- }
-
- IContext Context
- {
- get;
- }
-
- IDependencyModel[] Dependencies
- {
- get;
- }
-
- IConstructionModel ConstructionModel
- {
- get;
- }
- }
-}
+ // 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.Castle.MicroKernel.Model
+{
+ using System;
+
+ using Apache.Avalon.Framework;
+
+ /// <summary>
+ /// Holds information necessary for the lifetime of the component.
+ /// </summary>
+ public interface IComponentModel
+ {
+ /// <summary>
+ /// Component name
+ /// </summary>
+ String Name { get; }
+
+ /// <summary>
+ /// Desired lifecycle
+ /// </summary>
+ Lifestyle SupportedLifestyle { get; }
+
+ /// <summary>
+ /// Desired activation policy
+ /// </summary>
+ Activation ActivationPolicy { get; }
+
+ /// <summary>
+ /// Service being exposed by the component
+ /// </summary>
+ Type Service { get; }
+
+ /// <summary>
+ /// ILogger implementation
+ /// </summary>
+ ILogger Logger { get; set; }
+
+ /// <summary>
+ /// Configuration node for the component
+ /// </summary>
+ IConfiguration Configuration { get; set; }
+
+ /// <summary>
+ /// Context for the component
+ /// </summary>
+ IContext Context { get; }
+
+ /// <summary>
+ /// List of dependencies declared by the component
+ /// </summary>
+ IDependencyModel[] Dependencies { get; }
+
+ /// <summary>
+ /// Information to allow the correct construction
+ /// of the component
+ /// </summary>
+ IConstructionModel ConstructionModel { get; }
+ }
+}
\ No newline at end of file
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/IConstructionModel.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/IConstructionModel.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/IConstructionModel.cs Mon Aug 30 07:56:39 2004
@@ -1,40 +1,41 @@
-// 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.Castle.MicroKernel.Model
-{
- using System;
- using System.Reflection;
-
- /// <summary>
- /// Summary description for IConstructionModel.
- /// </summary>
- public interface IConstructionModel
- {
- Type Implementation
- {
- get;
- }
-
- ConstructorInfo SelectedConstructor
- {
- get;
- }
-
- PropertyInfo[] SelectedProperties
- {
- get;
- }
- }
-}
+ // 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.Castle.MicroKernel.Model
+{
+ using System;
+ using System.Reflection;
+
+ /// <summary>
+ /// Holds the information to allow the container to
+ /// correctly instantiate the component implementation.
+ /// </summary>
+ public interface IConstructionModel
+ {
+ /// <summary>
+ /// Implementation type
+ /// </summary>
+ Type Implementation { get; }
+
+ /// <summary>
+ /// The best constructor selected.
+ /// </summary>
+ ConstructorInfo SelectedConstructor { get; }
+
+ /// <summary>
+ /// Properties that will be used to satisfy dependencies.
+ /// </summary>
+ PropertyInfo[] SelectedProperties { get; }
+ }
+}
\ No newline at end of file
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/IDependencyModel.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/IDependencyModel.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/IDependencyModel.cs Mon Aug 30 07:56:39 2004
@@ -1,39 +1,40 @@
-// 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.Castle.MicroKernel.Model
-{
- using System;
-
- /// <summary>
- /// Summary description for IDependencyModel.
- /// </summary>
- public interface IDependencyModel
- {
- Type Service
- {
- get;
- }
-
- String LookupKey
- {
- get;
- }
-
- bool Optional
- {
- get;
- }
- }
-}
+ // 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.Castle.MicroKernel.Model
+{
+ using System;
+
+ /// <summary>
+ /// Holds the dependency information as
+ /// requested by the component.
+ /// </summary>
+ public interface IDependencyModel
+ {
+ /// <summary>
+ /// Type of the service registered as a dependency.
+ /// </summary>
+ Type Service { get; }
+
+ /// <summary>
+ /// Name that will be used to request this dependency.
+ /// </summary>
+ String LookupKey { get; }
+
+ /// <summary>
+ /// Is this dependency optional?
+ /// </summary>
+ bool Optional { get; }
+ }
+}
\ No newline at end of file
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/ModelBuilderException.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/ModelBuilderException.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Model/ModelBuilderException.cs Mon Aug 30 07:56:39 2004
@@ -17,7 +17,8 @@
using System;
/// <summary>
- /// Summary description for ModelBuilderException.
+ /// Exception throwed if the <see cref="IComponentModelBuilder"/>
+ /// fail to collect the necessary information.
/// </summary>
[Serializable]
public class ModelBuilderException : System.Exception
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Subsystems/AbstractSubsystem.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Subsystems/AbstractSubsystem.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Subsystems/AbstractSubsystem.cs Mon Aug 30 07:56:39 2004
@@ -21,7 +21,7 @@
/// </summary>
public abstract class AbstractSubsystem : IKernelSubsystem
{
- private Kernel m_kernel;
+ private IKernel m_kernel;
public AbstractSubsystem()
{
@@ -29,7 +29,7 @@
#region IKernelSubsystem Members
- public void Init(Kernel kernel)
+ public void Init( IKernel kernel )
{
AssertUtil.ArgumentNotNull( kernel, "kernel" );
@@ -38,7 +38,7 @@
#endregion
- protected virtual Kernel Kernel
+ protected virtual IKernel Kernel
{
get
{
Modified: avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Subsystems/Events/Default/EventManager.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Subsystems/Events/Default/EventManager.cs (original)
+++ avalon/trunk/central/laboratory/avalon-net/Castle/MicroKernel/Subsystems/Events/Default/EventManager.cs Mon Aug 30 07:56:39 2004
@@ -95,7 +95,6 @@
public void OnComponentDestroyed( EventManagerData data )
{
RaiseEvent( ComponentDestroyedEvent, data );
-
}
#endregion
---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org