Revision history for Perl extension IOC. 0.22 Mon Dec 27 2004 * IOC::Service::ConstructorInjection * IOC::Service::SetterInjection - fixed class loading error in both, these services will load your class if it is not loaded already, and they were not doing it correctly. - added tests to confirm fixes 0.21 Sat Dec 25 2004 (Merry Christmas) + Added IOC::Service::Literal - this is an optimization to allow for literal values to be held as services without them needing to be wrapped in subroutines. - added documentation for this - added tests for this * IOC::Container - optmized this for IOC::Service::Literal objects since they cannot have dependencies, and therefore cannot have circular references there is no need to fuss with them (lock, deferred, etc). 0.20 Thurs Dec 23 2004 * IOC::Service::ConstructorInjection - added support for getting constructor args which are outside of the current container and can be located with find() - added tests for this - added to the docs for this * IOC::Service::SetterInjection - added support for getting setter args which are outside of the current container and can be located with find() - added tests for this - added to the docs for this 0.19 Thurs Dec 23 2004 * IOC::Proxy - fixed an issue with how overloaded objects were handled. We no longer copy the '()' method. This will help to deal with overloaded object in a more consistent manner. 0.18 Fri Dec 17 2004 * IOC::Container - improved some diagnostic messages * IOC::Visitor::ServiceLocator - improved some diagnostic messages - added tests for these * IOC::Exceptions ~ added IOC::UnableToLocateService to help improve the diagnostics in IOC::Visitor::ServiceLocator 0.17 Wed Dec 15 2004 * IOC::Container - added code to make sure that proxied instances do not get re-proxied when they are retrieved with get() again. - added tests for this 0.16 Fri Nov 26 2004 * IOC::Service - added the deferred() method, which will return an IOC::Service::Deferred wrapper around the given service instance. * IOC::Container - removed the direct reference to the IOC::Service::Deferred class, and it now calls the deferred() method on the IOC::Service instance itself. 0.15 Sat Nov 20 2004 * IOC::Container - adjusted how cyclical dependencies are handled, so that they are now possible, although still somewhat in their early stages. - added tests for this * IOC::Service - adjusted how cyclical dependencies are handled, and created a sub-package called IOC::Service::Deferred to facilitate this - added tests for this 0.14 Thurs Nov 18 2004 > now using Scalar::Util::blessed() instead of the convoluted UNIVERSAL::isa() stuff. This change affects a number of packages. - added Scalar::Util as a dependency 0.13 Wed Nov 17 2004 * IOC::Service::Prototype - removed any reference to the prototypical instance, so that complete lifecycle control is given to the consumer of the service ~ added tests and documentation for this 0.12 Tues Nov 16 2004 + Added IOC::Proxy::Interfaces - added tests and documentation for this * IOC::Proxy - broke out some more methods, so that subclasses can really affect things on a granular level 0.11 Thurs Nov 11 2004 * IOC - added the IOC::Proxy module to the module which get pre-loaded with this module * IOC::Proxy - broke the main methods down into small methods (in Strategy pattern fashion) to allow for variance of functionality in subclasses * IOC::Container - now detects a cyclical relationship and will throw an IOC::IllegalOperation exception if it is found. I am currently working on how to allow for these types of relationships to exists so this is really just a temporary solution. 0.10 Tues Nov 9 2004 * IOC::Proxy ~ fixed a warning about subroutine redefinition when we add the auto-stringification functionality to an object 0.09 Mon Nov 8 2004 + added IOC::Proxy - added tests and documentation for this * IOC::Exceptions - added the IOC::OperationFailed exception * IOC::Container - added the proxy related functions and all the code to handle it ~ added tests and documentation for this functionality 0.08 Fri Nov 5 2004 * IOC::Container - added the 'unregister' method to remove allow a IOC::Service to be removed ~ added tests and documentation * IOC::Service - added the 'removeContainer' method to facilitate the IOC::Container->unregister method ~ added tests and documentation 0.07 Thurs Oct 21 2004 > Improved documentation for all classes, however I still have more to write + added IOC::Service::Prototype + added IOC::Service::Prototype::ConstructorInjection + added IOC::Service::Prototype::SetterInjection - this allows services to dispense prototypes rather then just singleton instances ~ added tests for these new classes * IOC::Exceptions ~ added IOC::NotFound exception to handle general cases * IOC::Container ~ added findRootContainer method * IOC::Container::MethodResolution - now handles auto-finding of sub-containers as well, and introduces a new pseduo-method 'root' which will allow you to go back to the root of the container hierarchy. * IOC::Service::ConstructorInjection - fixed parameter handling so it works with the Prototype:: classes * IOC::Visitor::ServiceLocator - now uses findRootContainer method * IOC::Visitor::SearchForContainer - removed redundant code (thanks Devel::Cover :) 0.06 Tues Oct 19 2004 << NOTE: Some API Changes >> * IOC::Registry - changed names of methods, anything with the word 'Root' in it has now been changed to 'Registered'. - added unregisterContainer method - added locateService method - added locateContainer method - added getRegisteredContainerList method - added hasRegisteredContainer method - added DESTORY method ~ added tests and documentation for all new methods * IOC::Service ~ removed optional $container argument to constructor * IOC::Service::ConstructorInjection ~ removed optional $container argument to constructor * IOC::Service::SetterInjection ~ removed optional $container argument to constructor 0.05 Tues Oct 19 2004 + added IOC::Registry ~ created dependency with Class::StrongSingleton ~ added tests for this + added IOC::VisitorSearchForService ~ added tests for this + added IOC::VisitorSearchForContainer ~ added tests for this * IOC::Container > added hasSubContainer method > added hasService method 0.04 Tues Oct 19 2004 < No CODE changes> - forgot to add Class::Interfaces to the dependency list - forgot to include this changelog 0.03 Mon Oct 18 2004 + added IOC::Interfaces ~ created dependency with Class::Interfaces + added IOC::Visitor::ServiceLocator ~ added tests for this * IOC::Exceptions > changed few names again, but I got it right now * IOC::Container > added visitor support - made IOC::Container inherit from the IOC::Visitable interface (see IOC::Interfaces) ~ added tests for this ~ added documentation for this > added support for sub-containers - added example of this to SYNOPSIS - added a number of methods to deal with sub-containers and parent containers ~ added tests for all these ~ added documentation for all these > added 'find' method which utilizes a Visitor to locate a given service through a path-like syntax (see the IOC::Visitor::ServiceLocator for more) > changed names of exceptions ~ IOC::DuplicateServiceException to IOC::ServiceAlreadyExists 0.02 Fri Oct 15 2004 + added IOC::Container::MethodResultion ~ added tests for this + added IOC::Service::ConstructorInjection ~ added tests for this + added IOC::Service::SetterInjection ~ added tests for this * IOC::Exceptions > added a few more exceptions to IOC::Exceptions and changed the names of a few as well * IOC::Container > changed names of exceptions ~ IOC::MissingService to IOC::ServiceNotFound * IOC::Service > when a container is passed to the IOC::Service constructor, it will now cause the service to be officially registered with the container 0.01 Thu Oct 14 20:03:20 2004 - module created