Hi Thomas,

On Mar 26, 2012, at 3:54 PM, Thomas Mortagne wrote:

> commons does not seems to be the right place according to your
> description. It would probably fit better in the platform-bridge since
> it's going to be used by component that need to either use the bridge
> or directly use oldcore to access the database. that's also where the
> document related events are located.

ok I hesitated because we already have application-wide events there (even 
though it's not their correct place).

Anyway I'm fine with the bridge (which also isn't the correct final place ;)).

Apart from this, are you ok with doing this?

Thanks
-Vincent

> 
> On Mon, Mar 26, 2012 at 9:54 AM, Vincent Massol <[email protected]> wrote:
>> I forgot to mention one thing.
>> 
>> What I'm proposing here is a stopgap solution so that we can progress with 
>> other refactorings. In the future the solution as I see it is to keep using 
>> the ApplicationStartedEvent but introduce event listener priorities and 
>> refactor XWiki startup so that the XWiki object (and thus the database 
>> initialization) is created at startup and not during the first HTTP request.
>> 
>> Thanks
>> -Vincent
>> 
>> On Mar 25, 2012, at 6:43 PM, Vincent Massol wrote:
>> 
>>> Hi devs,
>>> 
>>> I'd like to quickly add a new ApplicationReadyEvent and send when we 
>>> initialize the XWiki class the first time:
>>> 
>>> Index: 
>>> ../xwiki-commons/xwiki-commons-core/xwiki-commons-observation/xwiki-commons-observation-api/src/main/java/org/xwiki/observation/event/ApplicationReadyEvent.java
>>> ===================================================================
>>> --- 
>>> ../xwiki-commons/xwiki-commons-core/xwiki-commons-observation/xwiki-commons-observation-api/src/main/java/org/xwiki/observation/event/ApplicationReadyEvent.java
>>>   (revision )
>>> +++ 
>>> ../xwiki-commons/xwiki-commons-core/xwiki-commons-observation/xwiki-commons-observation-api/src/main/java/org/xwiki/observation/event/ApplicationReadyEvent.java
>>>   (revision )
>>> @@ -0,0 +1,35 @@
>>> +/*
>>> + * See the NOTICE file distributed with this work for additional
>>> + * information regarding copyright ownership.
>>> + *
>>> + * This is free software; you can redistribute it and/or modify it
>>> + * under the terms of the GNU Lesser General Public License as
>>> + * published by the Free Software Foundation; either version 2.1 of
>>> + * the License, or (at your option) any later version.
>>> + *
>>> + * This software is distributed in the hope that it will be useful,
>>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>>> + * Lesser General Public License for more details.
>>> + *
>>> + * You should have received a copy of the GNU Lesser General Public
>>> + * License along with this software; if not, write to the Free
>>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>>> + */
>>> +package org.xwiki.observation.event;
>>> +
>>> +/**
>>> + * An event triggered when the XWiki application is ready to service 
>>> requests.
>>> + *
>>> + * @version $Id$
>>> + * @since 4.0M2
>>> + */
>>> +public class ApplicationReadyEvent implements Event
>>> +{
>>> +    @Override
>>> +    public boolean matches(Object otherEvent)
>>> +    {
>>> +        return this.getClass().isAssignableFrom(otherEvent.getClass());
>>> +    }
>>> +}
>>> Index: 
>>> xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/XWiki.java
>>> ===================================================================
>>> --- 
>>> xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/XWiki.java
>>>  (revision 6ddfc45a6aa807ac4b6a9bc9e101c042d0f0dd3d)
>>> +++ 
>>> xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/XWiki.java
>>>  (revision )
>>> @@ -109,6 +109,7 @@
>>> import org.xwiki.model.reference.WikiReference;
>>> import org.xwiki.observation.EventListener;
>>> import org.xwiki.observation.ObservationManager;
>>> +import org.xwiki.observation.event.ApplicationReadyEvent;
>>> import org.xwiki.observation.event.Event;
>>> import org.xwiki.query.QueryException;
>>> import org.xwiki.rendering.macro.wikibridge.WikiMacroInitializer;
>>> @@ -808,7 +809,12 @@
>>>         // that we need DB access to be available (at component 
>>> initialization) to make this possible.
>>>         registerWikiMacros();
>>> 
>>> -        Utils.<ObservationManager> getComponent((Type) 
>>> ObservationManager.class).addListener(this);
>>> +        ObservationManager observationManager =
>>> +            Utils.<ObservationManager> getComponent((Type) 
>>> ObservationManager.class);
>>> +        observationManager.addListener(this);
>>> +
>>> +        // Send Event to signal that the application is ready to service 
>>> requests.
>>> +        observationManager.notify(new ApplicationReadyEvent(), this);
>>>     }
>>> 
>>>     /**
>>> 
>>> 
>>> The rationale is that a lot of code require to know when the application is 
>>> ready for servicing and need to listen to this event and right now we're 
>>> postponing implementing several refactorings in XWiki because of this 
>>> missing event.
>>> 
>>> WDYT?
>>> 
>>> Thanks
>>> -Vincent
>>> 
>> 
>> _______________________________________________
>> devs mailing list
>> [email protected]
>> http://lists.xwiki.org/mailman/listinfo/devs
> 
> 
> 
> -- 
> Thomas Mortagne
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to