mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-09-19 01:57:55 +08:00

--HG-- extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4038902
624 lines
20 KiB
Plaintext
624 lines
20 KiB
Plaintext
2.0
|
|
====
|
|
|
|
- Fluent interface for factory support
|
|
|
|
- Fixed an issue with of not considering unregistered service dependencies in arrays
|
|
|
|
- Will not try to convert values that are already a match to the parameter type
|
|
|
|
- XmlProcessor now properly dispose of the stream reader
|
|
|
|
- The kernel will now check if trying to register null types
|
|
|
|
RC 4
|
|
====
|
|
|
|
- Update FromInterface Registration policy to only consider toplevel interfaces
|
|
and allow multiple services.
|
|
|
|
- Fixed bug in AllComponentsReleasePolicy in which burden not properly handled
|
|
on dispose.
|
|
|
|
- Applied patch from Joao Braganca to allow abstract types in DefaultComponentActivator if proxied.
|
|
|
|
- Added additional AddFacility overrides to improve fluent configuration of facilities.
|
|
|
|
- Moved DefaultComponentActivator check for abstract so it can be better overriden.
|
|
|
|
- Added Attribute to Component Registration fluent interface.
|
|
|
|
- Add ability to use Configure components based on implementation type when
|
|
using AllTypesOf.
|
|
|
|
- Do not return forward handlers in ResolveAll since you will get duplicate services.
|
|
|
|
- Applied patch (with mods) from Martin Nllsson to select registration interface from
|
|
containing interface.
|
|
|
|
- Added shortcut to AllTypes to accept a where.
|
|
|
|
- Added ability to include non-public types in registration.
|
|
|
|
- Updated registration to support providing multiple service types.
|
|
|
|
- Add registration support for mixins.
|
|
|
|
- Do not allow registering components with the same name in fluent interface.
|
|
|
|
- Applied Ayendes patch to introduce component service type forwarding to
|
|
support multiple service interfaces for a component.
|
|
Extended the Component Registration interface to support service forwarding.
|
|
|
|
- Avoid to register abstract component via IKernel.AddComponent, now throws when trying to add instead of while resolving component
|
|
|
|
- Removed sealed qualifier from CreationContext and made ISubDependencyResolver
|
|
methods virtual so they can be overriden.
|
|
|
|
- Made IKernel.AddFacility fluent.
|
|
|
|
- Added StartMethod/StartMethod to ComponentRegistration.
|
|
|
|
- Add if/unless support for ComponentRegistration.
|
|
|
|
- Applied Daniel Jins patch to not proxy internal interfaces.
|
|
|
|
- Fixed IOC-126
|
|
"PoolableLifestyleManager creates pool in constructor"
|
|
|
|
- Fixed IOC-125
|
|
"DefaultGenericHandler does not properly handle proxied generic components"
|
|
|
|
- Updated AllTypes strategy to support types based on generic type definitions.
|
|
|
|
- Updated AllTypes strategy to support multiple registrations from a single set of types.
|
|
|
|
- Collection handlers from parent container for GetAssignableHandlers.
|
|
|
|
- Added ability to change invocation target to DefaultProxyFactory.
|
|
|
|
- Fixed bug with ComponentRegistration.Instance in which the instance type was not assigned as the ComponentModel implementation.
|
|
|
|
- Replaced AllTypesOf<T> syntax with AllTypes.Of<T> so a non-generic version can be consistently provided.
|
|
|
|
- Added generic AddFacility methods to kernel.
|
|
|
|
- Added generalized configuration support to ComponentRegistration.
|
|
|
|
- Added IWindsorInstaller interface to enhance Windsor component installation.
|
|
|
|
- Added AllTypesOf registration stratgey to simplify custom registration
|
|
scenarios.
|
|
|
|
- Added IRegistration interface to allow alternate registration mechanisms.
|
|
|
|
- Fixed CORE-16 (Should be Facilities)
|
|
"The FactorySupportFacility does not create proxies if interceptors are present"
|
|
|
|
- Added support for list service overrides using the fluent registration interface.
|
|
Added support for specifying configuration parameters using the fluent interface to allow any complex
|
|
registration scenarios.
|
|
|
|
- Restructured the registration fluent interface to be a little more readable,
|
|
better support component registrations and prevent errors resulting from
|
|
forgetting to call ComponentRegistration.Register
|
|
|
|
- Fixed Facilities-97
|
|
"EventWiring Facility fails to create some components"
|
|
|
|
- Added support for non-generic usage of fluent-interface. Needed for dynamic registrations scenarios (Binsor)
|
|
Automatically register the component between consecutive AddComponentEx (Saves a few strokes).
|
|
|
|
- Initial version of MicroKernel/Windsor fluent interface IOC-99
|
|
|
|
- Applied patch from Jacob Lewallen improving the locking performance in the DefaultNamingSubsystem under high load.
|
|
|
|
- Applied Philippe Tremblay's patch fixing IOC-94
|
|
"Copy LifeStyle from generic interface"
|
|
|
|
- Added support for copying interceptors defined on the geneirc interface handler.
|
|
|
|
- Fixed IOC-80
|
|
"StartableFacility erroneously tries to start a component before
|
|
RegisterCustomDependency can be called"
|
|
|
|
- Added ComponentModelConverter to utilize System.ComponentModel TypeConverters
|
|
Very useful for converting things like Fonts and Colors
|
|
|
|
- Updated DefaultComplexConverter to support interfaces and derived types
|
|
|
|
- Fixed IOC-96
|
|
"FactorySupport fails to create components if the factory instance is a proxy"
|
|
|
|
- Fixed IOC-93
|
|
"GenericListConverter does not handle service overrides properly"
|
|
|
|
- Fixed IOC-91
|
|
"ContextBoundObject's context is not bound when object is created by MicroKernel"
|
|
|
|
- Fixed build from IContainerAccessor change
|
|
|
|
- Applied Ron Grabowski's patch fixing IOC-89
|
|
"Make DefaultKernel implement IServiceProvider"
|
|
|
|
- Check for required Properties before determining the Handlers initial state
|
|
|
|
- Fixed IoC-87
|
|
"DefaultComplextConverter does not properly handle nested components"
|
|
|
|
- Applied Lee Henson's patch fixing IOC-86
|
|
"Additional generic AddComponent overloads"
|
|
|
|
- Applied Ido Samuelson patch fixing IOC-85
|
|
"IKernel to support generics to add/resolve components."
|
|
|
|
- Refactored proxy options support. Now you can use the attribute 'marshalByRefProxy'
|
|
on the external configuration, or the ComponentProxyBehaviorAttribute
|
|
|
|
- Fixed IOC-79
|
|
"Kernel.GetHandlers(Type) does not consider generic handlers when satisfying the type"
|
|
|
|
- Updated StartableFacilityTestCase to correctly demonstrate the facility and
|
|
added a unit test to demonstrate IOC-80
|
|
|
|
- Applied Alex Henderson's patch that makes the ComponentModel available
|
|
to the ILifestyleManager
|
|
|
|
- Applied Adam Mills's patch fixing IOC-74
|
|
"BinaryComponentName VisitNode null check"
|
|
|
|
- Fixed IOC-67
|
|
"RemoveComponent needs to unwire handlers and remove them"
|
|
|
|
- Fixed IOC-59
|
|
"Child component unable to correctly resolve parent service added after the component"
|
|
|
|
- Fixed IOC-47
|
|
"Components created by FactoryActivator have their dependencies checked"
|
|
|
|
- Applied Marcus Widerberg's patch fixing FACILITIES-84
|
|
"FactorySupport - Allow parameters to factory method to be set at resolvetime"
|
|
|
|
- Applied Marcus Widerberg's patch fixing FACILITIES-82
|
|
"Programmatic configuration for FactorySupport"
|
|
|
|
- Reverted by Henry -> Apply patch from Sam Camp that fixes problems with Remoting Facility Sample and RecoverableComponent.
|
|
|
|
- Updated TypedFactoryFacility to not require a target instance
|
|
when proxying.
|
|
|
|
- Added Windsor proxy support to create proxies without targets.
|
|
|
|
- Removed relationship between ProxyOptions and ProxyGeneration options
|
|
and moved ProxyOptions into the MicroKernel. ProxyGeneration options
|
|
are created from the ProxyOptions and will probably need to be updated
|
|
as facilities demand more proxy generation customizations.
|
|
|
|
- Added ProxyOptions to allow facilities to easily add proxy interfaces
|
|
without having to create custom proxy factories. The ProxyOptions
|
|
are obtained via the ProxyUtil.
|
|
|
|
- Fixed IOC-65
|
|
"DictionaryConverter should use the alternate overload of the
|
|
PerformConversion method in order to support dictionaries that contain
|
|
custom types"
|
|
|
|
- Moved ProxyComponentInspector from Castle.MicroKernel to here and added
|
|
support to supply ProxyGenerationOptions on a ComponentModel basis. This
|
|
provides the needed ability to provide proxy options in facilities.
|
|
|
|
- Fixed IOC-69 - DefaultDependencyResolver issue with Service Overrides.
|
|
|
|
- Added ComponentProxyBehaviorAttribute and ComponentProxyInspector
|
|
to control the creation of component proxies.
|
|
|
|
- Added eval support to configuration. Currently it only supports
|
|
BaseDirectory as a content to evaluate
|
|
|
|
<?eval $BaseDirectory ?>
|
|
|
|
- Added IEnvironmentInfo in an attempt to solve complex
|
|
configuration/environment issues.
|
|
|
|
- Fixing IOC-63 - source order of constructors should not matter
|
|
|
|
- Fixed IOC-62
|
|
"Interceptors don't work properly on generic components"
|
|
|
|
- Applied Norbert Wagner's patch fixing IOC-55
|
|
"Generic Type Converters: Set default entry types to generic arguments of property type"
|
|
|
|
- Applied Jeff Brown's patch fixing IOC-54
|
|
"Empty component parameter values cause runtime exception during component resolution."
|
|
|
|
- Applied patch by Bill Pierce that
|
|
|
|
-- Introduces the WebUserControlComponentActivator
|
|
|
|
-- Introduces the KeySearchNamingSubSystem
|
|
|
|
-- Allows you to associate a custom component activator using
|
|
1. componentActivatorType on component node
|
|
2. ComponentActivatorAttribute
|
|
|
|
-- Allows you to create and configure child containers
|
|
through the configuration, using
|
|
|
|
<configuration>
|
|
<containers>
|
|
<container name="child1">
|
|
<configuration>
|
|
<facilities>
|
|
...
|
|
</facilities>
|
|
|
|
<components>
|
|
...
|
|
</components>
|
|
|
|
</configuration>
|
|
</container>
|
|
</containers>
|
|
</configuration>
|
|
|
|
- Applied AndyD's patch fixing IOC-52
|
|
"Remote access to generic components"
|
|
|
|
- Fixed IOC-45
|
|
"Proxying a component that has an interface that is extended from another interface throws an exception"
|
|
|
|
- Applied patch by Ernst Naezer fixing IOC-37
|
|
"Resolving with arguments in Windsor"
|
|
|
|
- Fixed IOC-43
|
|
"Creation of an Attribute in the Kernel that allows one property to be ignored by the dependency builder"
|
|
|
|
Introduced DoNotWireAttribute that marks a property and prevents it
|
|
from being considered by the container
|
|
|
|
- Changed Windsor to use DynamicProxy 2
|
|
|
|
- Applied patch by Adam Mills fixing IOC-42
|
|
"ResolveServices", new method added to IKernel
|
|
|
|
- Applied patch by Adam Mills fixing IOC-41
|
|
"Bug Fix BinaryTreeComponentName - Assumed Lesser nodes went to left"
|
|
|
|
- Applied patch by Adam Mills fixing IOC-40
|
|
"Provided an Implementation for BinaryTreeComponentName.Remove"
|
|
|
|
- Applied patch by Adam Mills fixing IOC-39
|
|
"Fix for Null Reference when accessing empty BinaryTreeComponentName"
|
|
|
|
- Fixed IOC-35
|
|
"Add bootstrap section to configuration file"
|
|
|
|
- Fixed issue where KeyAlreadyAdded exception would be throw for
|
|
components accepting two parameters of the same type, without overrides
|
|
|
|
- Fixed IOC-36
|
|
"Transient components with multliple constructors throw
|
|
unresolved dependency exceptions."
|
|
|
|
Removed best candidate reference, as the kernel is dynamic it should
|
|
not cache best constructors as components can be added or removed
|
|
at any time
|
|
|
|
Removed Points from candidates, as in a multithreaded scenario
|
|
this would lead to failures
|
|
|
|
|
|
- Fixed IOC-34
|
|
"Cannot use types having their own base type as constructor argument"
|
|
|
|
See revision r2787
|
|
|
|
- IOC-32, Support generic collections.
|
|
Supported collections are: ICollection<T>, IList<T>, List<T>, IDictionary<K,V>, Dictionary<K,V>, IEnumerable<T>
|
|
|
|
RC 3
|
|
====
|
|
|
|
- Applied patch by William C. Pierce <wcpierce@gmail.com> adding PerWebRequestAttribute
|
|
|
|
- Added setter to ReleasePolicy property
|
|
|
|
- Applied Curtis Schlak's patch fixing IOC-30
|
|
"Add overload to Windsor AddComponent to specify the Lifestyle"
|
|
|
|
- Refactored AbstractHandler to use IDependencyResolver
|
|
|
|
- Dependencies can be resolved now in three levels:
|
|
|
|
* CreationContext (which now implements ISubDependencyResolver)
|
|
* IHandler (which now implements ISubDependencyResolver)
|
|
* IKernel which is the normal flow
|
|
|
|
- Implemented IoC-29 using a different approach
|
|
|
|
- Renamed IKernel.AddComponentWithProperties to AddComponentExtendedProperties.
|
|
The old method name misled the programmer about its purpose.
|
|
|
|
- Added a PerWebRequestLifestyleManager which creates at most one instance of
|
|
an object per web request. To use it you must add the following http module
|
|
|
|
<httpModules>
|
|
...
|
|
<add name="PerWebRequest" type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleManager , Castle.MicroKernel,Version=0.0.1.7, Culture=neutral, PublicKeyToken=407dd0808d44fbdc"/>
|
|
|
|
<httpModules>
|
|
|
|
The strong name could be omitted if not in the GAC
|
|
|
|
- Added checks to handle cycles in dependencies graphs and avoid deadly Stack Overflow Exceptions.
|
|
|
|
- Fixed IOC-24: "Allow user to provide an attribute which will customize how to inspect properties (PropertiesDependenciesModelInspector)"
|
|
Now users can add an 'inspectionBehavior' attribute to the component node that defines
|
|
the inspection strategy. Possible values are
|
|
|
|
- None: No properties inspection should happen
|
|
- All: All properties will be inspected and collected (on the class and on the superclasses).
|
|
This is the default behavior
|
|
- DeclaredOnly: Only properties specified on type are checked (superclasses will be ignored)
|
|
|
|
- Added overload to ITypeConvertor that accept the current node configuration as well as the type in CanHandleType()
|
|
|
|
- Change: Better error message when there's an exception
|
|
setting up properties
|
|
|
|
- Fixed IOC-25: Overrides on the configuration should be considered a non-optional dependency
|
|
|
|
This fix changes a little the MicroKernel behavior. Now if you specify an service override
|
|
through external configuration, it will be considered a _non-optional_ dependency
|
|
|
|
- Uri usage replaced by CustomUri which, differently than MS' Uri class, has the same
|
|
behavior on net-1.1, net-2.0 and mono
|
|
|
|
- EventWiring Facility: now when a publisher is requested, the subscribers
|
|
are automatically started.
|
|
|
|
The side effects are:
|
|
|
|
- when a subscriber is requested it won't be wired automatically.
|
|
- There no much sense in having a subscriber with a lifestyle other than singleton
|
|
|
|
I'm still evaluating this idea. Sometimes wiring only when the subscriber is requested
|
|
might make sense, but supporting both approaches is kinda hard.
|
|
|
|
|
|
- Applied patch by Alex Henderson <webmaster@bittercoder.com> adding
|
|
IWindsorContainer.RemoveChildContainer(IWindsorContainer childContainer)
|
|
and IKernel.RemoveChildKernel(IKernel kernel)
|
|
|
|
- Applied fix by Ahmed. Now defines can be used on properties nodes like
|
|
|
|
<properties>
|
|
<?if DEBUG?>
|
|
<item>x</item>
|
|
<?end?>
|
|
</properties>
|
|
|
|
- Now with DictionaryConverter you can specify the keyType and valueType on each entry (kudos to Ahmed)
|
|
|
|
- xmlinterpreter will throw an exception if a property is not defined but referenced
|
|
using #{propertyName} syntax.(Patch from Ahmed)
|
|
|
|
- XmlProcessor refactored from XmlInterpreter (kudos to Ahmed)
|
|
Now PI are also supported (don't forget to document this on the wiki)
|
|
|
|
- Support for nested nodes on the properties. (kudos to Ahmed)
|
|
Example:
|
|
|
|
<configuration>
|
|
<properties>
|
|
<MyComponentParams>
|
|
<user>Joe</user>
|
|
<pwd>Doe</pwd>
|
|
</MyComponentParams>
|
|
</properties>
|
|
<components id=??Component
|
|
<parameters>#{ MyComponentParams }</parameters>
|
|
</components>
|
|
</configuration>
|
|
|
|
Will result in
|
|
|
|
<components id=??Component
|
|
<parameters>
|
|
<user>Joe</user>
|
|
<pwd>Doe</pwd>
|
|
</parameters>
|
|
</components>
|
|
|
|
- Type converter for kernel components. This allows a usage like this:
|
|
|
|
<component id="mycomp">
|
|
|
|
<parameters>
|
|
<servicelist>
|
|
<list type="IMyService, MyAssembly">
|
|
<item>${keytocomponent1}</item>
|
|
<item>${keytocomponent2}</item>
|
|
</list>
|
|
</servicelist>
|
|
</parameters>
|
|
|
|
- Removed support for MethodMeta on ComponentModel. The design decision here
|
|
is to make the facilities interested on it to extend MethodMetaInspector
|
|
reading from a specific node.
|
|
|
|
RC 2
|
|
====
|
|
|
|
- AsyncInitializationContainer introduced. Special container flavor that installs the
|
|
facilities and components using a background thread.
|
|
|
|
- Support for evaluation of expressions within the xml configuration (kudos to Ahmed)
|
|
The following "statements" are supported:
|
|
|
|
<define flag="DEBUG" />
|
|
<undef flag="DEBUG"/>
|
|
|
|
<if defined="DEBUG">
|
|
component/facility nodes
|
|
</if>
|
|
|
|
<choose>
|
|
<when defined="DEBUG">
|
|
<component id="debug"/>
|
|
</when>
|
|
<when defined="Qa">
|
|
<component id="qa"/>
|
|
</when>
|
|
<when defined="Prod">
|
|
<component id="prod"/>
|
|
</when>
|
|
<otherwise>
|
|
<component id="default"/>
|
|
</otherwise>
|
|
</choose>
|
|
|
|
- Startable facility: support to specify the attribute startable=true on the configuration
|
|
|
|
- Better error messages: now the components waiting for dependencies will recursively
|
|
report what they are waiting for.
|
|
|
|
- Support for custom lifestyle through configuration (kudos to Bawer Dagdeviren):
|
|
|
|
<component id="my.component"
|
|
type="MyLib.MyComponent, MyLib"
|
|
lifestyle="custom"
|
|
customLifestyleType="MyLib.MyCustomLifestyle, MyLib" />
|
|
|
|
- Added Type converter for enums
|
|
|
|
- Support to associate configuration nodes to methods. Usage:
|
|
|
|
<component>
|
|
<methods>
|
|
<save />
|
|
<save signature="System.String, mscorlib" />
|
|
<save signature="System.String, mscorlib;System.Int32, mscorlib" />
|
|
</methods>
|
|
</component>
|
|
|
|
Which is equivalent to
|
|
|
|
<component>
|
|
<methods>
|
|
<method name="save" />
|
|
<method name="save" signature="System.String, mscorlib" />
|
|
<method name="save" signature="System.String, mscorlib;System.Int32, mscorlib" />
|
|
</methods>
|
|
</component>
|
|
|
|
- IResource introduced (FileResource, AssemblyResource, ConfigResource and UncResource)
|
|
which are accessible through Uris:
|
|
|
|
- FileResource:
|
|
file://pathtofile
|
|
(For example: file://c:\mydir\file.txt)
|
|
|
|
- AssemblyResource:
|
|
assembly://AssemblyName/ExtendingNamespace/filename
|
|
(For example: assembly://Castle.Windsor.Tests/Configuration2/include1.xml)
|
|
|
|
- ConfigResource:
|
|
config://sectioname
|
|
(For example: config://castle will fetch the
|
|
<configuration><castle> entry in the configuration)
|
|
|
|
- UncResource:
|
|
\\server\file
|
|
(For example: \\mysharedplace\myconfig.xml)
|
|
|
|
- IResource, IResourceFactory and IResourceSubSystem introduced
|
|
|
|
- Ability to use <properties> in configuration files. Usage
|
|
|
|
<properties>
|
|
<prop1>prop1 value</prop1>
|
|
<prop2>prop2 value</prop2>
|
|
</properties>
|
|
|
|
<facilities>
|
|
|
|
<facility id="testidengine" >
|
|
<item>#{prop1}</item>
|
|
</facility>
|
|
|
|
<facility id="testidengine2" >
|
|
<item value="#{prop2}"/>
|
|
</facility>
|
|
|
|
</facilities>
|
|
|
|
|
|
- Ability to use <include> in configuration files. Usage
|
|
|
|
Main file:
|
|
|
|
<configuration>
|
|
|
|
<include uri="file://include1.xml"/>
|
|
|
|
</configuration>
|
|
|
|
include1.xml:
|
|
|
|
<configuration>
|
|
|
|
<components>
|
|
|
|
<component id="testidcomponent1">
|
|
</component>
|
|
|
|
<component id="testidcomponent2">
|
|
</component>
|
|
|
|
</components>
|
|
|
|
</configuration>
|
|
|
|
|
|
Beta 3
|
|
======
|
|
|
|
- Bug in dependency resolution (when chained) fixed
|
|
- Better message description on exceptions related to unresolved dependencies.
|
|
- Fixed bug in AddComponentWithProperties
|
|
|
|
Beta 2 - 10/apr/2005
|
|
======
|
|
|
|
- Bug fixes
|
|
|
|
- Configuration object model separated into interpreters and sources
|
|
|
|
- AbstractFacility added
|
|
|
|
|
|
Beta 1 - 21/jan/2005
|
|
======
|
|
|
|
- Changed: from #{} to ${} - way of referencing to another component
|
|
on the configuration.
|
|
|
|
- Added: support for dictionaries, lists and arrays on the configuration file.
|
|
|
|
<component>
|
|
<parameters>
|
|
<properties>
|
|
<dictionary>
|
|
<item key="mykey">value</item>
|
|
</dictionary>
|
|
</properties>
|
|
</parameters>
|
|
</component>
|
|
|
|
- Added: Component Graph (used by the Remove method and to dispose the components)
|
|
|
|
- Fixed: Remove method
|
|
|
|
- Fixed: Windsor: Proxy for components with (service != impl)
|