Revision history for Bread-Board

0.30  2014-02-02
    - fix deprecated use of Class::MOP::load_class (Caleb Cushing, #33)

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)
