Peter,
>>How about an Interface PersistableBlock that implemented the following
>>methods :-
>>
>> Object persist();
>> void unPersist(Object persistedForm);
>>
>>Phoenix, on shutdown, could persist the block. If built-in, the
>>unPersist method would come just before initialize() in terms of lifecycle;
>>
>
>I would prefer it not to be a kernel service.
>
OK, Conceded.
>>As a slight alternative, it could be a Cornerstone interface and a
>>separate block (with defautl impl). That block could, on stop(), invoke
>>the persist() method it it's dependancy. It could similarly invoke
>>unPersist for on start(). That default block could take a number of
>>configurations, including one that had a cron based automatic
>>persistence scheme.
>>
>
>Instead of doing it as dependencies how about instead using the newly added
>BlockListener. In fact it was these application wide non-lifecycle "aspects"
>that led to creation of BlockListener. Your code would look something like
>
OK, I've had an itch about BlockListener for a while in that it is not a
block (as far as I can see). Can it avail of configuration and
component-manager services?
>
>
>blockAdded
>
>The logic would be something like the followin
>
>class PersistantListener
>{
> private Persistor m_persistor;
> private ArrayList m_persistants = new ArrayList();
>
> void blockAdded( BlockEvent event )
> {
> final Block block = event.getBlock();
>
> if( block instanceof Persistant )
> {
> m_persistants.add( block );
> }
>
> if( null == m_persistor && block instanceof Persistor )
> {
> m_persistor = (Persistor)block;
> int size = m_persistants.size();
> for( int i = 0; i < size; i++ )
> {
> final Block other = (Block)m_persistants.get( i );
> m_persistor.load( (Persistant)other );
> }
> }
> else if( null != _m_persistor )
> {
> m_persistor.load( (Persistant)block );
> }
> }
>
> void blockRemoved()
> {
> //reverse above
> }
>}
>
>So in this case you would have a Persistor Block that persists all the other
>blocks that want it. We also have Persistent Blocks who want to be persisted.
>The above code will tell the Persistor about all the persistents in the .sar
>
>That work for you ?
>
Yes it would work, It could be inside the SAR app or outside I presume,
given the concern above. An Assembler's duty.
- Paul H
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>