Ignore:
Timestamp:
07/09/15 15:33:02 (9 years ago)
Author:
sherbold
Message:
  • updated ITA model
  • updated interface inference: now also checks inherited attributes
  • updated usage score calculation to work with new request/response structure
  • update interaction generation: now all reply message also have instance values for the OUT parameters
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-plugin-uml/src/main/java/de/ugoe/cs/autoquest/plugin/uml/UMLUtils.java

    r1995 r1998  
    2626import java.util.Map; 
    2727import java.util.Map.Entry; 
    28 import java.util.logging.Level; 
    2928import java.util.Set; 
    3029import java.util.TreeSet; 
     30import java.util.logging.Level; 
    3131 
    3232import org.eclipse.emf.common.util.EList; 
     
    5959import org.eclipse.uml2.uml.MessageSort; 
    6060import org.eclipse.uml2.uml.Model; 
     61import org.eclipse.uml2.uml.NamedElement; 
    6162import org.eclipse.uml2.uml.Operation; 
    6263import org.eclipse.uml2.uml.Package; 
     
    7374import org.eclipse.uml2.uml.Trigger; 
    7475import org.eclipse.uml2.uml.UMLPackage; 
    75 import org.eclipse.uml2.uml.ValueSpecification; 
    7676import org.eclipse.uml2.uml.Vertex; 
    7777 
    7878import de.ugoe.cs.autoquest.eventcore.Event; 
     79import de.ugoe.cs.autoquest.eventcore.EventUtils; 
    7980import de.ugoe.cs.autoquest.plugin.http.SOAPUtils; 
    8081import de.ugoe.cs.autoquest.plugin.http.eventcore.SOAPEventType; 
     
    559560                    Message callMessage = interaction.createMessage(prefix + "call"); 
    560561                    callMessage.setSignature(calledOperation); 
    561                     setCallMessageParameters(callMessage, calledOperation, event, 
     562                    setMessageParameters(callMessage, calledOperation, event, 
    562563                                             useRandomRequestBodies, prefix); 
    563564                    callMessage.setConnector(connector); 
     
    610611                    replyMessage.setMessageSort(MessageSort.REPLY_LITERAL); 
    611612                    replyMessage.setSignature(calledOperation); 
    612                     setReplyMessageParameters(replyMessage, calledOperation); 
     613                    //setReplyMessageParameters(replyMessage, calledOperation); 
     614                    setMessageParameters(replyMessage, calledOperation, event, useRandomRequestBodies, prefix); 
    613615                    replyMessage.setConnector(connector); 
    614616                    replyMessage.setSendEvent(replySendFragment); 
     
    647649                Message message = 
    648650                    ((MessageOccurrenceSpecification) interactionFragment).getMessage(); 
    649                 if (message.getReceiveEvent().equals(interactionFragment) && isCallMessage(message)) 
     651                //if (message.getReceiveEvent().equals(interactionFragment) && isCallMessage(message)) 
     652                if (message.getReceiveEvent().equals(interactionFragment)) 
    650653                { 
    651                     String clientName = 
    652                         ((MessageOccurrenceSpecification) message.getSendEvent()).getCovereds() 
    653                             .get(0).getName(); 
    654                     String serviceName = 
    655                         ((MessageOccurrenceSpecification) message.getReceiveEvent()).getCovereds() 
    656                             .get(0).getName(); 
     654                    String clientName; 
     655                    String serviceName; 
    657656                    String methodName = message.getSignature().getName(); 
    658                     // TODO must be updated 
     657                    CallType callType; 
     658                    if( isCallMessage(message) ) { 
     659                        clientName = 
     660                                ((MessageOccurrenceSpecification) message.getSendEvent()).getCovereds() 
     661                                    .get(0).getName(); 
     662                        serviceName = 
     663                                ((MessageOccurrenceSpecification) message.getReceiveEvent()).getCovereds() 
     664                                    .get(0).getName(); 
     665                        callType = CallType.REQUEST; 
     666                    } else { 
     667                        clientName = 
     668                                ((MessageOccurrenceSpecification) message.getReceiveEvent()).getCovereds() 
     669                                    .get(0).getName(); 
     670                        serviceName = 
     671                                ((MessageOccurrenceSpecification) message.getSendEvent()).getCovereds() 
     672                                    .get(0).getName(); 
     673                        callType = CallType.RESPONSE; 
     674                    } 
    659675                    eventSequence.add(new Event(new SimpleSOAPEventType(methodName, serviceName, 
    660                                                                         clientName, null, null, null))); 
     676                                                                        clientName, null, null, callType))); 
    661677                } 
    662678            } 
     
    838854        Set<Interface> interfaces = new HashSet<>(); 
    839855        // Interface myInterface = null; 
    840         for (Property property : component.getAttributes()) { 
     856        for (Property property : component.getAllAttributes()) { 
    841857            if (property instanceof Port) { 
    842858                Port port = (Port) property; 
     
    10351051     * </p> 
    10361052     *  
    1037      * @param callMessage 
     1053     * @param message 
    10381054     *            call message for which the parameters are set 
    10391055     * @param calledOperation 
     
    10411057     * @param event 
    10421058     *            event that provides the parameters; in case of null, default values are assumed 
    1043      * @param useRandomRequestBodies 
     1059     * @param useRandomMsgBodies 
    10441060     *            defines is random request bodies are used or the body of the associated event 
    10451061     * @param prefix 
    10461062     *            prefix of the call message; used to create good warnings and debugging information 
    10471063     */ 
    1048     private static void setCallMessageParameters(Message callMessage, 
     1064    private static void setMessageParameters(Message message, 
    10491065                                                 Operation calledOperation, 
    10501066                                                 Event event, 
    1051                                                  boolean useRandomRequestBodies, 
     1067                                                 boolean useRandomMsgBodies, 
    10521068                                                 String prefix) 
    10531069    { 
    1054         org.w3c.dom.Element requestBody = 
    1055             SOAPUtils.getSoapBodyFromEvent(event, useRandomRequestBodies, CallType.REQUEST); 
     1070        org.w3c.dom.Element requestBody; 
     1071        if(SOAPUtils.isSOAPRequest(event)) { 
     1072            requestBody = 
     1073                SOAPUtils.getSoapBodyFromEvent(event, useRandomMsgBodies, CallType.REQUEST); 
     1074        } else { 
     1075            requestBody = 
     1076                SOAPUtils.getSoapBodyFromEvent(event, useRandomMsgBodies, CallType.RESPONSE); 
     1077        } 
    10561078        Package instSpecPkg = null; 
    10571079 
     
    10871109            if (instSpecPkg == null) { 
    10881110                instSpecPkg = 
    1089                     getOrCreateInstanceSpecificationPackage(callMessage.getModel(), event); 
     1111                    getOrCreateInstanceSpecificationPackage(message.getModel(), event); 
    10901112            } 
    10911113 
     
    10961118            // (Expression) callMessage.createArgument(param.getName(), param.getType(), 
    10971119            // UMLPackage.Literals.EXPRESSION); 
    1098             if (isInParameter(param)) { 
     1120            if ( (isInParameter(param) && SOAPUtils.isSOAPRequest(event)) || 
     1121                 (!isInParameter(param) && SOAPUtils.isSOAPResponse(event))) { 
    10991122 
    11001123                // create parameters node 
     
    11131136                // parametersValue.setInstance(instSpecParameters); 
    11141137                InstanceValue instanceValue = 
    1115                     (InstanceValue) callMessage.createArgument(param.getName(), param.getType(), 
     1138                    (InstanceValue) message.createArgument(param.getName(), param.getType(), 
    11161139                                                               UMLPackage.Literals.INSTANCE_VALUE); 
    11171140                instanceValue.setInstance(instSpecParameters); 
     
    11731196                // set literalNull for out and return parameters 
    11741197                // argument.createOperand(null, param.getType(), UMLPackage.Literals.LITERAL_NULL); 
    1175                 callMessage.createArgument(param.getName(), param.getType(), 
     1198                message.createArgument(param.getName(), param.getType(), 
    11761199                                           UMLPackage.Literals.LITERAL_NULL); 
    11771200            } 
Note: See TracChangeset for help on using the changeset viewer.