From do-not-reply at jboss.org Tue Aug 31 16:20:03 2010
Content-Type: multipart/mixed; boundary="===============5688513857349940433=="
MIME-Version: 1.0
From: do-not-reply at jboss.org
To: gatein-commits at lists.jboss.org
Subject: [gatein-commits] gatein SVN: r3987 -
portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp.
Date: Tue, 31 Aug 2010 16:20:03 -0400
Message-ID: <201008312020.o7VKK3ba010217@svn01.web.mwc.hst.phx2.redhat.com>
--===============5688513857349940433==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: chris.laprun(a)jboss.com
Date: 2010-08-31 16:20:03 -0400 (Tue, 31 Aug 2010)
New Revision: 3987
Added:
portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp/Session=
EventListenerAndBroadcaster.java
Modified:
portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp/WSRPSer=
viceIntegration.java
Log:
- GTNPORTAL-1452, GTNWSRP-65: Use ListenerService to register SessionEventL=
istenerAndBroadcaster for session creation and destruction events.
Added: portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp/Ses=
sionEventListenerAndBroadcaster.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp/Sessio=
nEventListenerAndBroadcaster.java (rev 0)
+++ portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp/Sessio=
nEventListenerAndBroadcaster.java 2010-08-31 20:20:03 UTC (rev 3987)
@@ -0,0 +1,109 @@
+/*
+ * JBoss, a division of Red Hat
+ * Copyright 2010, Red Hat Middleware, LLC, and individual
+ * contributors as indicated by the @authors tag. See the
+ * copyright.txt in the distribution for a full listing of
+ * individual contributors.
+ *
+ * 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.gatein.portal.wsrp;
+
+import org.exoplatform.container.PortalContainer;
+import org.exoplatform.services.listener.Event;
+import org.exoplatform.services.listener.Listener;
+import org.gatein.wsrp.api.SessionEvent;
+import org.gatein.wsrp.api.SessionEventBroadcaster;
+import org.gatein.wsrp.api.SessionEventListener;
+
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpSessionEvent;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @author Chris Laprun
+ * @version $Revision$
+ */
+public class SessionEventListenerAndBroadcaster extends Listener implements SessionEventBroadcaster
+{
+ private Map listeners =3D new ConcurrentH=
ashMap();
+ private static final String SESSION_CREATED =3D "org.exoplatform.web.Ge=
nericHttpListener.sessionCreated";
+ private static final String SESSION_DESTROYED =3D "org.exoplatform.web.=
GenericHttpListener.sessionDestroyed";
+
+ public void registerListener(String listenerId, SessionEventListener li=
stener)
+ {
+ listeners.put(listenerId, listener);
+ }
+
+ public void unregisterListener(String listenerId)
+ {
+ listeners.remove(listenerId);
+ }
+
+ public void notifyListenersOf(SessionEvent event)
+ {
+ for (SessionEventListener listener : listeners.values())
+ {
+ listener.onSessionEvent(event);
+ }
+ }
+
+ @Override
+ public void onEvent(Event event) thr=
ows Exception
+ {
+ String eventName =3D event.getEventName();
+ SessionEvent.SessionEventType eventType;
+ if (SESSION_CREATED.equals(eventName))
+ {
+ eventType =3D SessionEvent.SessionEventType.SESSION_CREATED;
+ }
+ else if (SESSION_DESTROYED.equals(eventName))
+ {
+ eventType =3D SessionEvent.SessionEventType.SESSION_DESTROYED;
+ }
+ else
+ {
+ // do nothing
+ return;
+ }
+
+ notifyListenersOf(new SimpleSessionEvent(eventType, event.getData().=
getSession()));
+ }
+
+ private static class SimpleSessionEvent implements SessionEvent
+ {
+ private SessionEventType eventType;
+ private HttpSession session;
+
+ private SimpleSessionEvent(SessionEventType eventType, HttpSession s=
ession)
+ {
+ this.eventType =3D eventType;
+ this.session =3D session;
+ }
+
+ public SessionEventType getType()
+ {
+ return eventType;
+ }
+
+ public HttpSession getSession()
+ {
+ return session;
+ }
+ }
+}
Modified: portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp/=
WSRPServiceIntegration.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp/WSRPSe=
rviceIntegration.java 2010-08-31 20:15:12 UTC (rev 3986)
+++ portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp/WSRPSe=
rviceIntegration.java 2010-08-31 20:20:03 UTC (rev 3987)
@@ -28,6 +28,7 @@
import org.exoplatform.container.configuration.ConfigurationManager;
import org.exoplatform.container.xml.InitParams;
import org.exoplatform.services.jcr.ext.hierarchy.NodeHierarchyCreator;
+import org.exoplatform.services.listener.ListenerService;
import org.gatein.common.logging.Logger;
import org.gatein.common.logging.LoggerFactory;
import org.gatein.pc.api.PortletInvoker;
@@ -53,9 +54,6 @@
import org.gatein.wci.WebAppListener;
import org.gatein.wci.impl.DefaultServletContainerFactory;
import org.gatein.wsrp.WSRPConstants;
-import org.gatein.wsrp.api.SessionEvent;
-import org.gatein.wsrp.api.SessionEventBroadcaster;
-import org.gatein.wsrp.api.SessionEventListener;
import org.gatein.wsrp.consumer.registry.ActivatingNullInvokerHandler;
import org.gatein.wsrp.consumer.registry.ConsumerRegistry;
import org.gatein.wsrp.producer.ProducerHolder;
@@ -65,8 +63,6 @@
=
import javax.servlet.ServletContext;
import java.io.InputStream;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
=
/**
* @author Chris Laprun
@@ -218,11 +214,19 @@
FederatingPortletInvoker federatingPortletInvoker =3D
(FederatingPortletInvoker)container.getComponentInstanceOfType(Po=
rtletInvoker.class);
=
+ // add our Session event listener to the ListenerService for use in =
org.exoplatform.web.GenericHttpListener
+ ListenerService listenerService =3D (ListenerService)container.getCo=
mponentInstanceOfType(ListenerService.class);
+ SessionEventListenerAndBroadcaster sessionEventBroadcaster =3D new S=
essionEventListenerAndBroadcaster();
+ sessionEventBroadcaster.setName("org.exoplatform.web.GenericHttpList=
ener.sessionCreated");
+ listenerService.addListener(sessionEventBroadcaster);
+ sessionEventBroadcaster.setName("org.exoplatform.web.GenericHttpList=
ener.sessionDestroyed");
+ listenerService.addListener(sessionEventBroadcaster);
+
try
{
consumerRegistry =3D new JCRConsumerRegistry(container);
consumerRegistry.setFederatingPortletInvoker(federatingPortletInv=
oker);
- consumerRegistry.setSessionEventBroadcaster(new SimpleSessionEven=
tBroadcaster());
+ consumerRegistry.setSessionEventBroadcaster(sessionEventBroadcast=
er);
consumerRegistry.start();
=
// set up a NullInvokerHandler so that when a remote producer is =
queried, we can start it if needed
@@ -298,27 +302,4 @@
}
}
=
- private static class SimpleSessionEventBroadcaster implements SessionEv=
entBroadcaster
- {
- private Map listeners =3D new Concurre=
ntHashMap();
-
- public void registerListener(String listenerId, SessionEventListener=
listener)
- {
- listeners.put(listenerId, listener);
- }
-
- public void unregisterListener(String listenerId)
- {
- listeners.remove(listenerId);
- }
-
- public void notifyListenersOf(SessionEvent event)
- {
- for (SessionEventListener listener : listeners.values())
- {
- listener.onSessionEvent(event);
- }
- }
-
- }
-}
+}
\ No newline at end of file
--===============5688513857349940433==--