Revision history for Bread-Board 0.29 2013-11-21 - Fix deprecated enum syntax 0.28 2013-08-30 - Allow overriding of services and containers. This is useful when using the common pattern of "sub BUILD { my $self = shift; container $self => as { ... } }" since the BUILD method in a subclass can modify existing services and containers that were defined in a superclass, rather than only being able to replace them (Florian Ragwitz, #26, #27). 0.27 2013-08-06 - allow the 'container $obj' sugar for parameterized containers (Florian Ragwitz, #25) 0.26 2013-08-01 - allow cloning containers with parameterized subcontainers (Florian Ragwitz, #22) - allow referencing parent services from parameterized subcontainers (Florian Ragwitz, #23) - deprecate special case in path traversal where a path component with the name of the current container was ignored (doy, #20) - fix setting the current container multiple times from outside of a container (doy) - make some error messages more helpful (Jason Galea, #14) - doc improvements (Sterling Hanenkamp, zdk, Philippe Bruhat, and Gabor Szabo; #15, #17, #19, #21) - remove the (unmaintained) Bread::Board::GraphViz 0.25 2011-10-20 * Bread::Board - the container sugar was misbehaving (since April 2010 apparently), so we have fixed it and clarified it 0.24 2011-10-15 * Bread::Board::Container - make sure to clone subcontainers, this is necessary for parameterized containers to retain their connections * Bread::Board::Traversable - add some errors, be a little more defensive 0.23 2011-10-14 * Bread::Board::Container::Parameterized - retain control of names of the generated containers, so if your the container being generated has a name, it keeps it. - this makes these containers more addressable when composed into higher level containers - this helps when subclassing parameterized containers - switch the generated containers to be created with builder instead of default - also helps when subclassing parameterized containers as well * t/046_custom_parameter_service.t - fixing the error about Moose deprecations 0.22 2011-10-03 - When inferring a service for a type, allow subclasses to fulfill discovered types. - Converted to Dist::Zilla 0.21 2011-09-06 * Bread::Board - Allow service() and alias() sugar functions to return the newly-created objects if the context container is not defined. (thanks to kip hampton) - added tests for this - this module is just an exporter, so it does not need to 'use Moose' (thanks to Tomas Doran) - fixed some spelling and grammar errors (thanks to ben hengst and Brad Bowman) * Bread::Board::Service::WithParameters - parameters attribute now has a builder instead of a default, so as to allow better tweaking in subclasses (thanks to Andre Walker) - added tests for this 0.20 2011-06-13 * Bread::Board::Lifecycle::Singleton - fix bug in singletons with circular refs (thanks to doy) - added tests for this (thanks to perigrin) 0.19 2011-06-01 * Bread::Board::GraphViz - added by jrockway, this allows you to visualise a Bread::Board system using GraphViz - note that this is optional and requires you to install optional dependencies * Bread::Board::Service::Alias - add the ability to alias services under another name (thanks to doy) - added tests for this * Bread::Board::Service::Inferred - improving edge cases (thanks to doy) * Bread::Board::Service::* - several code improvements (thanks to doy) * Bread::Board::Service - allow for custom Lifecycles by using the "+" prefix (thanks to jasonmay) - added tests for this 0.18 2011-04-13 * Bread::Board::Service::WithParameters - added has_parameter_defaults method to check if a parameter has default values * Bread::Board::Service::WithDependencies - added a check for has_parameter_defaults before we make a Thunk - added test for this (thanks to rafl) 0.17 2011-02-22 * Bread::Board::Service::Inferred - make recrusive inferrence work - add tests for this * Bread::Board::Manual::Concepts::Advanced - small doc update about subclassing and the name parameter, resolving RT#63124 (thanks to Evan Haas) !! POSSIBLE BACK COMPAT BREAKAGE !! * Bread::Board::Traversal - make relative parent path traversal more sane, there should be no more need for excessive ../../ stuff in dependency service paths (thanks doy) - adjust tests accordingly - this should fix RT#64478 as well 0.16 2011-01-10 * Bread::Board::service sugar - adding the 'service_class' param for the service sugar function which allows you to pass in a custom service subclass - added tests for this (062_service_class_w_sugar.t) * Bread::Board::Dependency - added the service_params attribute here so that it is possible to pass in parameters when you depend on a service which requires them - added tests for this (045_parameters_in_dependency.t) * Bread::Board::Service::Inferred - when a typemapped service is created it is now named with the special 'type:' prefix. This allows you to depend on a typemapped service in a non-typemapped service - added tests for this (079_depending_on_type.t) * Bread::Board::Traversable - improving the error messages when a container/service is not found 0.15 2010-09-30 * Bread::Board::Service - removed the MooseX::Param dependency and implemented it internally so that we have more control * Bread::Board::Types - the Bread::Board::Service::Dependencies type now can also coerce ArrayRef[Str] and HashRef[Str] types correctly (doy) * Bread::Board::Service::WithDependencies - we now only create a ::Deferred::Thunk object if we have non-optional params * Bread::Board::Service::WithParameters - added the has_required_parameters method, to see if there are any non-optional parameters - added tests for both the above !! NEW EXPERIMENTAL FEATURE !! * Bread::Board - added the typemap and infer keyword to help in the mapping of types and construction of inferred services - added tests for this * Bread::Board::Container - added the typemap feature and added the ->resolve( type => $type ) call - added tests for this * Bread::Board::Service::Inferred - added this and tests for it * Bread::Board::Manual::Concepts::Typemap - added this to help explain the typemap feature 0.14 2010-08-24 * Bread::Board::Container - added the ->resolve method to replace the ->fetch( $service )->get pattern that annoys mst so much. - adjusted all the tests to account for this change. - adjusted all the docs to now use this approach instead - now using Try::Tiny for all exception handling (except the Deferred service) * Bread::Board::Service::WithDependencies - if you want to depend on a parameterized service, now you can and it will return a Bread::Board::Service::Deferred::Thunk that you can call ->inflate on and pass in the parameters for it. - added tests for this * Bread::Board::Service::Deferred::Thunk - added this + tests for it 0.13 2010-04-23 * Bread::Board - making the include keyword handle compilation errors better (doy) - added test for this * Bread::Board::Container Bread::Board::Container::Parameterized - it is now possible to store parameterized containers within regular containers and have them behave properly - added tests for this * Bread::Board::Manual::Example::* - adding some examples of ways to use Bread::Board to the manual - added tests to confirm they work 0.12 2010-04-18 * Bread::Board - added the `include` keyword which will evaluate an external file within your Bread::Board configuration - added tests for this - added support for parameterized containers - added tests for this - the 'container' keyword will now accept an instance of Bread::Board::Container instead of the name, this makes subclassing easier - added tests for this + Bread::Board::Container::Parameterized - added this module and tests + Bread::Baord::Manual - moved, re-organizad and added too the docs that were previously in Bread::Board.pm 0.11 2010-03-25 * Much improved documentation. * Fixed inc/ to include all used Module-Install extensions. 0.10 2010-02-22 * Bread::Board - import strict and warnings into the caller upon import (Florian Ragwitz) - fixing the SYNOPSIS so that it will actually run (thanks to zby for spotting this) * Bread::Board::ConstructorInjection - Add a constructor_name parameter for classes using MooseX::Traits or other things which need an alternately named constructor. (Tomas Doran) 0.09 2009-07-29 Add cloning support for containers and services (thanks to jrockway for this) - adding tests for this * Bread::Board::ConstructorInjection - use meta->constructor_name instead of "new" if possible (jrockway) * Bread::Board::Service::WithParameters - fixing a leak where we would hold onto parameters that were passed into get() 0.08 2009-07-18 - updating dates on all files * Bread::Board::LifeCycle::Singleton::WithParameters - new module added to support the idea of a singleton lifecycle keyed on the parameters rather then just a per-instance item. * Bread::Board::Traversable - fixed the is_weak_ref mis-spelling 0.07 2009-02-18 - Work with new MooseX::Params::Validate - Specify MX::P::Validate version number in Makefile.PL 0.06 2008-11-03 - Forgot to update MANIFEST before uploading to CPAN. 0.05 2008-11-03 - Applied immutablity to classes where applicable, and vigorously unimport Moose keywords when they are no longer needed. This results in x 2 performance as far as defining a Bread::Board model (Daisuke Maki). * Bread::Board - Implemented unimport(), thus allowing you to remove keywords exported by Bread::Board (Daisuke Maki). * Bread::Board::Traversable - Unrolled recursive calls to loops, and removed Sub::Current dependency (Daisuke Maki) 0.04 2008-10-31 * Bread::Board Bread::Board::Traversable - fix root path handling (thanks to Daisuke Maki) - added tests for this * Bread::Board::Dumper - Simple utility for dumping containers (thanks to Daisuke Maki) * t/ - fixing the plans so that new versions of Test::More stop complaining 0.03 2008-01-08 * Bread::Board::Service::WithParameters - fixed the parameter validation to use a custom cache key, this is so that it plays nicely with the new MooseX::Params::Validate - added tests for this 0.02 2008-01-08 - forgot a dependency, whoops. 0.01 2008-01-07 - Out with the old (IOC) and in with the new (Bread::Board)