Issue 17211: ExecutionFactoryL2::instantiateVistor duplicates code from ExecutionFactorL3::instatiateVistor (fuml-rtf) Source: Commissariat a l Energie Atomique-CEA (Dr. Arnaud Cuccuru, arnaud.cuccuru(at)cea.fr) Nature: Uncategorized Issue Severity: Summary: Specification: Semantics of a Foundational Subset for Executable UML Models (fUML), v1.0 (formal/2011-02-02) Subclause: 8.2.3.2.1 ExecutionFactoryL2 The code listed under operation [1] instantiateVisitor for class ExecutionFactoryL2 accidentally duplicates code from ExecutionFactoryL3.instantiateVisitor. The code of ExecutionFactoryL2.instantiateVisitor should be modified to properly cover L2 elements. Resolution: agreed Revised Text: In Subclause 8.2.3.2.1, in the instantiateVisitor operation, replace all the code with: // Instantiate a visitor object for the given element (at Conformance // Level 2) SemanticVisitor visitor = null; if (element instanceof Activity) { visitor = new ActivityExecution(); } else if (element instanceof ActivityParameterNode) { visitor = new ActivityParameterNodeActivation(); } else if (element instanceof InitialNode) { visitor = new InitialNodeActivation(); } else if (element instanceof ActivityFinalNode) { visitor = new ActivityFinalNodeActivation(); } else if (element instanceof JoinNode) { visitor = new JoinNodeActivation(); } else if (element instanceof MergeNode) { visitor = new MergeNodeActivation(); } else if (element instanceof ForkNode) { visitor = new ForkNodeActivation(); } else if (element instanceof DecisionNode) { visitor = new DecisionNodeActivation(); } else if (element instanceof InputPin) { visitor = new InputPinActivation(); } else if (element instanceof OutputPin) { visitor = new OutputPinActivation(); } else if (element instanceof CallBehaviorAction) { visitor = new CallBehaviorActionActivation(); } else if (element instanceof CallOperationAction) { visitor = new CallOperationActionActivation(); } else if (element instanceof SendSignalAction) { visitor = new SendSignalActionActivation(); } else if (element instanceof ReadSelfAction) { visitor = new ReadSelfActionActivation(); } else if (element instanceof TestIdentityAction) { visitor = new TestIdentityActionActivation(); } else if (element instanceof ValueSpecificationAction) { visitor = new ValueSpecificationActionActivation(); } else if (element instanceof CreateObjectAction) { visitor = new CreateObjectActionActivation(); } else if (element instanceof DestroyObjectAction) { visitor = new DestroyObjectActionActivation(); } else if (element instanceof ReadStructuralFeatureAction) { visitor = new ReadStructuralFeatureActionActivation(); } else if (element instanceof ClearStructuralFeatureAction) { visitor = new ClearStructuralFeatureActionActivation(); } else if (element instanceof AddStructuralFeatureValueAction) { visitor = new AddStructuralFeatureValueActionActivation(); } else if (element instanceof RemoveStructuralFeatureValueAction) { visitor = new RemoveStructuralFeatureValueActionActivation(); } else if (element instanceof ReadLinkAction) { visitor = new ReadLinkActionActivation(); } else if (element instanceof ClearAssociationAction) { visitor = new ClearAssociationActionActivation(); } else if (element instanceof CreateLinkAction) { visitor = new CreateLinkActionActivation(); } else if (element instanceof DestroyLinkAction) { visitor = new DestroyLinkActionActivation(); } else { visitor = super.instantiateVisitor(element); } return visitor; Actions taken: March 6, 2012: received issue January 7, 2013: closed issue Discussion: End of Annotations:===== m: CUCCURU Arnaud To: "Juergen Boldt (juergen@omg.org)" Subject: TR: fUML 1.1 RTF - DRAFT Ballot 1 Hello Juergen, Could you please log the following issue? Thanks in advance, Arnaud. Title: ExecutionFactoryL2::instantiateVistor duplicates code from ExecutionFactorL3::instatiateVistor Summary: Specification: Semantics of a Foundational Subset for Executable UML Models (fUML), v1.0 (formal/2011-02-02) Subclause: 8.2.3.2.1 ExecutionFactoryL2 The code listed under operation [1] instantiateVisitor for class ExecutionFactoryL2 accidentally duplicates code from ExecutionFactoryL3.instantiateVisitor. The code of ExecutionFactoryL2.instantiateVisitor should be modified to properly cover L2 elements. Arnaud CUCCURU CEA LIST, Ingéeur chercheur Laboratoire d.Ingéerie dirigépar les modès pour les Systès Embarqué(LISE) Tel : + 33 1 69 08 49 61 Fax : + 33 1 69 08 20 82 De : Ed Seidewitz [mailto:ed-s@modeldriven.com] Envoyé mardi 6 mars 2012 16:32 À: CUCCURU Arnaud Cc : fuml-rtf@omg.org Objet : RE: fUML 1.1 RTF - DRAFT Ballot 1 Arnaud . Oops! This is, indeed, a document problem. It is correct in the execution model itself. Please, submit an issue and we should be able to include this in the ballot. It is actually ExecutionFactoryL2::instantiateVistor that is incorrect. ExecutionFactorL3::instatiateVistor properly covers L3 elements. Thanks for catching this! -- Ed -------------------------------------------------------------------------------- From: CUCCURU Arnaud [mailto:arnaud.cuccuru@cea.fr] Sent: Tuesday, March 06, 2012 5:34 AM To: Ed Seidewitz; fuml-rtf@omg.org Subject: RE: fUML 1.1 RTF - DRAFT Ballot 1 Hi Ed, I had a look to your proposed resolutions, and though I do not have voting rights, I agree with your propositions. While reading the discussion on .ActionActivation::putToken., I recalled that I had seen a similar problem in the Loci package (I mean .code accidentally duplicated.): The code in ExecutionFactoryL3.instantiateVisitor is the same as the code for ExecutionFactoryL2.instantitateVisitor. Do you want me to raise an issue for that? I suppose that the correct code for ExecutionFactoryL3 can be easily extracted from your reference implementation. So, maybe it is possible to include a resolution for that in this ballot? Cheers, Arnaud CUCCURU CEA LIST, Ingéeur chercheur Laboratoire d.Ingéerie dirigépar les modès pour les Systès Embarqué(LISE) Tel : + 33 1 69 08 49 61 Fax : + 33 1 69 08 20 82 De : Ed Seidewitz [mailto:ed-s@modeldriven.com] Envoyé mardi 6 mars 2012 05:36 À: fuml-rtf@omg.org Objet : fUML 1.1 RTF - DRAFT Ballot 1 Importance : Haute fUML RTFers . I wanted to get at least one ballot voted on before the meeting in Reston, so I have finally gotten our first ballot drafted! The attached draft ballot includes resolutions for 11 issues, all corrections to errors in the execution model. I have prototyped all these changes using the Reference Implementation. Please review the draft ballot and respond to the list with any comments by the close of the day on Friday, 09 March. Please also respond even if you have no comments, to indicate you have completed your review. Barring any major problems, I intend to open official voting on the ballot at 6:00 PM EST Friday and close it at 6:00 PM EDT on the following Wednesday. Once we get this ballot out of the way, we can focus on the move to UML 2.4.1 and on the handful of additional capabilities to be added to fUML 1.1.\ Thanks. -- Ed