Index: /trunk/autoquest-plugin-uml/src/main/java/de/ugoe/cs/autoquest/plugin/uml/UMLUtils.java
===================================================================
--- /trunk/autoquest-plugin-uml/src/main/java/de/ugoe/cs/autoquest/plugin/uml/UMLUtils.java	(revision 1994)
+++ /trunk/autoquest-plugin-uml/src/main/java/de/ugoe/cs/autoquest/plugin/uml/UMLUtils.java	(revision 1995)
@@ -52,4 +52,5 @@
 import org.eclipse.uml2.uml.LiteralBoolean;
 import org.eclipse.uml2.uml.LiteralInteger;
+import org.eclipse.uml2.uml.LiteralNull;
 import org.eclipse.uml2.uml.LiteralReal;
 import org.eclipse.uml2.uml.LiteralString;
@@ -79,4 +80,5 @@
 import de.ugoe.cs.autoquest.plugin.http.eventcore.SOAPEventType;
 import de.ugoe.cs.autoquest.plugin.http.eventcore.SimpleSOAPEventType;
+import de.ugoe.cs.autoquest.plugin.http.eventcore.SimpleSOAPEventType.CallType;
 import de.ugoe.cs.autoquest.plugin.uml.eventcore.UMLTransitionType;
 import de.ugoe.cs.autoquest.usageprofiles.IStochasticProcess;
@@ -457,8 +459,9 @@
         for (Property property : fetchAllTestComponentProperties(testContext)) {
             // TODO check if this is still required
-            /*if (userLifeline != null) {
-                throw new RuntimeException(
-                                           "TestContext must only have one TestComponent for the application of usage-based testing.");
-            }*/
+            /*
+             * if (userLifeline != null) { throw new RuntimeException(
+             * "TestContext must only have one TestComponent for the application of usage-based testing."
+             * ); }
+             */
             userLifeline = interaction.createLifeline(property.getName());
             userLifeline.setRepresents(property);
@@ -531,28 +534,6 @@
                 Operation calledOperation =
                     getOperationFromName(targetInterface.getOperations(), methodName);
-
-                // setup for both SYNCH and ASYNCH calls
-                MessageOccurrenceSpecification callSendFragment =
-                    (MessageOccurrenceSpecification) interaction.createFragment(prefix +
-                        "callSendFragment", UMLPackage.Literals.MESSAGE_OCCURRENCE_SPECIFICATION);
-                MessageOccurrenceSpecification callRecvFragment =
-                    (MessageOccurrenceSpecification) interaction.createFragment(prefix +
-                        "callRecvFragment", UMLPackage.Literals.MESSAGE_OCCURRENCE_SPECIFICATION);
-
-                callSendFragment.setCovered(msgSourceLifeline);
-                callRecvFragment.setCovered(msgTargetLifeline);
-
                 // get connector
                 Connector connector = inferConnector(msgSourceLifeline, msgTargetLifeline);
-
-                // create call
-                Message callMessage = interaction.createMessage(prefix + "call");
-                callMessage.setSignature(calledOperation);
-                setCallMessageParameters(callMessage, calledOperation, event, useRandomRequestBodies, prefix);
-                callMessage.setConnector(connector);
-                callMessage.setSendEvent(callSendFragment);
-                callMessage.setReceiveEvent(callRecvFragment);
-                callSendFragment.setMessage(callMessage);
-                callRecvFragment.setMessage(callMessage);
 
                 boolean asynch = false;
@@ -560,12 +541,40 @@
                     asynch = true;
                 }
-                if (asynch) {
-                    // Create ASYNCH call
-                    callMessage.setMessageSort(MessageSort.ASYNCH_CALL_LITERAL);
-                }
-                else {
-                    // SYNCH call
-                    callMessage.setMessageSort(MessageSort.SYNCH_CALL_LITERAL);
-
+
+                if (SOAPUtils.isSOAPRequest(event)) {
+                    // setup for both SYNCH and ASYNCH calls
+                    MessageOccurrenceSpecification callSendFragment =
+                        (MessageOccurrenceSpecification) interaction
+                            .createFragment(prefix + "callSendFragment",
+                                            UMLPackage.Literals.MESSAGE_OCCURRENCE_SPECIFICATION);
+                    MessageOccurrenceSpecification callRecvFragment =
+                        (MessageOccurrenceSpecification) interaction
+                            .createFragment(prefix + "callRecvFragment",
+                                            UMLPackage.Literals.MESSAGE_OCCURRENCE_SPECIFICATION);
+
+                    callSendFragment.setCovered(msgSourceLifeline);
+                    callRecvFragment.setCovered(msgTargetLifeline);
+
+                    // create call
+                    Message callMessage = interaction.createMessage(prefix + "call");
+                    callMessage.setSignature(calledOperation);
+                    setCallMessageParameters(callMessage, calledOperation, event,
+                                             useRandomRequestBodies, prefix);
+                    callMessage.setConnector(connector);
+                    callMessage.setSendEvent(callSendFragment);
+                    callMessage.setReceiveEvent(callRecvFragment);
+                    callSendFragment.setMessage(callMessage);
+                    callRecvFragment.setMessage(callMessage);
+
+                    if (asynch) {
+                        // Create ASYNCH call
+                        callMessage.setMessageSort(MessageSort.ASYNCH_CALL_LITERAL);
+                    }
+                    else {
+                        // SYNCH call
+                        callMessage.setMessageSort(MessageSort.SYNCH_CALL_LITERAL);
+                    }
+                }
+                if (!asynch && SOAPUtils.isSOAPResponse(event)) {
                     // setup reply and behavior execution specifications
                     MessageOccurrenceSpecification replySendFragment =
@@ -647,6 +656,7 @@
                             .get(0).getName();
                     String methodName = message.getSignature().getName();
+                    // TODO must be updated
                     eventSequence.add(new Event(new SimpleSOAPEventType(methodName, serviceName,
-                                                                        clientName, null)));
+                                                                        clientName, null, null, null)));
                 }
             }
@@ -783,5 +793,5 @@
                     String transitionService =
                         interfaceServiceMap.get(callEvent.getOperation().getInterface());
-                    
+
                     if (eventMethod.equals(transitionMethod) &&
                         eventService.equals(transitionService))
@@ -790,6 +800,9 @@
                     }
                 }
-            } else {
-                throw new RuntimeException("only one trigger of type CallEvent per transition allowed: " + transition.getName());
+            }
+            else {
+                throw new RuntimeException(
+                                           "only one trigger of type CallEvent per transition allowed: " +
+                                               transition.getName());
             }
 
@@ -1039,38 +1052,40 @@
                                                  String prefix)
     {
-        org.w3c.dom.Element requestBody = SOAPUtils.getSoapBodyFromEvent(event, useRandomRequestBodies);
+        org.w3c.dom.Element requestBody =
+            SOAPUtils.getSoapBodyFromEvent(event, useRandomRequestBodies, CallType.REQUEST);
         Package instSpecPkg = null;
 
         // FOR DEBUGGING
-//        Console.traceln(Level.FINE, "XML structure of path:" + StringTools.ENDLINE +
-//                        SOAPUtils.getSerialization(requestBody));
-//        for( Parameter param : calledOperation.getOwnedParameters() ) {
-//            System.out.println(param.getName());
-//            if( param.getType() instanceof DataType ) {
-//                for( Property prop1 : ((DataType) param.getType()).getAllAttributes() ) {
-//                    System.out.println("  " + prop1.getName());
-//                    if( prop1.getType() instanceof DataType ) {
-//                        for( Property prop2 : ((DataType) prop1.getType()).getAllAttributes() ) {
-//                            System.out.println("    " + prop2.getName());
-//                            if( prop2.getType() instanceof DataType ) {
-//                                for( Property prop3 : ((DataType) prop2.getType()).getAllAttributes() ) {
-//                                    System.out.println("      " + prop3.getName());
-//                                    if( prop3.getType() instanceof DataType ) {
-//                                        for( Property prop4 : ((DataType) prop3.getType()).getAllAttributes() ) {
-//                                            System.out.println("        " + prop4.getName());
-//                                        }
-//                                    }
-//                                }
-//                            }
-//                        }
-//                    }
-//                }
-//            }
-//        }
-        
+        // Console.traceln(Level.FINE, "XML structure of path:" + StringTools.ENDLINE +
+        // SOAPUtils.getSerialization(requestBody));
+        // for( Parameter param : calledOperation.getOwnedParameters() ) {
+        // System.out.println(param.getName());
+        // if( param.getType() instanceof DataType ) {
+        // for( Property prop1 : ((DataType) param.getType()).getAllAttributes() ) {
+        // System.out.println("  " + prop1.getName());
+        // if( prop1.getType() instanceof DataType ) {
+        // for( Property prop2 : ((DataType) prop1.getType()).getAllAttributes() ) {
+        // System.out.println("    " + prop2.getName());
+        // if( prop2.getType() instanceof DataType ) {
+        // for( Property prop3 : ((DataType) prop2.getType()).getAllAttributes() ) {
+        // System.out.println("      " + prop3.getName());
+        // if( prop3.getType() instanceof DataType ) {
+        // for( Property prop4 : ((DataType) prop3.getType()).getAllAttributes() ) {
+        // System.out.println("        " + prop4.getName());
+        // }
+        // }
+        // }
+        // }
+        // }
+        // }
+        // }
+        // }
+        // }
+
         // Set parameters of operation
         for (Parameter param : calledOperation.getOwnedParameters()) {
             if (instSpecPkg == null) {
-                instSpecPkg = getOrCreateInstanceSpecificationPackage(callMessage.getModel(), event);
+                instSpecPkg =
+                    getOrCreateInstanceSpecificationPackage(callMessage.getModel(), event);
             }
 
@@ -1078,43 +1093,47 @@
             String path = calledOperation.getName() + ":" + param.getType().getName();
             // create param node
-//            Expression argument =
-//                (Expression) callMessage.createArgument(param.getName(), param.getType(),
-//                                                        UMLPackage.Literals.EXPRESSION);
+            // Expression argument =
+            // (Expression) callMessage.createArgument(param.getName(), param.getType(),
+            // UMLPackage.Literals.EXPRESSION);
             if (isInParameter(param)) {
-                
+
                 // create parameters node
-                if (!(param.getType() instanceof DataType) ) {
+                if (!(param.getType() instanceof DataType)) {
                     throw new RuntimeException("TODO error handling; parameters missing");
                 }
                 DataType parametersNode = (DataType) param.getType();
-                InstanceSpecification instSpecParameters = (InstanceSpecification) 
-                        instSpecPkg.createPackagedElement(prefix + "instspec_" + param.getType().getName(),
-                                                          UMLPackage.Literals.INSTANCE_SPECIFICATION);
+                InstanceSpecification instSpecParameters =
+                    (InstanceSpecification) instSpecPkg.createPackagedElement(prefix + "instspec_" +
+                        param.getType().getName(), UMLPackage.Literals.INSTANCE_SPECIFICATION);
                 instSpecParameters.getClassifiers().add((DataType) param.getType());
-//                InstanceValue parametersValue =
-//                        (InstanceValue) argument
-//                            .createOperand(param.getType().getName(), param.getType(),
-//                                           UMLPackage.Literals.INSTANCE_VALUE);
-//                parametersValue.setInstance(instSpecParameters);
-                InstanceValue instanceValue = (InstanceValue) callMessage.createArgument(param.getName(), param.getType(), UMLPackage.Literals.INSTANCE_VALUE);
+                // InstanceValue parametersValue =
+                // (InstanceValue) argument
+                // .createOperand(param.getType().getName(), param.getType(),
+                // UMLPackage.Literals.INSTANCE_VALUE);
+                // parametersValue.setInstance(instSpecParameters);
+                InstanceValue instanceValue =
+                    (InstanceValue) callMessage.createArgument(param.getName(), param.getType(),
+                                                               UMLPackage.Literals.INSTANCE_VALUE);
                 instanceValue.setInstance(instSpecParameters);
-                
-                for( Property internalParameter : parametersNode.getAllAttributes() ) {
+
+                for (Property internalParameter : parametersNode.getAllAttributes()) {
                     if (internalParameter.getType() instanceof DataType) {
                         List<org.w3c.dom.Element> paramNodes =
-                            SOAPUtils.getMatchingChildNode(internalParameter.getType().getName(), requestBody);
+                            SOAPUtils.getMatchingChildNode(internalParameter.getType().getName(),
+                                                           requestBody);
                         // TODO the mistake is somewhere around here ... probably
-                        //List<org.w3c.dom.Element> paramNodes =
-                        //    SOAPUtils.getMatchingChildNode(param.getName(), requestBody);
+                        // List<org.w3c.dom.Element> paramNodes =
+                        // SOAPUtils.getMatchingChildNode(param.getName(), requestBody);
                         int multiplicityChosen = paramNodes.size();
-    
+
                         if (multiplicityChosen == 0 && internalParameter.getLower() > 0) {
-                            Console.traceln(Level.WARNING,
-                                            "required attribute not found in SOAP message: " + path);
+                            Console
+                                .traceln(Level.WARNING,
+                                         "required attribute not found in SOAP message: " + path);
                             Console
                                 .traceln(Level.WARNING,
                                          "setting default values for this attribute and all its children");
-                            Console.traceln(Level.FINE, "XML structure of path:" + StringTools.ENDLINE +
-                                SOAPUtils.getSerialization(requestBody));
+                            Console.traceln(Level.FINE, "XML structure of path:" +
+                                StringTools.ENDLINE + SOAPUtils.getSerialization(requestBody));
                             multiplicityChosen = internalParameter.getLower();
                         }
@@ -1124,23 +1143,28 @@
                                 paramNode = paramNodes.get(i);
                             }
-                            
+
                             Slot slot = instSpecParameters.createSlot();
                             slot.setDefiningFeature(internalParameter);
 
                             InstanceValue value =
-                                (InstanceValue) slot.createValue(internalParameter.getName() + "_" + i, internalParameter.getType(),
-                                                                 UMLPackage.Literals.INSTANCE_VALUE);
-                            value.setInstance(createInstanceSpecification((DataType) internalParameter.getType(), instSpecPkg,
-                                                                          prefix, paramNode, path));
+                                (InstanceValue) slot
+                                    .createValue(internalParameter.getName() + "_" + i,
+                                                 internalParameter.getType(),
+                                                 UMLPackage.Literals.INSTANCE_VALUE);
+                            value
+                                .setInstance(createInstanceSpecification((DataType) internalParameter
+                                                                             .getType(),
+                                                                         instSpecPkg, prefix,
+                                                                         paramNode, path));
                             /*
-                            InstanceValue value =
-                                (InstanceValue) argument
-                                    .createOperand(null, internalParameter.getType(),
-                                                   UMLPackage.Literals.INSTANCE_VALUE);
-                            value.setInstance(instSpec);*/
+                             * InstanceValue value = (InstanceValue) argument .createOperand(null,
+                             * internalParameter.getType(), UMLPackage.Literals.INSTANCE_VALUE);
+                             * value.setInstance(instSpec);
+                             */
                         }
                     }
                     else if (internalParameter.getType() instanceof PrimitiveType) {
-                        createSlotPrimitiveType(instSpecParameters, internalParameter, requestBody, path);
+                        createSlotPrimitiveType(instSpecParameters, internalParameter, requestBody,
+                                                path);
                     }
                 }
@@ -1148,6 +1172,7 @@
             else {
                 // set literalNull for out and return parameters
-//                argument.createOperand(null, param.getType(), UMLPackage.Literals.LITERAL_NULL);
-                callMessage.createArgument(param.getName(), param.getType(), UMLPackage.Literals.LITERAL_NULL);
+                // argument.createOperand(null, param.getType(), UMLPackage.Literals.LITERAL_NULL);
+                callMessage.createArgument(param.getName(), param.getType(),
+                                           UMLPackage.Literals.LITERAL_NULL);
             }
         }
@@ -1197,5 +1222,6 @@
                 int multiplicityChosen = 0;
                 if (currentNode != null) {
-                    // TODO attributeNodes = SOAPUtils.getMatchingChildNode(prop.getName(), currentNode);
+                    // TODO attributeNodes = SOAPUtils.getMatchingChildNode(prop.getName(),
+                    // currentNode);
                     attributeNodes = SOAPUtils.getMatchingChildNode(prop.getName(), currentNode);
                     multiplicityChosen = attributeNodes.size();
@@ -1467,11 +1493,10 @@
     private static void setReplyMessageParameters(Message replyMessage, Operation calledOperation) {
         for (Parameter param : calledOperation.getOwnedParameters()) {
-            Expression argument =
-                (Expression) replyMessage.createArgument(param.getName(), param.getType(),
-                                                         UMLPackage.Literals.EXPRESSION);
-            ValueSpecification operand =
-                    argument.createOperand(null, param.getType(), UMLPackage.Literals.LITERAL_NULL);
+            LiteralNull argument =
+                (LiteralNull) replyMessage.createArgument(param.getName(), param.getType(),
+                                                         UMLPackage.Literals.LITERAL_NULL);
+            
             if (isOutParameter(param)) {
-                operand.applyStereotype(UTPUtils.getLiteralAnyStereotype(replyMessage.getModel()));
+                argument.applyStereotype(UTPUtils.getLiteralAnyStereotype(replyMessage.getModel()));
             }
         }
