Przeglądaj źródła

More tests and updated checking of transformation signature

Yentl Van Tendeloo 7 lat temu
rodzic
commit
156e8aa7f1

+ 9 - 0
bootstrap/core_algorithm.alc

@@ -1496,6 +1496,11 @@ String function cmd_transformation_execute(transformation_name : String, source_
 					else:
 						return "Model not found: " + source_model_name!
 
+				Element diff
+				diff = set_difference(dict_keys(source_models), dict_keys(inputs))
+				if (set_len(diff) > 0):
+					return "Source model not bound: " + cast_string(set_pop(diff))!
+
 				targets = allOutgoingAssociationInstances(core, transformation_id, "transformOutput")
 				outputs = dict_create()
 				output_map = dict_create()
@@ -1523,6 +1528,10 @@ String function cmd_transformation_execute(transformation_name : String, source_
 							else:
 								return "Write permission denied to: " + target_model_name!
 
+				diff = set_difference(dict_keys(target_models), dict_keys(outputs))
+				if (set_len(diff) > 0):
+					return "Target model not bound: " + cast_string(set_pop(diff))!
+
 				return do_spawn_activity(transformation_id, tracability_name, inputs, outputs, output_map)!
 			else:
 				return "Execute permission denied to: " + transformation_name!

+ 20 - 6
unit/test_all.py

@@ -3847,7 +3847,7 @@ class TestModelverse(unittest.TestCase):
         try:
             transformation_add_MANUAL({"MODEL_A": "users/user/test/A", "MODEL_B": "users/user/test/B"}, {"MODEL_B": "users/user/test/A"}, "users/user/test/f")
             self.fail()
-        except SignatureMismatch:
+        except DifferingModelsForKey:
             pass
 
         # Add a transformation with empty signature
@@ -3979,7 +3979,7 @@ class TestModelverse(unittest.TestCase):
         try:
             transformation_add_AL({"MODEL_A": "users/user/test/A", "MODEL_B": "users/user/test/B"}, {"MODEL_B": "users/user/test/A"}, "users/user/test/f", default_function)
             self.fail()
-        except SignatureMismatch:
+        except DifferingModelsForKey:
             pass
 
         # Add a transformation with empty signature
@@ -4111,7 +4111,7 @@ class TestModelverse(unittest.TestCase):
         try:
             transformation_add_MT({"MODEL_A": "users/user/test/A", "MODEL_B": "users/user/test/B"}, {"MODEL_B": "users/user/test/A"}, "users/user/test/f", default_function)
             self.fail()
-        except SignatureMismatch:
+        except DifferingModelsForKey:
             pass
 
         # Add a transformation with empty signature
@@ -4248,7 +4248,21 @@ class TestModelverse(unittest.TestCase):
         try:
             transformation_execute_MANUAL("users/user/test/d", {}, {"MODEL_B": "users/user/test/f"}, lambda i: i)
             self.fail()
-        except SignatureMismatch:
+        except SourceModelNotBound:
+            pass
+
+        # Unknown source key
+        try:
+            transformation_execute_MANUAL("users/user/test/d", {"ABC": "users/user/test/a", "MODEL_A": "users/user/test/a"}, {"MODEL_B": "users/user/test/f"}, lambda i: i)
+            self.fail()
+        except SourceModelNotBound:
+            pass
+
+        # Unknown target key
+        try:
+            transformation_execute_MANUAL("users/user/test/d", {"MODEL_A": "users/user/test/a"}, {"DEF": "users/user/test/b"}, lambda i: i)
+            self.fail()
+        except TargetModelNotBound:
             pass
 
         # Read permissions denied source
@@ -4283,14 +4297,14 @@ class TestModelverse(unittest.TestCase):
         try:
             transformation_execute_MANUAL("users/user/test/d", {"MODEL_A": "users/user/test/b"}, {"MODEL_B": "users/user/test/f"}, lambda i: i)
             self.fail()
-        except SignatureMismatch:
+        except TypeMismatch:
             assert "f" not in model_list("users/user/test")
 
         # Execute activity with non-conforming output models that already exist
         try:
             transformation_execute_MANUAL("users/user/test/d", {"MODEL_A": "users/user/test/b"}, {"MODEL_B": "users/user/test/c"}, lambda i: i)
             self.fail()
-        except SignatureMismatch:
+        except TypeMismatch:
             assert element_list_nice("users/user/test/c") > 0
 
         # Execute activity with colliding models, which means that it is copied

+ 10 - 3
wrappers/classes/modelverse.xml

@@ -1394,14 +1394,21 @@
 
                     <transition cond="self.expect_response_partial('Source model not bound: ', pop=False)" target="../wait_for_action/history">
                         <raise event="exception">
-                            <parameter expr="'SignatureMismatch'"/>
+                            <parameter expr="'SourceModelNotBound'"/>
+                            <parameter expr="self.split_response(self.responses.pop(0))[0]"/>
+                        </raise>
+                    </transition>
+
+                    <transition cond="self.expect_response_partial('Target model not bound: ', pop=False)" target="../wait_for_action/history">
+                        <raise event="exception">
+                            <parameter expr="'TargetModelNotBound'"/>
                             <parameter expr="self.split_response(self.responses.pop(0))[0]"/>
                         </raise>
                     </transition>
 
                     <transition cond="self.expect_response_partial('Input and output signature differ for same key: ', pop=False)" target="../wait_for_action/history">
                         <raise event="exception">
-                            <parameter expr="'SignatureMismatch'"/>
+                            <parameter expr="'DifferingModelsForKey'"/>
                             <parameter expr="self.split_response(self.responses.pop(0))[0]"/>
                         </raise>
                     </transition>
@@ -1611,7 +1618,7 @@
 
                     <transition cond="self.expect_response_partial('Signature mismatch in operation for tag: ', pop=False)" target="../wait_for_action/history">
                         <raise event="exception">
-                            <parameter expr="'SignatureMismatch'"/>
+                            <parameter expr="'TypeMismatch'"/>
                             <parameter expr="self.responses.pop(0)"/>
                         </raise>
                     </transition>

+ 15 - 3
wrappers/modelverse.py

@@ -27,9 +27,6 @@ class CallbackOnEmptySignature(ModelverseException):
 class NotAModel(ModelverseException):
     pass
 
-class EmptySignature(ModelverseException):
-    pass
-
 class ManualActivityRequiresIO(ModelverseException):
     pass
 
@@ -42,6 +39,21 @@ class IncorrectFormat(ModelverseException):
 class SignatureMismatch(ModelverseException):
     pass
 
+class EmptySignature(SignatureMismatch):
+    pass
+
+class SourceModelNotBound(SignatureMismatch):
+    pass
+
+class TargetModelNotBound(SignatureMismatch):
+    pass
+
+class DifferingModelsForKey(SignatureMismatch):
+    pass
+
+class TypeMismatch(SignatureMismatch):
+    pass
+
 class UnknownError(ModelverseException):
     pass
 

+ 75 - 64
wrappers/modelverse_SCCD.py

@@ -1913,6 +1913,11 @@ class Modelverse(RuntimeClassBase):
         _initialized_behaviour_operations_34.setTrigger(None)
         _initialized_behaviour_operations_34.setGuard(self._initialized_behaviour_operations_34_guard)
         self.states["/initialized/behaviour/operations"].addTransition(_initialized_behaviour_operations_34)
+        _initialized_behaviour_operations_35 = Transition(self, self.states["/initialized/behaviour/operations"], [self.states["/initialized/behaviour/wait_for_action/history"]])
+        _initialized_behaviour_operations_35.setAction(self._initialized_behaviour_operations_35_exec)
+        _initialized_behaviour_operations_35.setTrigger(None)
+        _initialized_behaviour_operations_35.setGuard(self._initialized_behaviour_operations_35_guard)
+        self.states["/initialized/behaviour/operations"].addTransition(_initialized_behaviour_operations_35)
         
         # transition /initialized/behaviour/operations/store_on_scripted/transformation_add
         _initialized_behaviour_operations_store_on_scripted_transformation_add_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add"], [self.states["/initialized/behaviour/wait_for_action/megamodelling"]])
@@ -2310,202 +2315,208 @@ class Modelverse(RuntimeClassBase):
         return self.expect_response_partial('Manual activity needs at least one formalism in its input or output signature', pop=True)
     
     def _initialized_behaviour_operations_2_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['SignatureMismatch', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['SourceModelNotBound', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_2_guard(self, parameters):
         return self.expect_response_partial('Source model not bound: ', pop=False)
     
     def _initialized_behaviour_operations_3_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['SignatureMismatch', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['TargetModelNotBound', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_3_guard(self, parameters):
-        return self.expect_response_partial('Input and output signature differ for same key: ', pop=False)
+        return self.expect_response_partial('Target model not bound: ', pop=False)
     
     def _initialized_behaviour_operations_4_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['IncorrectFormat', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['DifferingModelsForKey', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_4_guard(self, parameters):
-        return self.expect_response_partial('Incorrect format: ', pop=False)
+        return self.expect_response_partial('Input and output signature differ for same key: ', pop=False)
     
     def _initialized_behaviour_operations_5_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['NotAModel', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['IncorrectFormat', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_5_guard(self, parameters):
-        return self.expect_response_partial('Not a model: ', pop=False)
+        return self.expect_response_partial('Incorrect format: ', pop=False)
     
     def _initialized_behaviour_operations_6_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['UnknownAttribute', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['NotAModel', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_6_guard(self, parameters):
-        return self.expect_response_partial('Attribute not found: ', pop=False)
+        return self.expect_response_partial('Not a model: ', pop=False)
     
     def _initialized_behaviour_operations_7_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['SuperclassAttribute', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['UnknownAttribute', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_7_guard(self, parameters):
-        return self.expect_response_partial('Attribute not defined here: ', pop=False)
+        return self.expect_response_partial('Attribute not found: ', pop=False)
     
     def _initialized_behaviour_operations_8_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['UnknownLocation', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['SuperclassAttribute', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_8_guard(self, parameters):
-        return self.expect_response_partial('Unknown location: ', pop=False)
+        return self.expect_response_partial('Attribute not defined here: ', pop=False)
     
     def _initialized_behaviour_operations_9_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['UnknownGroup', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['UnknownLocation', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_9_guard(self, parameters):
-        return self.expect_response_partial('Unknown group: ', pop=False)
+        return self.expect_response_partial('Unknown location: ', pop=False)
     
     def _initialized_behaviour_operations_10_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['UnknownUser', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['UnknownGroup', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_10_guard(self, parameters):
-        return self.expect_response_partial('Unknown user: ', pop=False)
+        return self.expect_response_partial('Unknown group: ', pop=False)
     
     def _initialized_behaviour_operations_11_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['NotAnAssociation', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['UnknownUser', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_11_guard(self, parameters):
-        return self.expect_response_partial('Not an association: ', pop=False)
+        return self.expect_response_partial('Unknown user: ', pop=False)
     
     def _initialized_behaviour_operations_12_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['UserExists', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['NotAnAssociation', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_12_guard(self, parameters):
-        return self.expect_response_partial('User exists: ', pop=False)
+        return self.expect_response_partial('Not an association: ', pop=False)
     
     def _initialized_behaviour_operations_13_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['ModelExists', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['UserExists', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_13_guard(self, parameters):
-        return self.expect_response_partial('Model exists: ', pop=False)
+        return self.expect_response_partial('User exists: ', pop=False)
     
     def _initialized_behaviour_operations_14_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['GroupExists', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['ModelExists', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_14_guard(self, parameters):
-        return self.expect_response_partial('Group exists: ', pop=False)
+        return self.expect_response_partial('Model exists: ', pop=False)
     
     def _initialized_behaviour_operations_15_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['FolderExists', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['GroupExists', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_15_guard(self, parameters):
-        return self.expect_response_partial('Folder exists: ', pop=False)
+        return self.expect_response_partial('Group exists: ', pop=False)
     
     def _initialized_behaviour_operations_16_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['AttributeExists', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['FolderExists', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_16_guard(self, parameters):
-        return self.expect_response_partial('Attribute exists: ', pop=False)
+        return self.expect_response_partial('Folder exists: ', pop=False)
     
     def _initialized_behaviour_operations_17_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['UnknownM3', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['AttributeExists', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_17_guard(self, parameters):
-        return self.expect_response_partial('Type cannot be typed as formalisms/SimpleClassDiagrams: ', pop=False)
+        return self.expect_response_partial('Attribute exists: ', pop=False)
     
     def _initialized_behaviour_operations_18_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['ElementExists', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['UnknownM3', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_18_guard(self, parameters):
-        return self.expect_response_partial('Element exists: ', pop=False)
+        return self.expect_response_partial('Type cannot be typed as formalisms/SimpleClassDiagrams: ', pop=False)
     
     def _initialized_behaviour_operations_19_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['ReadPermissionDenied', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['ElementExists', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_19_guard(self, parameters):
-        return self.expect_response_partial('Read permission denied to: ', pop=False)
+        return self.expect_response_partial('Element exists: ', pop=False)
     
     def _initialized_behaviour_operations_20_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['WritePermissionDenied', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['ReadPermissionDenied', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_20_guard(self, parameters):
-        return self.expect_response_partial('Write permission denied to: ', pop=False)
+        return self.expect_response_partial('Read permission denied to: ', pop=False)
     
     def _initialized_behaviour_operations_21_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['WritePermissionDenied', self.current_model]))
+        self.raiseInternalEvent(Event("exception", None, ['WritePermissionDenied', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_21_guard(self, parameters):
-        return self.expect_response('Write permission denied', pop=True)
+        return self.expect_response_partial('Write permission denied to: ', pop=False)
     
     def _initialized_behaviour_operations_22_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['UnknownM3', 'Model is not a Simple Class Diagrams model and has no notion of defined attributes']))
+        self.raiseInternalEvent(Event("exception", None, ['WritePermissionDenied', self.current_model]))
     
     def _initialized_behaviour_operations_22_guard(self, parameters):
-        return self.expect_response_partial('Not a SimpleClassDiagrams model!', pop=True)
+        return self.expect_response('Write permission denied', pop=True)
     
     def _initialized_behaviour_operations_23_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['EmptySignature', 'Model transformation activity cannot have an empty signature!']))
+        self.raiseInternalEvent(Event("exception", None, ['UnknownM3', 'Model is not a Simple Class Diagrams model and has no notion of defined attributes']))
     
     def _initialized_behaviour_operations_23_guard(self, parameters):
-        return self.expect_response_partial('Model transformation needs at least one formalism in its input or output signature!', pop=True)
+        return self.expect_response_partial('Not a SimpleClassDiagrams model!', pop=True)
     
     def _initialized_behaviour_operations_24_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['ExecutePermissionDenied', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['EmptySignature', 'Model transformation activity cannot have an empty signature!']))
     
     def _initialized_behaviour_operations_24_guard(self, parameters):
-        return self.expect_response_partial('Execute permission denied to: ', pop=False)
+        return self.expect_response_partial('Model transformation needs at least one formalism in its input or output signature!', pop=True)
     
     def _initialized_behaviour_operations_25_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['GroupPermissionDenied', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['ExecutePermissionDenied', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_25_guard(self, parameters):
-        return self.expect_response_partial('Group permission denied to: ', pop=False)
+        return self.expect_response_partial('Execute permission denied to: ', pop=False)
     
     def _initialized_behaviour_operations_26_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['UserPermissionDenied', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['GroupPermissionDenied', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_26_guard(self, parameters):
-        return self.expect_response_partial('User permission denied to: ', pop=False)
+        return self.expect_response_partial('Group permission denied to: ', pop=False)
     
     def _initialized_behaviour_operations_27_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['UserNotInGroup', '']))
+        self.raiseInternalEvent(Event("exception", None, ['UserPermissionDenied', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_27_guard(self, parameters):
-        return self.expect_response_partial('User is not a member of the group!', pop=True)
+        return self.expect_response_partial('User permission denied to: ', pop=False)
     
     def _initialized_behaviour_operations_28_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['AdminPermissionDenied', 'Admin permissions are required for this operation!']))
+        self.raiseInternalEvent(Event("exception", None, ['UserNotInGroup', '']))
     
     def _initialized_behaviour_operations_28_guard(self, parameters):
-        return self.expect_response_partial('Admin permission denied', pop=True)
+        return self.expect_response_partial('User is not a member of the group!', pop=True)
     
     def _initialized_behaviour_operations_29_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['InterfaceMismatch', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['AdminPermissionDenied', 'Admin permissions are required for this operation!']))
     
     def _initialized_behaviour_operations_29_guard(self, parameters):
-        return self.expect_response_partial('Incorrect format: ', pop=False)
+        return self.expect_response_partial('Admin permission denied', pop=True)
     
     def _initialized_behaviour_operations_30_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['UnknownElement', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['InterfaceMismatch', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_30_guard(self, parameters):
-        return self.expect_response_partial('Element not found: ', pop=False)
+        return self.expect_response_partial('Incorrect format: ', pop=False)
     
     def _initialized_behaviour_operations_31_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['UnknownModel', self.split_response(self.responses.pop(0))[0]]))
+        self.raiseInternalEvent(Event("exception", None, ['UnknownElement', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_31_guard(self, parameters):
-        return self.expect_response_partial('Model not found: ', pop=False)
+        return self.expect_response_partial('Element not found: ', pop=False)
     
     def _initialized_behaviour_operations_32_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['UnknownMetamodellingHierarchy', 'Metamodelling hierarchy could not be resolved or automatically inferred: there is no typing relation between your specified model and metamodel (%s)' % self.responses.pop(0)]))
+        self.raiseInternalEvent(Event("exception", None, ['UnknownModel', self.split_response(self.responses.pop(0))[0]]))
     
     def _initialized_behaviour_operations_32_guard(self, parameters):
-        return self.expect_response_partial('Conformance hierarchy unknown for: ', pop=False)
+        return self.expect_response_partial('Model not found: ', pop=False)
     
     def _initialized_behaviour_operations_33_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['SignatureMismatch', self.responses.pop(0)]))
+        self.raiseInternalEvent(Event("exception", None, ['UnknownMetamodellingHierarchy', 'Metamodelling hierarchy could not be resolved or automatically inferred: there is no typing relation between your specified model and metamodel (%s)' % self.responses.pop(0)]))
     
     def _initialized_behaviour_operations_33_guard(self, parameters):
-        return self.expect_response_partial('Signature mismatch in operation for tag: ', pop=False)
+        return self.expect_response_partial('Conformance hierarchy unknown for: ', pop=False)
     
     def _initialized_behaviour_operations_34_exec(self, parameters):
+        self.raiseInternalEvent(Event("exception", None, ['TypeMismatch', self.responses.pop(0)]))
+    
+    def _initialized_behaviour_operations_34_guard(self, parameters):
+        return self.expect_response_partial('Signature mismatch in operation for tag: ', pop=False)
+    
+    def _initialized_behaviour_operations_35_exec(self, parameters):
         print("Unknown Error: " + self.responses[0])
         self.raiseInternalEvent(Event("exception", None, ['UnknownError', 'Error: %s' % self.responses.pop(0)]))
     
-    def _initialized_behaviour_operations_34_guard(self, parameters):
+    def _initialized_behaviour_operations_35_guard(self, parameters):
         return self.expect_response_partial('', pop=False)
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_add_0_exec(self, parameters):