Here it is. This can be applied to CVS. 
Thanks

hammett

? AvalonContainer-1.0-test.dll
? AvalonContainer-1.0-test.pdb
? AvalonContainer-1.0.dll
? AvalonContainer-1.0.pdb
? AvalonContainer-1.0.xml
? new-patch.diff
? bin/AvalonFramework-1.0.dll
? src/cs/bin
? src/cs/obj
? src/test/bin
? src/test/ComponentFactoryTestCase.cs
? src/test/DummyService.cs
? src/test/IDummyService.cs
? src/test/obj
Index: AvalonContainer.build
===================================================================
RCS file: /home/cvspublic/avalon-sandbox/cscontainer/AvalonContainer.build,v
retrieving revision 1.3
diff -u -b -r1.3 AvalonContainer.build
--- AvalonContainer.build       8 Jul 2003 17:18:54 -0000       1.3
+++ AvalonContainer.build       22 Aug 2003 19:30:03 -0000
@@ -1,4 +1,4 @@
-<project name="Avalon Framework - C#" default="build">
+<project name="Avalon Container - C#" default="build">
   <property name="name" value="AvalonContainer"/>
   <property name="version" value="1.0"/>
   <property name="library.name" value="${name}-${version}"/>
@@ -51,10 +51,10 @@
       <documenters>
         <documenter name="MSDN">
           <property name="OutputDirectory" value="doc\MSDN" />
-          <property name="HtmlHelpName" value="AvalonFramework" />
+          <property name="HtmlHelpName" value="AvalonContainer" />
           <property name="HtmlHelpCompilerFilename" value="hhc.exe" />
           <property name="IncludeFavorites" value="False" />
-          <property name="Title" value="The Avalon Framework API Docs" />
+          <property name="Title" value="The Avalon Container API Docs" />
           <property name="SplitTOCs" value="False" />
           <property name="DefaulTOC" value="" />
           <property name="ShowMissingSummaries" value="True" />
Index: bin/log4net-net-1.1.dll
===================================================================
RCS file: /home/cvspublic/avalon-sandbox/cscontainer/bin/log4net-net-1.1.dll,v
retrieving revision 1.1
diff -u -b -r1.1 log4net-net-1.1.dll
Binary files /tmp/cvsE9Qb2Y and log4net-net-1.1.dll differ
Index: src/cs/AvalonComponentFactory.cs
===================================================================
RCS file: /home/cvspublic/avalon-sandbox/cscontainer/src/cs/AvalonComponentFactory.cs,v
retrieving revision 1.1
diff -u -b -r1.1 AvalonComponentFactory.cs
--- src/cs/AvalonComponentFactory.cs    5 Aug 2003 14:26:47 -0000       1.1
+++ src/cs/AvalonComponentFactory.cs    22 Aug 2003 19:30:03 -0000
@@ -1,30 +1,30 @@
-using System;--namespace Apache.Avalon.Container-{-    /// <summary>-  /// Summary 
description for AvalonComponentFactory.-    /// </summary>- public class 
AvalonComponentFactory : IComponentFactory+namespace Apache.Avalon.Container
{
        using System;
        using Apache.Avalon.Framework;+ /// <summary>
        /// Summary description for AvalonComponentFactory.
        /// </summary>
        public class AvalonComponentFactory : IComponentFactory
        {
        private Type m_componentType;+          public AvalonComponentFactory(Type 
componentType)
                {
                        if (componentType == null) 
                        {
                                throw new ArgumentNullException( "componentType", "We 
must have a valid component type" );
                        }
            m_componentType = componentType;
        }+              #region Implementation of IComponentFactory
+        public object Create()
        {
            object component = Activator.CreateInstance(m_componentType);

                        DefaultConfiguration conf = new DefaultConfiguration();

                        ContainerUtil.Initialize(component);
                        ContainerUtil.Configure(component, conf);
                        // ContainerUtil.Service(component, null);

            return component;
        }+              public void Destroy(object Component)
        {-        private Type m_componentType;--               public 
AvalonComponentFactory(Type componentType)+                      if 
(Component.GetType() != m_componentType)
                {-            if (componentType == null) throw new 
ArgumentNullException( "componentType", "We must have a valid component type" );-      
      m_componentType = componentType;+                               throw new 
ArgumentException( "The component passed in to destroy is the wrong type", "component" 
);
         } -        public object create()-        {-            object component = 
m_componentType.TypeInitializer.Invoke( null );-            return component;+         
             ContainerUtil.Shutdown(Component);
         } -        public void destroy(object component)+              public 
System.Type ComponentType
         {-            if ( typeof( component ) != typeof( m_componentType ) )-        
        throw new ArgumentException( "The component passed in to destroy is the wrong 
type", "component" );+                     get
+                       {
+                               return m_componentType;
+                       }
         }+             #endregion
+
+               #region Implementation of IDisposable
+               public void Dispose()
+               {
+                       m_componentType = null;
        }-}+            #endregion
        }
}Index: src/cs/ComponentFactory.cs
===================================================================
RCS file: /home/cvspublic/avalon-sandbox/cscontainer/src/cs/ComponentFactory.cs,v
retrieving revision 1.2
diff -u -b -r1.2 ComponentFactory.cs
--- src/cs/ComponentFactory.cs  5 Aug 2003 14:25:28 -0000       1.2
+++ src/cs/ComponentFactory.cs  22 Aug 2003 19:30:03 -0000
@@ -45,22 +45,7 @@
 // Apache Software Foundation, please see <http://www.apache.org/>.
 // ============================================================================
 
-using System;-using Apache.Avalon.Framework;--namespace Apache.Avalon.Container-{-    
 /// <summary>-  /// Summary description for ComponentFactory.-  /// </summary>- 
public interface IComponentFactory : IDisposable-       {-        protected Type 
ComponentType-        {-            get;-        }--        public object create();-   
     public void destroy(object component);-    }-}+using System;
using Apache.Avalon.Framework;+
namespace Apache.Avalon.Container
{
        /// <summary>
        /// Summary description for ComponentFactory.
        /// </summary>
        public interface IComponentFactory : IDisposable
        {
        Type ComponentType
        {
            get;
        }+        object Create();+        void Destroy(object Component);
        }
}
// ============================================================================
//                   The Apache Software License, Version 1.1
// ============================================================================
// 
// Copyright (C) 2002-2003 The Apache Software Foundation. All rights reserved.
// 
// Redistribution and use in source and binary forms, with or without modifica-
// tion, are permitted provided that the following conditions are met:
// 
// 1. Redistributions of  source code must  retain the above copyright  notice,
//    this list of conditions and the following disclaimer.
// 
// 2. Redistributions in binary form must reproduce the above copyright notice,
//    this list of conditions and the following disclaimer in the documentation
//    and/or other materials provided with the distribution.
// 
// 3. The end-user documentation included with the redistribution, if any, must
//    include  the following  acknowledgment:  "This product includes  software
//    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
//    Alternately, this  acknowledgment may  appear in the software itself,  if
//    and wherever such third-party acknowledgments normally appear.
// 
// 4. The names "Jakarta", "Avalon", "Excalibur" and "Apache Software Foundation"  
//    must not be used to endorse or promote products derived from this  software 
//    without  prior written permission. For written permission, please contact 
//    [EMAIL PROTECTED]
// 
// 5. Products  derived from this software may not  be called "Apache", nor may
//    "Apache" appear  in their name,  without prior written permission  of the
//    Apache Software Foundation.
// 
// THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
// FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
// APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
// INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
// DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
// OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
// ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
// (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// 
// This software  consists of voluntary contributions made  by many individuals
// on  behalf of the Apache Software  Foundation. For more  information on the 
// Apache Software Foundation, please see <http://www.apache.org/>.
// ============================================================================

namespace Apache.Avalon.Container.Test
{
        using System;
        using NUnit.Framework;
        using Apache.Avalon.Framework;
        using Apache.Avalon.Container;
        [TestFixture]
        public class ComponentFactoryTestCase
        {
                [Test]
                public void Creation()
                {
                        AvalonComponentFactory factory = 
                                new AvalonComponentFactory(typeof(DummyService));

                        Assertion.AssertEquals(typeof(DummyService), 
factory.ComponentType);

                        object component = factory.Create();

                        Assertion.AssertNotNull(component);
                        Assertion.AssertNotNull(component as DummyService);

                        DummyService dummy = component as DummyService;

                        factory.Destroy(dummy);

                        Assertion.Assert("Initialize not called", dummy.flags[2]);
                        Assertion.Assert("Configure not called", dummy.flags[0]);
                        Assertion.Assert("Dispose not called", dummy.flags[1]);
                }
        }
}
// ============================================================================
//                   The Apache Software License, Version 1.1
// ============================================================================
// 
// Copyright (C) 2002-2003 The Apache Software Foundation. All rights reserved.
// 
// Redistribution and use in source and binary forms, with or without modifica-
// tion, are permitted provided that the following conditions are met:
// 
// 1. Redistributions of  source code must  retain the above copyright  notice,
//    this list of conditions and the following disclaimer.
// 
// 2. Redistributions in binary form must reproduce the above copyright notice,
//    this list of conditions and the following disclaimer in the documentation
//    and/or other materials provided with the distribution.
// 
// 3. The end-user documentation included with the redistribution, if any, must
//    include  the following  acknowledgment:  "This product includes  software
//    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
//    Alternately, this  acknowledgment may  appear in the software itself,  if
//    and wherever such third-party acknowledgments normally appear.
// 
// 4. The names "Jakarta", "Avalon", "Excalibur" and "Apache Software Foundation"  
//    must not be used to endorse or promote products derived from this  software 
//    without  prior written permission. For written permission, please contact 
//    [EMAIL PROTECTED]
// 
// 5. Products  derived from this software may not  be called "Apache", nor may
//    "Apache" appear  in their name,  without prior written permission  of the
//    Apache Software Foundation.
// 
// THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
// FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
// APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
// INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
// DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
// OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
// ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
// (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// 
// This software  consists of voluntary contributions made  by many individuals
// on  behalf of the Apache Software  Foundation. For more  information on the 
// Apache Software Foundation, please see <http://www.apache.org/>.
// ============================================================================

namespace Apache.Avalon.Container.Test
{
        using System;
        using System.Collections;
        using NUnit.Framework;
        using Apache.Avalon.Framework;
        [AvalonService(typeof(IDummyService))]
        public class DummyService : IDummyService, 
                IInitializable, IConfigurable, IDisposable
        {
                public BitArray flags = new BitArray(3);

                public DummyService()
                {
                }

                #region Implementation of IConfigurable
                public void Configure(Apache.Avalon.Framework.IConfiguration config)
                {
                        flags[0] = true;
                }
                #endregion

                #region Implementation of IDisposable
                public void Dispose()
                {
                        flags[1] = true;
                }
                #endregion

                #region Implementation of IInitializable
                public void Initialize()
                {
                        flags[2] = true;
                }
                #endregion

                #region Implementation of IDummyService
                public void DoSomething()
                {
                }
                #endregion
        }
}
namespace Apache.Avalon.Container.Test
{
        using System;

        public interface IDummyService
        {
                void DoSomething();
        }
}

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

Reply via email to