Re: 3.1 IoC

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Thu May 27 2010 - 08:29:41 UTC

  • Next message: Andrus Adamchik: "Re: Vertical inheritance"

    DataDomain is injectable of course. Haven't looked at injection at the
    level of SQLActions yet, so don't have an answer.

    Andrus

    On May 27, 2010, at 11:16 AM, Andrey Razumovsky wrote:

    > Once I implemented BatchQueryBuilderFactory and used an ugly hack
    > needed to
    > move it from DataDomain down to Cayenne internals. I think I could
    > make that
    > code cleaner using injection..
    >
    > 2010/5/27 Andrus Adamchik <andru..bjectstyle.org>
    >
    >> I think at some point we will reorg the unit tests to be based on a
    >> DI
    >> stack. Need to think about a good design for this...
    >>
    >> In the meantime, can you be more specific - which class will have
    >> that
    >> injectable var? Maybe it can be initialized without injection?
    >>
    >> And on a general note, in Cayenne not all stack objects are created
    >> via
    >> injection. Either by design (there has to be some level of
    >> granularity at
    >> which DI stops and where an object can decide on its own on how to
    >> initialize its composite state) or because we haven't switched them
    >> yet. DI
    >> enabled are the high-level stack objects (DataDomain), and common
    >> user
    >> extension points, such as DbAdapter or DataSourcFactory.
    >>
    >> Andrus
    >>
    >>
    >>
    >> On May 27, 2010, at 10:42 AM, Andrey Razumovsky wrote:
    >>
    >> No. in main Cayenne code, I want to add injectable var and put code
    >> that
    >>> injects default implementation in CayenneServerModule. But that
    >>> wouldn't
    >>> work at least for unit tests, since injection does not get invoked
    >>> there.
    >>> What's the best way to fix the situation?
    >>>
    >>> 2010/5/27 Andrus Adamchik <andru..bjectstyle.org>
    >>>
    >>> Are we still talking about unit tests? Can you give an example of
    >>> what
    >>>> you
    >>>> are trying to accomplish?
    >>>>
    >>>> Andrus
    >>>>
    >>>>
    >>>> On May 27, 2010, at 10:33 AM, Andrey Razumovsky wrote:
    >>>>
    >>>> So does that mean I never can rely on injecting, and must always
    >>>> have a
    >>>>
    >>>>> insurance of default injectable interface implementation in my
    >>>>> code?
    >>>>>
    >>>>> 2010/5/27 Andrus Adamchik <andru..bjectstyle.org>
    >>>>>
    >>>>> Not to the unit tests inheriting from CayenneCase and friends.
    >>>>> Unit
    >>>>> tests
    >>>>>
    >>>>>> were always bootstrapped in their own way, even in the past
    >>>>>> (mostly for
    >>>>>> performance reasons). However if you need to define mock
    >>>>>> services, etc.
    >>>>>> via
    >>>>>> IoC this can be done with a great deal of flexibility. E.g. see
    >>>>>> DataDomainProviderTest.java,
    >>>>>> DefaultDataSourceFactoryLoaderTest.java
    >>>>>> and
    >>>>>> other tests in the same package.
    >>>>>>
    >>>>>> Andrus
    >>>>>>
    >>>>>>
    >>>>>>
    >>>>>>
    >>>>>> On May 27, 2010, at 9:21 AM, Andrey Razumovsky wrote:
    >>>>>>
    >>>>>> Hi Andrus,
    >>>>>>
    >>>>>>
    >>>>>>> Are new 3.1 DI "modules" (CayenneServerModule) bound to Cayenne
    >>>>>>> bootstrap
    >>>>>>> process? At least, I don't think they are when we're running
    >>>>>>> JUnit
    >>>>>>> tests.
    >>>>>>> Or
    >>>>>>> otherwise, how to "turn on" injecting?
    >>>>>>>
    >>>>>>> --
    >>>>>>> Andrey
    >>>>>>>
    >>>>>>>
    >>>>>>>
    >>>>>>
    >>>>>>
    >>>>> --
    >>>>> Andrey
    >>>>>
    >>>>>
    >>>>
    >>>>
    >>>
    >>> --
    >>> Andrey
    >>>
    >>
    >>
    >
    >
    > --
    > Andrey



    This archive was generated by hypermail 2.0.0 : Thu May 27 2010 - 08:30:16 UTC