You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2009/02/23 12:20:40 UTC

svn commit: r746962 - in /camel/trunk/camel-core/src/main/java/org/apache/camel: CamelContext.java impl/DefaultCamelContext.java util/CamelContextHelper.java

Author: jstrachan
Date: Mon Feb 23 11:20:39 2009
New Revision: 746962

URL: http://svn.apache.org/viewvc?rev=746962&view=rev
Log:
patch for CAMEL-1374 to add a neater unique ID that looks more like the actual URL of the component which works much nicer for JMS endpoints (there's often only 1 non-singleton endpoint for a URI)

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java?rev=746962&r1=746961&r2=746962&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java Mon Feb 23 11:20:39 2009
@@ -127,6 +127,12 @@
     Collection<Endpoint> getEndpoints();
 
     /**
+     * Returns a new Map containing all of the active endpoints with the key of the map being their
+     * unique key
+     */
+    Map<String,Endpoint> getEndpointMap();
+
+    /**
      * Returns the collection of all registered endpoints for a uri or an empty collection.
      * For a singleton endpoint the collection will contain exactly one element.
      *

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=746962&r1=746961&r2=746962&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Mon Feb 23 11:20:39 2009
@@ -238,6 +238,12 @@
         }
     }
 
+    public Map<String,Endpoint> getEndpointMap() {
+        synchronized (endpoints) {
+            return new HashMap<String,Endpoint>(endpoints);
+        }
+    }
+
     public Collection<Endpoint> getEndpoints(String uri) {
         Collection<Endpoint> answer = new ArrayList<Endpoint>();
         Collection<Endpoint> coll;
@@ -273,7 +279,7 @@
         synchronized (endpoints) {
             startServices(endpoint);
             oldEndpoint = endpoints.remove(uri);
-            endpoints.put(CamelContextHelper.getEndpointKey(uri, endpoint), endpoint);
+            endpoints.put(getEndpointKey(uri, endpoint), endpoint);
             if (oldEndpoint != null) {
                 stopServices(oldEndpoint);
             }
@@ -342,7 +348,7 @@
                     if (answer != null) {
                         addService(answer);
 
-                        endpoints.put(CamelContextHelper.getEndpointKey(uri, answer), answer);
+                        endpoints.put(getEndpointKey(uri, answer), answer);
                         lifecycleStrategy.onEndpointAdd(answer);
                     }
                 } catch (Exception e) {
@@ -818,4 +824,22 @@
         }
         
     }
+
+
+    protected synchronized String getEndpointKey(String uri, Endpoint endpoint) {
+        if (endpoint.isSingleton()) {
+            return uri;
+        }
+        else {
+            // lets try find the first endpoint key which is free
+            for (int counter = 0; true; counter++) {
+                String key = (counter > 0) ? uri + ":" + counter : uri;
+                if (!endpoints.containsKey(key)) {
+                    return key;
+                }
+            }
+        }
+    }
+
+
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java?rev=746962&r1=746961&r2=746962&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java Mon Feb 23 11:20:39 2009
@@ -24,6 +24,7 @@
 import org.apache.camel.Endpoint;
 import org.apache.camel.Expression;
 import org.apache.camel.NoSuchEndpointException;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.spi.Injector;
 import org.apache.camel.spi.Language;
 import org.apache.camel.spi.Registry;
@@ -59,10 +60,6 @@
         }
     }
 
-    public static String getEndpointKey(String uri, Endpoint ep) {
-        return ep.isSingleton() ? uri : ("Ox" + Integer.toHexString(ep.hashCode()) + ":" + uri);
-    }
-
     /**
      * Returns the mandatory endpoint for the given URI and type or the
      * {@link org.apache.camel.NoSuchEndpointException} is thrown