My work schedule is a bit off the wall at the moment. Just got home
(12:45AM), and got to be back at 09:30...

I had a quick look before, but can't recall any particular
doubt/concerns, so I suggest go ahead and we solve it after the fact
since nothing will break.

Niclas

On Tue, Jul 24, 2012 at 6:07 PM, Paul Merlin <[email protected]> wrote:
> Niclas,
>
> I have some free cycles to work on finishing QI-364 but I'd like to have
> feedback on the first activation refactoring I did on
> MemoryEntityStoreService and JdbmEntityStoreService before going down on all
> librairies and extensions.
>
> Could you make a quick review of the two commits I mentionned and tell me
> what you think?
>
> Thanks!
>
> /Paul
>
>
> Paul Merlin a écrit :
>
>> Niclas Hedhman a écrit :
>>>>
>>>> I did not remove the Activatable interface yet because that imply a lot
>>>> of tedious changes in libraries, extensions, tools and samples.
>>>
>>>
>>> Yes, this will actually present some major challenge.
>>>
>>> foreach( Library p )
>>>    - Write unit test to capture Activatable functionality.
>>>    - Remove Activatable.
>>>    - Unit test should fail.
>>>    - Introduce the activator replacement
>>>    - Unit test should succeed.
>>>
>>> This will take a lot of time. But the nice upside a strengthening of
>>> the unittests in libraries, which at the moment is a bit weak.
>>
>> The Activators mechanism handle Types activation in a predictible order,
>> but do not handle Mixins activation. That's because, and we already knew
>> that, Types order are guaranted but not Mixins order. This indeed prevent
>> private mixins activation and means that the @Activators annotation can be
>> added on Types only.Another side effect is that you can't use the same
>> activation method names on different mixins.
>>
>> Much more restrictive than legacy Activatable support but strict and
>> predictible.
>>
>> So we'd have to refactor all code that rely on Mixins activation and there
>> is a lot. As a first example let's take entitystore-jdbm.
>>
>> JdbmEntityStoreMixin has activation and passivation needs.
>> JSONMapEntityStoreMixin too.
>> JSONMapEntityStoreMixin use @This MapEntityStore implemented by
>> JdbmEntityStoreMixin.
>>
>> For now I can't see how to proceed without adding a lot of other types
>> related to activation. In the end we won't be able to easily reuse a mixin
>> that has activation needs without a correct type (an interface with the
>> @Activators annotation).
>>
>> So, more verbose too.
>>
>>
>> To support the discussion, here is a first commit that removes the
>> Activatable interface from MemoryEntityStoreService:
>>
>>
>> https://github.com/Qi4j/qi4j-sdk/commit/e501048736d0dd81fda1a530fff0ae0b3917044e
>>
>>
>> And another one that does the same thing on JdbmEntityStoreService:
>>
>>
>> https://github.com/Qi4j/qi4j-sdk/commit/001814e5f3eb5751c6de1a23574f21b87bba50dc
>>
>> Note that JdbmEntityStoreService extends JdbmEntityStoreActivation
>> _and_ JSONMapEntityStoreActivation.
>>
>>
>> WDYT ?
>>
>> /Paul
>>
>>
>> _______________________________________________
>> qi4j-dev mailing list
>> [email protected]
>> http://lists.ops4j.org/mailman/listinfo/qi4j-dev
>
> _______________________________________________
> qi4j-dev mailing list
> [email protected]
> http://lists.ops4j.org/mailman/listinfo/qi4j-dev



-- 
Niclas Hedhman, Software Developer
http://www.qi4j.org - New Energy for Java

I live here; http://tinyurl.com/3xugrbk
I work here; http://tinyurl.com/6a2pl4j
I relax here; http://tinyurl.com/2cgsug

_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev

Reply via email to