Index: unk/autoquest-plugin-http-test/src/test/java/de/ugoe/cs/autoquest/http/eventcore/SOAPEventTest.java
===================================================================
--- /trunk/autoquest-plugin-http-test/src/test/java/de/ugoe/cs/autoquest/http/eventcore/SOAPEventTest.java	(revision 1905)
+++ 	(revision )
@@ -1,39 +1,0 @@
-//   Copyright 2012 Georg-August-Universität Göttingen, Germany
-//
-//   Licensed under the Apache License, Version 2.0 (the "License");
-//   you may not use this file except in compliance with the License.
-//   You may obtain a copy of the License at
-//
-//       http://www.apache.org/licenses/LICENSE-2.0
-//
-//   Unless required by applicable law or agreed to in writing, software
-//   distributed under the License is distributed on an "AS IS" BASIS,
-//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//   See the License for the specific language governing permissions and
-//   limitations under the License.
-
-package de.ugoe.cs.autoquest.http.eventcore;
-
-import nl.jqno.equalsverifier.EqualsVerifier;
-import nl.jqno.equalsverifier.Warning;
-
-import org.junit.Test;
-
-import de.ugoe.cs.autoquest.plugin.http.eventcore.SOAPEventType;
-
-/**
- * <p>
- * TODO comment
- * </p>
- * 
- * @author Patrick Harms
- */
-public class SOAPEventTest {
-
-    @Test
-    public void test_EqualsContract_01() {
-        EqualsVerifier.forClass(SOAPEventType.class)
-            .suppress(Warning.NONFINAL_FIELDS).withRedefinedSuperclass().verify();
-    }
-
-}
Index: /trunk/autoquest-plugin-http-test/src/test/java/de/ugoe/cs/autoquest/http/eventcore/SOAPEventTypeTest.java
===================================================================
--- /trunk/autoquest-plugin-http-test/src/test/java/de/ugoe/cs/autoquest/http/eventcore/SOAPEventTypeTest.java	(revision 1906)
+++ /trunk/autoquest-plugin-http-test/src/test/java/de/ugoe/cs/autoquest/http/eventcore/SOAPEventTypeTest.java	(revision 1906)
@@ -0,0 +1,293 @@
+//   Copyright 2012 Georg-August-Universität Göttingen, Germany
+//
+//   Licensed under the Apache License, Version 2.0 (the "License");
+//   you may not use this file except in compliance with the License.
+//   You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//   Unless required by applicable law or agreed to in writing, software
+//   distributed under the License is distributed on an "AS IS" BASIS,
+//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//   See the License for the specific language governing permissions and
+//   limitations under the License.
+
+package de.ugoe.cs.autoquest.http.eventcore;
+
+import static org.junit.Assert.assertEquals;
+
+import java.math.BigInteger;
+import java.util.Properties;
+
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPMessage;
+
+import nl.jqno.equalsverifier.EqualsVerifier;
+import nl.jqno.equalsverifier.Warning;
+
+import org.junit.Test;
+
+import de.ugoe.cs.autoquest.plugin.http.eventcore.SOAPEventType;
+import de.ugoe.cs.autoquest.plugin.http.logdata.Address;
+import de.ugoe.cs.autoquest.plugin.http.logdata.HttpExchange;
+import de.ugoe.cs.autoquest.plugin.http.logdata.HttpRequest;
+
+/**
+ *
+ * @author Patrick Harms
+ */
+public class SOAPEventTypeTest {
+
+    /**
+     * 
+     */
+    @Test
+    public void test_EqualsContract_01() {
+        EqualsVerifier.forClass(SOAPEventType.class)
+            .suppress(Warning.NONFINAL_FIELDS).withRedefinedSuperclass().verify();
+    }
+
+    /**
+     * 
+     */
+    @Test
+    public void test_ClientName_01() throws Exception {
+        HttpExchange exchange = createDummyExchange();
+        SOAPMessage dummyMessage = createDummySOAPMessage();
+        SOAPEventType fixture = new SOAPEventType(exchange, dummyMessage, null, null);
+        
+        assertEquals("sender:1234", fixture.getClientName());
+    }
+
+    /**
+     * 
+     */
+    @Test
+    public void test_ClientName_02() throws Exception {
+        HttpExchange exchange = createDummyExchange();
+        SOAPMessage dummyMessage = createDummySOAPMessage();
+        Properties properties = new Properties();
+        
+        SOAPEventType fixture = new SOAPEventType(exchange, dummyMessage, null, properties);
+        
+        assertEquals("sender:1234", fixture.getClientName());
+    }
+
+    /**
+     * 
+     */
+    @Test
+    public void test_ClientName_03() throws Exception {
+        HttpExchange exchange = createDummyExchange();
+        SOAPMessage dummyMessage = createDummySOAPMessage();
+        Properties properties = new Properties();
+        properties.put("clientName.sender.sender", "replacedSender");
+        
+        SOAPEventType fixture = new SOAPEventType(exchange, dummyMessage, null, properties);
+        
+        assertEquals("replacedSender", fixture.getClientName());
+    }
+
+    /**
+     * 
+     */
+    @Test
+    public void test_ClientName_04() throws Exception {
+        HttpExchange exchange = createDummyExchange();
+        SOAPMessage dummyMessage = createDummySOAPMessage();
+        Properties properties = new Properties();
+        properties.put("clientName.sender.sender:1234", "replacedSender");
+        
+        SOAPEventType fixture = new SOAPEventType(exchange, dummyMessage, null, properties);
+        
+        assertEquals("replacedSender", fixture.getClientName());
+    }
+
+    /**
+     * 
+     */
+    @Test
+    public void test_ClientName_05() throws Exception {
+        HttpExchange exchange = createDummyExchange();
+        SOAPMessage dummyMessage = createDummySOAPMessage();
+        Properties properties = new Properties();
+        properties.put("clientName.receiver.receiver", "replacedSender");
+        
+        SOAPEventType fixture = new SOAPEventType(exchange, dummyMessage, null, properties);
+        
+        assertEquals("replacedSender", fixture.getClientName());
+    }
+
+    /**
+     * 
+     */
+    @Test
+    public void test_ClientName_06() throws Exception {
+        HttpExchange exchange = createDummyExchange();
+        SOAPMessage dummyMessage = createDummySOAPMessage();
+        Properties properties = new Properties();
+        properties.put("clientName.receiver.receiver:5678", "replacedSender");
+        
+        SOAPEventType fixture = new SOAPEventType(exchange, dummyMessage, null, properties);
+        
+        assertEquals("replacedSender", fixture.getClientName());
+    }
+
+    /**
+     * 
+     */
+    @Test
+    public void test_ClientName_07() throws Exception {
+        HttpExchange exchange = createDummyExchange();
+        SOAPMessage dummyMessage = createDummySOAPMessage();
+        Properties properties = new Properties();
+        properties.put("clientName.sender.othersender", "replacedSender");
+        
+        SOAPEventType fixture = new SOAPEventType(exchange, dummyMessage, null, properties);
+        
+        assertEquals("sender:1234", fixture.getClientName());
+    }
+
+    /**
+     * 
+     */
+    @Test
+    public void test_ClientName_08() throws Exception {
+        HttpExchange exchange = createDummyExchange();
+        SOAPMessage dummyMessage = createDummySOAPMessage();
+        Properties properties = new Properties();
+        properties.put("clientName.sender.othersender:1234", "replacedSender");
+        
+        SOAPEventType fixture = new SOAPEventType(exchange, dummyMessage, null, properties);
+        
+        assertEquals("sender:1234", fixture.getClientName());
+    }
+
+    /**
+     * 
+     */
+    @Test
+    public void test_ClientName_09() throws Exception {
+        HttpExchange exchange = createDummyExchange();
+        SOAPMessage dummyMessage = createDummySOAPMessage();
+        Properties properties = new Properties();
+        properties.put("clientName.receiver.otherreceiver", "replacedSender");
+        
+        SOAPEventType fixture = new SOAPEventType(exchange, dummyMessage, null, properties);
+        
+        assertEquals("sender:1234", fixture.getClientName());
+    }
+
+    /**
+     * 
+     */
+    @Test
+    public void test_ClientName_10() throws Exception {
+        HttpExchange exchange = createDummyExchange();
+        SOAPMessage dummyMessage = createDummySOAPMessage();
+        Properties properties = new Properties();
+        properties.put("clientName.receiver.otherreceiver:5678", "replacedSender");
+        
+        SOAPEventType fixture = new SOAPEventType(exchange, dummyMessage, null, properties);
+        
+        assertEquals("sender:1234", fixture.getClientName());
+    }
+
+    /**
+     * 
+     */
+    @Test
+    public void test_ServiceName_01() throws Exception {
+        HttpExchange exchange = createDummyExchange();
+        SOAPMessage dummyMessage = createDummySOAPMessage();
+        SOAPEventType fixture = new SOAPEventType(exchange, dummyMessage, null, null);
+        
+        assertEquals("/service/path", fixture.getServiceName());
+    }
+
+    /**
+     * 
+     */
+    @Test
+    public void test_ServiceName_02() throws Exception {
+        HttpExchange exchange = createDummyExchange();
+        SOAPMessage dummyMessage = createDummySOAPMessage();
+        Properties properties = new Properties();
+        
+        SOAPEventType fixture = new SOAPEventType(exchange, dummyMessage, null, properties);
+        
+        assertEquals("/service/path", fixture.getServiceName());
+    }
+
+    /**
+     * 
+     */
+    @Test
+    public void test_ServiceName_03() throws Exception {
+        HttpExchange exchange = createDummyExchange();
+        SOAPMessage dummyMessage = createDummySOAPMessage();
+        Properties properties = new Properties();
+        properties.put("serviceName.path./service/path", "replacedService");
+        
+        SOAPEventType fixture = new SOAPEventType(exchange, dummyMessage, null, properties);
+        
+        assertEquals("replacedService", fixture.getServiceName());
+    }
+
+    /**
+     * 
+     */
+    @Test
+    public void test_ServiceName_04() throws Exception {
+        HttpExchange exchange = createDummyExchange();
+        SOAPMessage dummyMessage = createDummySOAPMessage();
+        Properties properties = new Properties();
+        properties.put("serviceName.path./service/otherpath", "replacedService");
+        
+        SOAPEventType fixture = new SOAPEventType(exchange, dummyMessage, null, properties);
+        
+        assertEquals("/service/path", fixture.getServiceName());
+    }
+
+    /**
+     *
+     */
+    private HttpExchange createDummyExchange() {
+        HttpExchange result = new HttpExchange();
+        result.setSender(createDummyAddress("sender", "1.2.3.4", 1234));
+        result.setReceiver(createDummyAddress("receiver", "5.6.7.8", 5678));
+        result.setRequest(createDummyRequest());
+        return result;
+    }
+
+    /**
+     * 
+     */
+    private Address createDummyAddress(String host, String ip, int port) {
+        Address address = new Address();
+        address.setHost(host);
+        address.setIp(ip);
+        address.setPort(BigInteger.valueOf(port));
+        return address;
+    }
+
+    /**
+     *
+     */
+    private HttpRequest createDummyRequest() {
+        HttpRequest request = new HttpRequest();
+        request.setUrl("http://receiver:5678/service/path");
+        return request;
+    }
+
+    /**
+     *
+     */
+    private SOAPMessage createDummySOAPMessage() throws Exception {
+        MessageFactory factory = MessageFactory.newInstance();
+        SOAPMessage message = factory.createMessage();
+        return message;
+    }
+
+
+}
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 1905)
+++ /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;
