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

