Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » M2T (model-to-text transformation) » [xtend] renameOperation(rename operation transformation)
[xtend] renameOperation [message #531103] Mon, 03 May 2010 17:38 Go to next message
pkojo is currently offline pkojoFriend
Messages: 27
Registered: October 2009
Junior Member
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 08:24 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14716
Registered: July 2009
Senior Member
Hi,

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

~Christian


Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: [xtend] renameOperation [message #531238 is a reply to message #531215] Tue, 04 May 2010 09:47 Go to previous messageGo to next message
pkojo is currently offline pkojoFriend
Messages: 27
Registered: October 2009
Junior Member
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 10:09 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14716
Registered: July 2009
Senior Member
Please note: xtend is case sensitive

classlist != classList


Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: [xtend] renameOperation [message #531250 is a reply to message #531241] Tue, 04 May 2010 10:26 Go to previous message
pkojo is currently offline pkojoFriend
Messages: 27
Registered: October 2009
Junior Member
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: Thu Sep 19 14:56:59 GMT 2024

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

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

Back to the top