CAMEL-9543 - Discovering new type converters in OSGi wipes out those manually added
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/206a4643 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/206a4643 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/206a4643 Branch: refs/heads/camel-2.16.x Commit: 206a4643461c4f715b5f8c17453e63e651f1e1b3 Parents: b4f2374 Author: Jonathan Anstey <jans...@gmail.com> Authored: Wed Jan 27 23:53:45 2016 -0330 Committer: Jonathan Anstey <jans...@gmail.com> Committed: Wed Jan 27 23:54:12 2016 -0330 ---------------------------------------------------------------------- .../apache/camel/core/osgi/OsgiTypeConverter.java | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/206a4643/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java ---------------------------------------------------------------------- diff --git a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java index c25e479..46767fe 100644 --- a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java +++ b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java @@ -62,19 +62,8 @@ public class OsgiTypeConverter extends ServiceSupport implements TypeConverter, } public Object addingService(ServiceReference<TypeConverterLoader> serviceReference) { - LOG.trace("AddingService: {}", serviceReference); + LOG.trace("AddingService: {}, Bundle: {}", serviceReference, serviceReference.getBundle()); TypeConverterLoader loader = bundleContext.getService(serviceReference); - // just make sure we don't load the bundle converter this time - if (delegate != null) { - try { - ServiceHelper.stopService(this.delegate); - } catch (Exception e) { - // ignore - LOG.debug("Error stopping service due: " + e.getMessage() + ". This exception will be ignored.", e); - } - // It can force camel to reload the type converter again - this.delegate = null; - } return loader; } @@ -82,7 +71,7 @@ public class OsgiTypeConverter extends ServiceSupport implements TypeConverter, } public void removedService(ServiceReference<TypeConverterLoader> serviceReference, Object o) { - LOG.trace("RemovedService: {}", serviceReference); + LOG.trace("RemovedService: {}, Bundle: {}", serviceReference, serviceReference.getBundle()); try { ServiceHelper.stopService(this.delegate); } catch (Exception e) { @@ -91,6 +80,8 @@ public class OsgiTypeConverter extends ServiceSupport implements TypeConverter, } // It can force camel to reload the type converter again this.delegate = null; + + // TODO: reloading all type converters when one service is removed is suboptimal... } @Override