Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id BDB20200AF5 for ; Thu, 19 May 2016 05:10:06 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id BC584160A00; Thu, 19 May 2016 03:10:06 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 0EFC9160A15 for ; Thu, 19 May 2016 05:10:05 +0200 (CEST) Received: (qmail 52462 invoked by uid 500); 19 May 2016 03:10:00 -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 52398 invoked by uid 99); 19 May 2016 03:10:00 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 19 May 2016 03:10:00 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id C97F2DFC6C; Thu, 19 May 2016 03:09:59 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: dkulp@apache.org To: commits@cxf.apache.org Date: Thu, 19 May 2016 03:09:59 -0000 Message-Id: <76596ec7b14646d59cc34f801ee764b3@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [1/3] cxf git commit: [CXF-6887] Handle multiple busses and avoid NPE archived-at: Thu, 19 May 2016 03:10:06 -0000 Repository: cxf Updated Branches: refs/heads/3.1.x-fixes 4def8e9db -> 90a963f18 [CXF-6887] Handle multiple busses and avoid NPE Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/7b1168ef Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/7b1168ef Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/7b1168ef Branch: refs/heads/3.1.x-fixes Commit: 7b1168ef760b89aa5fe92dbf2da328b1316d4ccd Parents: 4def8e9 Author: Christian Schneider Authored: Fri Apr 29 15:45:42 2016 +0200 Committer: Daniel Kulp Committed: Wed May 18 23:09:08 2016 -0400 ---------------------------------------------------------------------- .../transport/http/asyncclient/Activator.java | 56 +++++++++++--------- 1 file changed, 30 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/7b1168ef/rt/transports/http-hc/src/main/java/org/apache/cxf/transport/http/asyncclient/Activator.java ---------------------------------------------------------------------- diff --git a/rt/transports/http-hc/src/main/java/org/apache/cxf/transport/http/asyncclient/Activator.java b/rt/transports/http-hc/src/main/java/org/apache/cxf/transport/http/asyncclient/Activator.java index 32f4321..13d1f52 100644 --- a/rt/transports/http-hc/src/main/java/org/apache/cxf/transport/http/asyncclient/Activator.java +++ b/rt/transports/http-hc/src/main/java/org/apache/cxf/transport/http/asyncclient/Activator.java @@ -25,47 +25,36 @@ import java.util.Hashtable; import java.util.Map; import org.apache.cxf.Bus; -import org.apache.cxf.transport.http.HTTPConduitFactory; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.Constants; -import org.osgi.framework.ServiceRegistration; +import org.osgi.framework.ServiceReference; import org.osgi.service.cm.ConfigurationException; import org.osgi.service.cm.ManagedService; import org.osgi.util.tracker.ServiceTracker; public class Activator implements BundleActivator { - - private ServiceTracker tracker; + private ConduitConfigurer conduitConfigurer; @Override public void start(BundleContext context) throws Exception { - tracker = new ServiceTracker(context, Bus.class.getName(), null); - tracker.open(); - ConduitConfigurer conduitConfigurer = new ConduitConfigurer(context, tracker); - registerManagedService(context, conduitConfigurer, "org.apache.cxf.transport.http.async"); - } - - private void registerManagedService(BundleContext context, ConduitConfigurer conduitConfigurer, String servicePid) { + conduitConfigurer = new ConduitConfigurer(context); + conduitConfigurer.open(); Dictionary properties = new Hashtable(); - properties.put(Constants.SERVICE_PID, servicePid); + properties.put(Constants.SERVICE_PID, "org.apache.cxf.transport.http.async"); context.registerService(ManagedService.class.getName(), conduitConfigurer, properties); } @Override public void stop(BundleContext context) throws Exception { - tracker.close(); + conduitConfigurer.close(); } - class ConduitConfigurer implements ManagedService { - private AsyncHTTPConduitFactory conduitFactory; - private ServiceTracker busTracker; - private BundleContext context; - private ServiceRegistration reg; + public class ConduitConfigurer extends ServiceTracker implements ManagedService { + private Map currentConfig; - ConduitConfigurer(BundleContext context, ServiceTracker busTracker) { - this.context = context; - this.busTracker = busTracker; + public ConduitConfigurer(BundleContext context) { + super(context, Bus.class.getName(), null); } @SuppressWarnings({ @@ -73,12 +62,21 @@ public class Activator implements BundleActivator { }) @Override public void updated(Dictionary properties) throws ConfigurationException { - if (reg != null) { - reg.unregister(); + this.currentConfig = toMap(properties); + Bus[] buses = (Bus[])getServices(); + if (buses == null) { + return; } - conduitFactory = new AsyncHTTPConduitFactory((Bus)this.busTracker.getService()); - conduitFactory.update(toMap(properties)); - reg = context.registerService(HTTPConduitFactory.class.getName(), conduitFactory, null); + for (Bus bus : buses) { + configureConduitFactory(bus); + } + } + + @Override + public Object addingService(ServiceReference reference) { + Bus bus = (Bus)super.addingService(reference); + configureConduitFactory(bus); + return bus; } private Map toMap(Dictionary properties) { @@ -94,5 +92,11 @@ public class Activator implements BundleActivator { return props; } + private void configureConduitFactory(Bus bus) { + AsyncHTTPConduitFactory conduitFactory = bus.getExtension(AsyncHTTPConduitFactory.class); + conduitFactory.update(this.currentConfig); + } + + } }