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]