You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2016/07/07 07:29:39 UTC

camel git commit: CAMEL-9631: do not cache OSGi service instances

Repository: camel
Updated Branches:
  refs/heads/master 69e033368 -> 25e9ca642


CAMEL-9631: do not cache OSGi service instances


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/25e9ca64
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/25e9ca64
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/25e9ca64

Branch: refs/heads/master
Commit: 25e9ca64205755bd32b10084eb14081f7db0722a
Parents: 69e0333
Author: B�rcs�k J�zsef <bo...@sch.bme.hu>
Authored: Wed Jul 6 16:22:42 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Jul 7 09:21:06 2016 +0200

----------------------------------------------------------------------
 .../camel/core/osgi/OsgiServiceRegistry.java    | 35 +++++++-------------
 1 file changed, 12 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/25e9ca64/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiServiceRegistry.java
----------------------------------------------------------------------
diff --git a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiServiceRegistry.java b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiServiceRegistry.java
index 7813b36..b916355 100644
--- a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiServiceRegistry.java
+++ b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiServiceRegistry.java
@@ -21,7 +21,6 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Queue;
 import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentLinkedQueue;
 
 import org.apache.camel.CamelContext;
@@ -36,7 +35,6 @@ import org.osgi.framework.ServiceReference;
  */
 public class OsgiServiceRegistry extends LifecycleStrategySupport implements Registry {
     private final BundleContext bundleContext;
-    private final Map<String, Object> serviceCacheMap = new ConcurrentHashMap<String, Object>();
     private final Queue<ServiceReference<?>> serviceReferenceQueue = new ConcurrentLinkedQueue<ServiceReference<?>>();
     
     public OsgiServiceRegistry(BundleContext bc) {
@@ -47,23 +45,18 @@ public class OsgiServiceRegistry extends LifecycleStrategySupport implements Reg
      * Support to lookup the Object with filter with the (name=NAME) and class type
      */
     public <T> T lookupByNameAndType(String name, Class<T> type) {
-        Object service = serviceCacheMap.get(name);
-        if (service == null) {
-            ServiceReference<?> sr  = null;
-            try {
-                ServiceReference<?>[] refs = bundleContext.getServiceReferences(type.getName(), "(name=" + name + ")");            
-                if (refs != null && refs.length > 0) {
-                    // just return the first one
-                    sr = refs[0];
-                    serviceReferenceQueue.add(sr);
-                    service = bundleContext.getService(sr);
-                    if (service != null) {
-                        serviceCacheMap.put(name, service);
-                    }
-                }
-            } catch (Exception ex) {
-                throw ObjectHelper.wrapRuntimeCamelException(ex);
+        Object service = null;
+        ServiceReference<?> sr  = null;
+        try {
+            ServiceReference<?>[] refs = bundleContext.getServiceReferences(type.getName(), "(name=" + name + ")");            
+            if (refs != null && refs.length > 0) {
+                // just return the first one
+                sr = refs[0];
+                serviceReferenceQueue.add(sr);
+                service = bundleContext.getService(sr);
             }
+        } catch (Exception ex) {
+            throw ObjectHelper.wrapRuntimeCamelException(ex);
         }
         return type.cast(service);
     }
@@ -72,7 +65,7 @@ public class OsgiServiceRegistry extends LifecycleStrategySupport implements Reg
      * It's only support to look up the ServiceReference with Class name
      */
     public Object lookupByName(String name) {
-        Object service = serviceCacheMap.get(name);
+        Object service = null;
         if (service == null) {
             ServiceReference<?> sr = bundleContext.getServiceReference(name);            
             if (sr != null) {
@@ -80,9 +73,6 @@ public class OsgiServiceRegistry extends LifecycleStrategySupport implements Reg
                 // and call ungetService when the camel context is closed 
                 serviceReferenceQueue.add(sr);
                 service = bundleContext.getService(sr);
-                if (service != null) {
-                    serviceCacheMap.put(name, service);
-                }
             } 
         }
         return service;
@@ -144,7 +134,6 @@ public class OsgiServiceRegistry extends LifecycleStrategySupport implements Reg
         }
         // Clean up the OSGi Service Cache
         serviceReferenceQueue.clear();
-        serviceCacheMap.clear();
     }
 
 }