You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2007/03/07 20:13:38 UTC

svn commit: r515701 - in /incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi: messaging/ servicedesc/

Author: gnodet
Date: Wed Mar  7 11:13:37 2007
New Revision: 515701

URL: http://svn.apache.org/viewvc?view=rev&rev=515701
Log:
SM-871: Several small optimizations

Modified:
    incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/DeliveryChannelImpl.java
    incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/MessageExchangeImpl.java
    incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/AbstractServiceEndpoint.java
    incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/DynamicEndpoint.java
    incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/EndpointSupport.java
    incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/ExternalEndpoint.java
    incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/InternalEndpoint.java
    incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/LinkedEndpoint.java

Modified: incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/DeliveryChannelImpl.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/DeliveryChannelImpl.java?view=diff&rev=515701&r1=515700&r2=515701
==============================================================================
--- incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/DeliveryChannelImpl.java (original)
+++ incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/DeliveryChannelImpl.java Wed Mar  7 11:13:37 2007
@@ -450,7 +450,7 @@
         messageExchange.setProperty(JbiConstants.SEND_SYNC, Boolean.TRUE);
         // Call doSend
         MessageExchangeImpl me = (MessageExchangeImpl) messageExchange;
-        String exchangeKey = getKeyForExchange(me);
+        String exchangeKey = me.getKey();
         try {
             exchangesById.put(exchangeKey, me);
             // Synchronously send a message and wait for the response
@@ -545,7 +545,7 @@
         // Check if the delivery channel has been closed
         checkNotClosed();
         // Retrieve the original exchange sent
-        MessageExchangeImpl original = (MessageExchangeImpl) exchangesById.get(getKeyForExchange(me));
+        MessageExchangeImpl original = (MessageExchangeImpl) exchangesById.get(me.getKey());
         if (original != null && me != original) {
             original.copyFrom(me);
             me = original;
@@ -775,8 +775,5 @@
     public String toString() {
         return "DeliveryChannel{" + component.getName() + "}";
     }
-    
-    private String getKeyForExchange(MessageExchangeImpl me) {
-        return (me.getRole() == Role.CONSUMER ? "consumer:" : "provider:") + me.getExchangeId();
-    }
+
 }

Modified: incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/MessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/MessageExchangeImpl.java?view=diff&rev=515701&r1=515700&r2=515701
==============================================================================
--- incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/MessageExchangeImpl.java (original)
+++ incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/MessageExchangeImpl.java Wed Mar  7 11:13:37 2007
@@ -106,6 +106,7 @@
     protected MessageExchangeImpl mirror;
     protected transient boolean pushDeliver;
     protected transient Object txLock;
+    protected transient String key;
 
     /**
      * Constructor
@@ -302,8 +303,7 @@
         if (name == null) {
             throw new IllegalArgumentException("name should not be null");
         }
-        name = name.toLowerCase();
-        if (IN.equals(name)) {
+        if (IN.equalsIgnoreCase(name)) {
             if (!can(CAN_SET_IN_MSG)) {
                 throw new MessagingException("In not supported");
             }
@@ -312,7 +312,7 @@
             }
             ((NormalizedMessageImpl) message).exchange = this;
             packet.setIn((NormalizedMessageImpl) message);
-        } else if (OUT.equals(name)) {
+        } else if (OUT.equalsIgnoreCase(name)) {
             if (!can(CAN_SET_OUT_MSG)) {
                 throw new MessagingException("Out not supported");
             }
@@ -321,7 +321,7 @@
             }
             ((NormalizedMessageImpl) message).exchange = this;
             packet.setOut((NormalizedMessageImpl) message);
-        } else if (FAULT.equals(name)) {
+        } else if (FAULT.equalsIgnoreCase(name)) {
             if (!can(CAN_SET_FAULT_MSG)) {
                 throw new MessagingException("Fault not supported");
             }
@@ -742,4 +742,19 @@
         }
     }
 
+    /**
+     * Compute a unique key for this exchange proxy.
+     * It has to be different for the two sides of the exchange, so
+     * we include the role + the exchange id.
+     * Obviously, it works, because the role never change for
+     * a given proxy.
+     * 
+     * @return
+     */
+    public String getKey() {
+        if (key == null) {
+            key = (getRole() == Role.CONSUMER ? "consumer" : "provider") + ":" + getExchangeId();
+        }
+        return key;
+    }
 }

Modified: incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/AbstractServiceEndpoint.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/AbstractServiceEndpoint.java?view=diff&rev=515701&r1=515700&r2=515701
==============================================================================
--- incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/AbstractServiceEndpoint.java (original)
+++ incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/AbstractServiceEndpoint.java Wed Mar  7 11:13:37 2007
@@ -25,6 +25,8 @@
 public abstract class AbstractServiceEndpoint implements ServiceEndpoint, Serializable {
 
     private ComponentNameSpace componentName;
+    private String key;
+    private String uniqueKey;
     
     public AbstractServiceEndpoint(ComponentNameSpace componentName) {
         this.componentName = componentName;
@@ -45,4 +47,19 @@
         this.componentName = componentName;
     }
 
+    public String getKey() {
+        if (key == null) {
+            key = EndpointSupport.getKey(getServiceName(), getEndpointName());
+        }
+        return key;
+    }
+
+    public String getUniqueKey() {
+        if (uniqueKey == null) {
+            uniqueKey = getClassifier() + ":" + getKey();
+        }
+        return uniqueKey;
+    }
+
+    protected abstract String getClassifier();
 }

Modified: incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/DynamicEndpoint.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/DynamicEndpoint.java?view=diff&rev=515701&r1=515700&r2=515701
==============================================================================
--- incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/DynamicEndpoint.java (original)
+++ incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/DynamicEndpoint.java Wed Mar  7 11:13:37 2007
@@ -73,4 +73,8 @@
         return serviceName;
     }
 
+    protected String getClassifier() {
+        return "dynamic";
+    }
+
 }

Modified: incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/EndpointSupport.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/EndpointSupport.java?view=diff&rev=515701&r1=515700&r2=515701
==============================================================================
--- incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/EndpointSupport.java (original)
+++ incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/EndpointSupport.java Wed Mar  7 11:13:37 2007
@@ -34,21 +34,17 @@
     }
     
     public static String getKey(ServiceEndpoint endpoint) {
+        if (endpoint instanceof AbstractServiceEndpoint) {
+            return ((AbstractServiceEndpoint) endpoint).getKey();
+        }
         return getKey(endpoint.getServiceName(), endpoint.getEndpointName());
     }
     
     public static String getUniqueKey(ServiceEndpoint endpoint) {
-        if (endpoint instanceof InternalEndpoint) {
-            return "internal:" + getKey(endpoint);
-        } else if (endpoint instanceof ExternalEndpoint) {
-            return "external:" + getKey(endpoint);
-        } else if (endpoint instanceof DynamicEndpoint) {
-            return "dynamic:" + getKey(endpoint);
-        } else if (endpoint instanceof LinkedEndpoint) {
-            return "linked:" + getKey(endpoint);
-        } else {
-            return endpoint.getClass().getName() + ":" + getKey(endpoint);
+        if (endpoint instanceof AbstractServiceEndpoint) {
+            return ((AbstractServiceEndpoint) endpoint).getUniqueKey();
         }
+        return endpoint.getClass().getName() + ":" + getKey(endpoint);
     }
     
 }

Modified: incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/ExternalEndpoint.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/ExternalEndpoint.java?view=diff&rev=515701&r1=515700&r2=515701
==============================================================================
--- incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/ExternalEndpoint.java (original)
+++ incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/ExternalEndpoint.java Wed Mar  7 11:13:37 2007
@@ -71,4 +71,8 @@
         return se.getServiceName();
     }
 
+    protected String getClassifier() {
+        return "external";
+    }
+
 }

Modified: incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/InternalEndpoint.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/InternalEndpoint.java?view=diff&rev=515701&r1=515700&r2=515701
==============================================================================
--- incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/InternalEndpoint.java (original)
+++ incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/InternalEndpoint.java Wed Mar  7 11:13:37 2007
@@ -168,4 +168,9 @@
     public String toString() {
         return "ServiceEndpoint[service=" + serviceName + ",endpoint=" + endpointName + "]";
     }
+
+    protected String getClassifier() {
+        return "internal";
+    }
+
 }

Modified: incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/LinkedEndpoint.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/LinkedEndpoint.java?view=diff&rev=515701&r1=515700&r2=515701
==============================================================================
--- incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/LinkedEndpoint.java (original)
+++ incubator/servicemix/branches/servicemix-3.1/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/LinkedEndpoint.java Wed Mar  7 11:13:37 2007
@@ -102,4 +102,8 @@
         return toService;
     }
 
+    protected String getClassifier() {
+        return "linked";
+    }
+
 }