Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5C0E287E7 for ; Wed, 10 Aug 2011 15:17:30 +0000 (UTC) Received: (qmail 68382 invoked by uid 500); 10 Aug 2011 15:17:30 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 68311 invoked by uid 500); 10 Aug 2011 15:17:29 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 68304 invoked by uid 99); 10 Aug 2011 15:17:29 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 10 Aug 2011 15:17:29 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 10 Aug 2011 15:17:26 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id BBD602388903 for ; Wed, 10 Aug 2011 15:17:05 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1156220 - in /cxf/trunk/rt: core/src/main/java/org/apache/cxf/endpoint/ClientLifeCycleManagerImpl.java core/src/main/java/org/apache/cxf/endpoint/ServerLifeCycleManagerImpl.java ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java Date: Wed, 10 Aug 2011 15:17:05 -0000 To: commits@cxf.apache.org From: dkulp@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110810151705.BBD602388903@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: dkulp Date: Wed Aug 10 15:17:05 2011 New Revision: 1156220 URL: http://svn.apache.org/viewvc?rev=1156220&view=rev Log: [CXF-3728] Detect lifecycle listeners automatically Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientLifeCycleManagerImpl.java cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServerLifeCycleManagerImpl.java cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientLifeCycleManagerImpl.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientLifeCycleManagerImpl.java?rev=1156220&r1=1156219&r2=1156220&view=diff ============================================================================== --- cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientLifeCycleManagerImpl.java (original) +++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientLifeCycleManagerImpl.java Wed Aug 10 15:17:05 2011 @@ -19,41 +19,50 @@ package org.apache.cxf.endpoint; -import java.util.ArrayList; -import java.util.List; +import java.util.Collection; +import java.util.concurrent.CopyOnWriteArrayList; +import org.apache.cxf.Bus; import org.apache.cxf.common.injection.NoJSR250Annotations; +import org.apache.cxf.configuration.ConfiguredBeanLocator; import org.apache.cxf.extension.BusExtension; @NoJSR250Annotations public class ClientLifeCycleManagerImpl implements ClientLifeCycleManager, BusExtension { - private List listeners = new ArrayList(); + private CopyOnWriteArrayList listeners + = new CopyOnWriteArrayList(); + public ClientLifeCycleManagerImpl() { + + } + + public ClientLifeCycleManagerImpl(Bus b) { + Collection l = b.getExtension(ConfiguredBeanLocator.class) + .getBeansOfType(ClientLifeCycleListener.class); + if (l != null) { + listeners.addAll(l); + } + } + public Class getRegistrationType() { return ClientLifeCycleManager.class; } public void registerListener(ClientLifeCycleListener listener) { - if (!listeners.contains(listener)) { - listeners.add(listener); - } + listeners.addIfAbsent(listener); } public void clientCreated(Client client) { - if (null != listeners) { - for (ClientLifeCycleListener listener : listeners) { - listener.clientCreated(client); - } + for (ClientLifeCycleListener listener : listeners) { + listener.clientCreated(client); } } public void clientDestroyed(Client client) { - if (null != listeners) { - for (ClientLifeCycleListener listener : listeners) { - listener.clientDestroyed(client); - } - } + for (ClientLifeCycleListener listener : listeners) { + listener.clientDestroyed(client); + } } public void unRegisterListener(ClientLifeCycleListener listener) { Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServerLifeCycleManagerImpl.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServerLifeCycleManagerImpl.java?rev=1156220&r1=1156219&r2=1156220&view=diff ============================================================================== --- cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServerLifeCycleManagerImpl.java (original) +++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServerLifeCycleManagerImpl.java Wed Aug 10 15:17:05 2011 @@ -19,25 +19,38 @@ package org.apache.cxf.endpoint; -import java.util.List; +import java.util.Collection; import java.util.concurrent.CopyOnWriteArrayList; +import org.apache.cxf.Bus; import org.apache.cxf.common.injection.NoJSR250Annotations; +import org.apache.cxf.configuration.ConfiguredBeanLocator; import org.apache.cxf.extension.BusExtension; @NoJSR250Annotations public class ServerLifeCycleManagerImpl implements ServerLifeCycleManager, BusExtension { - private List listeners = + private CopyOnWriteArrayList listeners = new CopyOnWriteArrayList(); + public ServerLifeCycleManagerImpl() { + + } + public ServerLifeCycleManagerImpl(Bus b) { + Collection l = b.getExtension(ConfiguredBeanLocator.class) + .getBeansOfType(ServerLifeCycleListener.class); + if (l != null) { + listeners.addAll(l); + } + } public Class getRegistrationType() { return ServerLifeCycleManager.class; } + public synchronized void registerListener(ServerLifeCycleListener listener) { - listeners.add(listener); + listeners.addIfAbsent(listener); } public void startServer(Server server) { Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java?rev=1156220&r1=1156219&r2=1156220&view=diff ============================================================================== --- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java (original) +++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java Wed Aug 10 15:17:05 2011 @@ -75,7 +75,7 @@ import org.apache.cxf.ws.rmp.v200502.RMA /** * */ -public class RMManager implements ServerLifeCycleListener, ClientLifeCycleListener { +public class RMManager { /** * Message contextual property giving WS-ReliableMessaging namespace. @@ -628,11 +628,25 @@ public class RMManager implements Server } ServerLifeCycleManager slm = bus.getExtension(ServerLifeCycleManager.class); if (null != slm) { - slm.registerListener(this); + slm.registerListener(new ServerLifeCycleListener() { + public void startServer(Server server) { + RMManager.this.startServer(server); + } + public void stopServer(Server server) { + RMManager.this.stopServer(server); + } + }); } ClientLifeCycleManager clm = bus.getExtension(ClientLifeCycleManager.class); if (null != clm) { - clm.registerListener(this); + clm.registerListener(new ClientLifeCycleListener() { + public void clientCreated(Client client) { + RMManager.this.clientCreated(client); + } + public void clientDestroyed(Client client) { + RMManager.this.clientDestroyed(client); + } + }); } }