Index: trunk/autoquest-plugin-http/src/main/java/de/ugoe/cs/autoquest/plugin/http/eventcore/SOAPEventType.java
===================================================================
--- trunk/autoquest-plugin-http/src/main/java/de/ugoe/cs/autoquest/plugin/http/eventcore/SOAPEventType.java	(revision 1903)
+++ trunk/autoquest-plugin-http/src/main/java/de/ugoe/cs/autoquest/plugin/http/eventcore/SOAPEventType.java	(revision 1906)
@@ -65,5 +65,14 @@
     /**
      * <p>
-     * the name of the service; this is either the path or, if a path map is available
+     * the name of the client; this is either the host/ip and port of the sender or, if a path
+     * map is available, a human readable name that may be based also on the receiver
+     * </p>
+     */
+    private final String clientName;
+   
+    /**
+     * <p>
+     * the name of the service; this is either the path or, if a path map is available, a human
+     * readable name that is mapped to the path
      * </p>
      */
@@ -107,28 +116,62 @@
         StringBuffer nameBuffer = new StringBuffer("SOAPEvent");
         
-        boolean somethingAdded = false;
-        
+        // determine the client name
+        if (urlNameMap == null) {
+            clientName = exchange.getSender().getHost() + ":" + exchange.getSender().getPort();
+        }
+        else {
+            // check for a mapping of the sender host
+            String key = "clientName.sender." + exchange.getSender().getHost();
+            String value = urlNameMap.getProperty(key);
+            
+            if (value == null) {
+                key += ":" + exchange.getSender().getPort();
+                value = urlNameMap.getProperty(key);
+            }
+            
+            if (value == null) {
+                key = "clientName.receiver." + exchange.getReceiver().getHost();
+                value = urlNameMap.getProperty(key);
+            }
+            
+            if (value == null) {
+                key += ":" + exchange.getReceiver().getPort();
+                value = urlNameMap.getProperty(key);
+            }
+            
+            if (value != null) {
+                clientName = value;
+            }
+            else {
+                clientName = exchange.getSender().getHost() + ":" + exchange.getSender().getPort();
+            }
+        }
+
+        nameBuffer.append(clientName);
+        
+        // determine the service name
         if (path != null) {
-            nameBuffer.append("(");
-            if( urlNameMap==null ) {
+            nameBuffer.append(", ");
+            if (urlNameMap == null) {
                 serviceName = path;
-            } else {
-                String value = urlNameMap.getProperty(path);
-                if( value!=null ) {
+            }
+            else {
+                String value = urlNameMap.getProperty("serviceName.path." + path);
+                if (value != null) {
                     serviceName = value;
-                } else {
+                }
+                else {
                     serviceName = path;
                 }
             }
             nameBuffer.append(serviceName);
-            somethingAdded = true;
-        } else {
+        }
+        else {
             serviceName = "NA";
         }
         
         if (calledMethod != null) {
-            nameBuffer.append(somethingAdded ? ", " : "(");
+            nameBuffer.append(", ");
             nameBuffer.append(calledMethod);
-            somethingAdded = true;
         }
         
@@ -137,24 +180,19 @@
         
         if ((senderStr != null) && (receiverStr != null)) {
-            nameBuffer.append(somethingAdded ? ", " : "(");
+            nameBuffer.append(", ");
             nameBuffer.append(senderStr);
             nameBuffer.append(" --> ");
             nameBuffer.append(receiverStr);
-            somethingAdded = true;
         }
         else if (senderStr != null) {
-            nameBuffer.append(somethingAdded ? ", " : "(");
+            nameBuffer.append(", ");
             nameBuffer.append(senderStr);
-            somethingAdded = true;
         }
         else if (receiverStr != null) {
-            nameBuffer.append(somethingAdded ? ", " : "(");
+            nameBuffer.append(", ");
             nameBuffer.append(receiverStr);
-            somethingAdded = true;
-        }
-        
-        if (somethingAdded) {
-            nameBuffer.append(")");
-        }
+        }
+        
+        nameBuffer.append(")");
         
         this.name = nameBuffer.toString();
@@ -170,4 +208,15 @@
     public String getCalledMethod() {
         return calledMethod;
+    }
+    
+    /**
+     * <p>
+     * the name of the client calling in this request
+     * </p>
+     *
+     * @return the name of the client calling in this request
+     */
+    public String getClientName() {
+        return clientName;
     }
     
@@ -229,5 +278,6 @@
                 super.equals(obj) &&
                 HTTPUtils.equals(calledMethod, ((SOAPEventType) obj).calledMethod) &&
-                HTTPUtils.equals(serviceName, ((SOAPEventType) obj).serviceName);
+                HTTPUtils.equals(serviceName, ((SOAPEventType) obj).serviceName) &&
+                HTTPUtils.equals(clientName, ((SOAPEventType) obj).clientName);
         }
         else {
@@ -247,4 +297,7 @@
         if( serviceName != null ) {
             hashCode += serviceName.hashCode();
+        }
+        if( clientName != null ) {
+            hashCode += clientName.hashCode();
         }
         return hashCode;
