On Mon, Mar 26, 2012 at 4:31 PM, Vincent Massol <vincent(a)massol.net> wrote:
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).
Yes thosed should probably be in the container api
Anyway I'm fine with the bridge (which also isn't the correct final place ;)).
Well bridge fit well with temporary stuff caused by limitation in the
current storage impl ;)
Apart from this, are you ok with doing this?
Yes, I think it's probably the third vote on the subject but always
pushed back because it was not the cleanest on the long run :)
Here is my +1.
Thanks
-Vincent
On Mon, Mar 26, 2012 at 9:54 AM, Vincent Massol <vincent(a)massol.net> 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
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
--
Thomas Mortagne
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
--
Thomas Mortagne