Skip to main content



      Home
Home » Modeling » M2T (model-to-text transformation) » [xtend] renameOperation(rename operation transformation)
[xtend] renameOperation [message #531103] Mon, 03 May 2010 13:38 Go to next message
Eclipse UserFriend
Hi,

In my previous thread rename class works fine, Now I started with rename Operation transformation on UML model. Which looks more complicated then rename class,
Following is my m2m code in xtend, The problem is commented in the source code.

import uml;
extension templates::helper;


uml::Model root(uml::Model model):

	let classlist = model.eAllContents.typeSelect(Class).collect(e|e) :
	let operationlist = newList() :

	classlist.first().ownedOperation.forAll(o|collectOperations(o, classlist, operationlist)) ->
	operationlist.forAll(o|renameOperation((String)o, classlist)) ->
	model;
	

Boolean collectOperations(Operation o, List classlist, List operationlist) :
	classlist.forAll(c|((Class)c).ownedOperation.exists(op|op.name == "op1"))
		? (// operation found in all classes
			// put method in list
			operationlist.add(o.name) ->
			dump("Added operation '"+o.name+"' to list")
		)
		: (
			dump("Operation '"+o.name+"' exists not in all classes of list")
		) ->
	true;

// The problem with this renameOperation that xtend does not allow me use classList for owned  Operation, How can I handle this

Boolean renameOperation(String o, List classlist) :
	classList.ownedOperation.setName("myNewOperation")->
	true;



Thanks in advance
Re: [xtend] renameOperation [message #531215 is a reply to message #531103] Tue, 04 May 2010 04:24 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

you can (as with java generics) make your oaw collections typed. in your case use List[uml::Class] instead of just List.

~Christian
Re: [xtend] renameOperation [message #531238 is a reply to message #531215] Tue, 04 May 2010 05:47 Go to previous messageGo to next message
Eclipse UserFriend
Thanks Christian, but now I am getting following errors:

When I used like this

Boolean renameOperation(String o, List[uml::Class] classlist) :
classList.ownedOperation.setName("myNewOperation")->
true;

xtend mark as an error : unknown vairable or enumeration litteral 'classlist'

and when I used like this error mark disappered
Boolean renameOperation(String o, List[uml::Class] classlist) :
List[uml::Class]classList.ownedOperation.setName("myNewOperation ")->
true;
but workflow is interupted with following error

0 INFO WorkflowRunner - ------------------------------------------------------------ --------------------------
15 INFO WorkflowRunner - EMF Modeling Workflow Engine 1.0.0, Build v201003150825
15 INFO WorkflowRunner - (c) 2005-2009 openarchitectureware.org and contributors
15 INFO WorkflowRunner - ------------------------------------------------------------ --------------------------
15 INFO WorkflowRunner - running workflow: C:/Workspace/m2m.renameOperation.transformation/src/renameOp eration_workflow.mwe
15 INFO WorkflowRunner -
1409 INFO CompositeComponent - XmiReader: file 'model/test.uml' => slot 'modelSlot'
1626 INFO CompositeComponent - DirectoryCleaner(dirCleaner): cleaning directory 'src-gen'
1626 INFO DirectoryCleaner - Cleaning C:\Workspace\m2m.renameOperation.transformation\src-gen
1626 INFO CompositeComponent - XtendComponent: executing 'm2m::renameOperation'
1843 ERROR AbstractExpressionsUsingWorkflowComponent - mismatched input 'classList' expecting ';' on line 29
org.eclipse.internal.xtend.xtend.parser.ParseException: mismatched input 'classList' expecting ';' on line 29
at org.eclipse.internal.xtend.xtend.parser.ParseFacade$3.handle Error(ParseFacade.java:104)
at org.eclipse.internal.xtend.xtend.parser.ParseFacade$2.report Error(ParseFacade.java:92)
at org.antlr.runtime.BaseRecognizer.recoverFromMismatchedElemen t(BaseRecognizer.java:556)
at org.antlr.runtime.BaseRecognizer.recoverFromMismatchedToken( BaseRecognizer.java:513)
at org.antlr.runtime.BaseRecognizer.mismatch(BaseRecognizer.jav a:119)
at org.antlr.runtime.BaseRecognizer.match(BaseRecognizer.java:9 9)
at org.eclipse.internal.xtend.xtend.parser.XtendParser.extensio n(XtendParser.java:1017)
at org.eclipse.internal.xtend.xtend.parser.XtendLocationAddingP arser.extension(XtendLocationAddingParser.java:46)
at org.eclipse.internal.xtend.xtend.parser.XtendParser.file(Xte ndParser.java:200)
at org.eclipse.internal.xtend.xtend.parser.XtendLocationAddingP arser.file(XtendLocationAddingParser.java:211)
at org.eclipse.internal.xtend.xtend.parser.ParseFacade.file(Par seFacade.java:70)
at org.eclipse.internal.xtend.xtend.parser.ParseFacade.file(Par seFacade.java:55)
at org.eclipse.internal.xtend.xtend.parser.ParseFacade.file(Par seFacade.java:50)
at org.eclipse.internal.xtend.xtend.XtendResourceParser.parse(X tendResourceParser.java:25)
at org.eclipse.xtend.expression.ResourceManagerDefaultImpl.load Resource(ResourceManagerDefaultImpl.java:70)
at org.eclipse.xtend.expression.ExecutionContextImpl.internalAl lExtensions(ExecutionContextImpl.java:320)
at org.eclipse.xtend.expression.ExecutionContextImpl.access$0(E xecutionContextImpl.java:304)
at org.eclipse.xtend.expression.ExecutionContextImpl$1.createNe w(ExecutionContextImpl.java:341)
at org.eclipse.xtend.expression.ExecutionContextImpl$1.createNe w(ExecutionContextImpl.java:1)
at org.eclipse.internal.xtend.util.Cache.get(Cache.java:26)
at org.eclipse.xtend.expression.ExecutionContextImpl.getExtensi onForTypes(ExecutionContextImpl.java:346)
at org.eclipse.xtend.expression.ExecutionContextImpl.getExtensi on(ExecutionContextImpl.java:355)
at org.eclipse.internal.xtend.expression.ast.OperationCall.eval uateInternal(OperationCall.java:72)
at org.eclipse.internal.xtend.expression.ast.Expression.evaluat e(Expression.java:50)
at org.eclipse.xtend.expression.ExpressionFacade.evaluate(Expre ssionFacade.java:56)
at org.eclipse.xtend.expression.ExpressionFacade.evaluate(Expre ssionFacade.java:45)
at org.eclipse.xtend.XtendComponent.invokeInternal2(XtendCompon ent.java:190)
at org.eclipse.xtend.expression.AbstractExpressionsUsingWorkflo wComponent.invokeInternal(AbstractExpressionsUsingWorkflowCo mponent.java:238)
at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invok e(AbstractWorkflowComponent.java:129)
at org.eclipse.emf.mwe.core.container.CompositeComponent.intern alInvoke(CompositeComponent.java:101)
at org.eclipse.emf.mwe.core.container.CompositeComponent.invoke (CompositeComponent.java:86)
at org.eclipse.emf.mwe.core.WorkflowRunner.executeWorkflow(Work flowRunner.java:408)
at org.eclipse.emf.mwe.core.WorkflowRunner.run(WorkflowRunner.j ava:293)
at org.eclipse.emf.mwe.core.WorkflowRunner.main(WorkflowRunner. java:241)
1843 ERROR AbstractExpressionsUsingWorkflowComponent - Error in Component of type org.eclipse.xtend.XtendComponent:
EvaluationException : mismatched input 'classList' expecting ';' on line 29
nofile[0,20] on line 1 'root(modelSlot)'

1858 ERROR WorkflowRunner - Workflow interrupted. Reason: mismatched input 'classList' expecting ';' on line 29
1858 ERROR WorkflowRunner - [ERROR]: mismatched input 'classList' expecting ';' on line 29(Element: root(modelSlot); Reported by: XtendComponent: executing 'm2m::renameOperation')
Re: [xtend] renameOperation [message #531241 is a reply to message #531238] Tue, 04 May 2010 06:09 Go to previous messageGo to next message
Eclipse UserFriend
Please note: xtend is case sensitive

classlist != classList
Re: [xtend] renameOperation [message #531250 is a reply to message #531241] Tue, 04 May 2010 06:26 Go to previous message
Eclipse UserFriend
Thank you so much, now it works fine.
Previous Topic:Access to GMF domain file for C++/Java Code Generation
Next Topic:[Check] Location of ECORE model influences validity of check files?
Goto Forum:
  


Current Time: Tue Jul 15 10:45:55 EDT 2025

Powered by FUDForum. Page generated in 1.25421 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top