Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Archived » M2M (model-to-model transformation) » [ATL] Copying one model with reference to another => ClassCastException
[ATL] Copying one model with reference to another => ClassCastException [message #80697] Mon, 05 May 2008 14:57 Go to next message
Eclipse UserFriend
Originally posted by: goetz.botterweck.lero.ie

This is a multi-part message in MIME format.
--------------050108050304020308090206
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

WHAT I WANT TO DO

I have two model files My.amodel and My.bmodel
My.bmodel contains references to My.amodel

Now I want to use ATL to create a copy from My.bmodel to My_out.bmodel
Preserving the references to My.amodel


THE PROBLEM

This works as long as I just copy the elements in My.bmodel without the
refs to My.amodel.

As soon as I try to set the references to the corresponding elements in
My.amodel the transformation fails with a java.lang.ClassCastException.
See the problematic line at ##### in the ATL file below.

Thanks for any hints,
Goetz

See attachment with zip of project.

--------- ADDITIONAL INFOS ---------

I assume that the problem comes from the fact that ATL tries to handle
elements in My.amodel and for some reason it has wrong information about
the meta-model and the classes in it. Hence, it tries to do a cast.
Whereas I would expect it to leave My.amodel untouched.

Could something be wrong with the "registration" or identification of
EMF/Ecore meta models (with Namespace/URI) . Could I check something
about that? I noticed that, despite the launch configuration, the
transformation will only execute of the .ecore files are in certain
folders in the workspace.

--------- copyBModelWithRefs.atl ---------

module copyBModelWithoutRefs; -- Module Template
create bout : BMETA, aout : AMETA from bin : BMETA, ain : AMETA;

rule BModel {
from s : BMETA!BModel
to t : BMETA!BModel mapsTo s (
name <- s.name.debug('BModel'),
elements <- s.elements
)
}

rule BElement {
from s : BMETA!BElement
to t : BMETA!BElement mapsTo s (
name <- s.name.debug('BElement'),

-- ##### THIS IS THE PROBLEMATIC LINE #####
correspondingAElement <- s.correspondingAElement
)
}

--------- Stacktrace ---------

INFO: BModel: 'BModel1'
INFO: BElement: 'BElement1'
SCHWERWIEGEND: ****** BEGIN Stack Trace
SCHWERWIEGEND: exception:
SCHWERWIEGEND: The value of type 'class
org.eclipse.emf.ecore.impl.DynamicEObjectImpl' must be of type
'org.eclipse.emf.ecore.impl.EClassImpl@8558b7 (name: AElement)
(instanceClassName: null) (abstract: false, interface: false)'
java.lang.ClassCastException: The value of type 'class
org.eclipse.emf.ecore.impl.DynamicEObjectImpl' must be of type
'org.eclipse.emf.ecore.impl.EClassImpl@8558b7 (name: AElement)
(instanceClassName: null) (abstract: false, interface: false)'
at
org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleEObject.dynamicGet(EStructuralFeatureImpl .java:2301)
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1017)
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1002)
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:994)
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:989)
at
org.eclipse.m2m.atl.drivers.emf4atl.ASMEMFModelElement.get(A SMEMFModelElement.java:147)
at
org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:301)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
at
org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
at
org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
at
org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
at
org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:338)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
at
org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
at
org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
at
org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
at
org.eclipse.m2m.atl.engine.vm.ASMInterpreter.<init>(ASMInterpreter.java:299)
at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:169)
at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:111)
at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:87)
at
org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:326)
at
org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:426)
at
org.eclipse.m2m.atl.adt.launching.AtlRegularVM.launch(AtlReg ularVM.java:398)
at
org.eclipse.m2m.atl.adt.launching.AtlLaunchConfigurationDele gate.launch(AtlLaunchConfigurationDelegate.java:42)
at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:759)
at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:608)
at
org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(D ebugUIPlugin.java:899)
at
org.eclipse.debug.internal.ui.DebugUIPlugin$7.run(DebugUIPlu gin.java:1102)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
SCHWERWIEGEND: A.main() : ??#24 null
SCHWERWIEGEND: local variables = {self=copyBModelWithoutRefs : ASMModule}
SCHWERWIEGEND: local stack = []
SCHWERWIEGEND: A.__exec__() : ??#18 null
SCHWERWIEGEND: local variables = {e=TransientLink {rule = 'BElement',
sourceElements = {s = bin!BElement1}, targetElements = {t =
bout!BElement1}, variables = {}}, self=copyBModelWithoutRefs : ASMModule}
SCHWERWIEGEND: local stack = []
SCHWERWIEGEND: A.__applyBElement(1 : NTransientLink;) : ??#20 18:28-18:51
SCHWERWIEGEND: local variables = {t=bout!BElement1, s=bin!BElement1,
link=TransientLink {rule = 'BElement', sourceElements = {s =
bin!BElement1}, targetElements = {t = bout!BElement1}, variables = {}},
self=copyBModelWithoutRefs : ASMModule}
SCHWERWIEGEND: local stack = [bout!BElement1, bout!BElement1,
copyBModelWithoutRefs : ASMModule]
SCHWERWIEGEND: ****** END Stack Trace
INFO: Execution terminated due to error (see launch configuration to
allow continuation after errors).
SCHWERWIEGEND: null
java.lang.RuntimeException
at
org.eclipse.m2m.atl.engine.vm.SimpleDebugger.error(SimpleDeb ugger.java:195)
at
org.eclipse.m2m.atl.engine.vm.StackFrame.printStackTrace(Sta ckFrame.java:95)
at
org.eclipse.m2m.atl.engine.vm.StackFrame.printStackTrace(Sta ckFrame.java:87)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:173)
at
org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
at
org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
at
org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
at
org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:338)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
at
org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
at
org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
at
org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
at
org.eclipse.m2m.atl.engine.vm.ASMInterpreter.<init>(ASMInterpreter.java:299)
at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:169)
at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:111)
at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:87)
at
org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:326)
at
org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:426)
at
org.eclipse.m2m.atl.adt.launching.AtlRegularVM.launch(AtlReg ularVM.java:398)
at
org.eclipse.m2m.atl.adt.launching.AtlLaunchConfigurationDele gate.launch(AtlLaunchConfigurationDelegate.java:42)
at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:759)
at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:608)
at
org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(D ebugUIPlugin.java:899)
at
org.eclipse.debug.internal.ui.DebugUIPlugin$7.run(DebugUIPlu gin.java:1102)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: java.lang.ClassCastException: The value of type 'class
org.eclipse.emf.ecore.impl.DynamicEObjectImpl' must be of type
'org.eclipse.emf.ecore.impl.EClassImpl@8558b7 (name: AElement)
(instanceClassName: null) (abstract: false, interface: false)'
at
org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleEObject.dynamicGet(EStructuralFeatureImpl .java:2301)
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1017)
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1002)
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:994)
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:989)
at
org.eclipse.m2m.atl.drivers.emf4atl.ASMEMFModelElement.get(A SMEMFModelElement.java:147)
at
org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:301)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
... 22 more




--------------050108050304020308090206
Content-Type: application/x-zip-compressed;
name="ATLCookbook_filterWithRefs.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="ATLCookbook_filterWithRefs.zip"

UEsDBBQACAAIABl+pTgAAAAAAAAAAAAAAAAjAAAAQVRMQ29va2Jvb2tfZmls dGVyV2l0aFJl
ZnMvLnByb2plY3SNkLsKAjEQRWsF/0G2N1Eri7jiAyux8IGlxOy4RvNYkqz4 +SYxKmtlMTDn
cmfmMmTykKJ7B2O5VuNsgPpZFxTTBVflONvvlr1RNsk7bVIZfQXmFmCZ4ZXz bq+2iKIS8ulu
Ndf6dvJ1PHPhwBy4u2zgbAmOhuBkWkpQLif43QU1rbURcINONRfFtgIWKOHc j1JVRCUd16ZE
wASvLCA5lIg6gWjhUPSDCTx7td8wfpaasg4pbGLcFAj+vZeUdyB/3NUGkvsF /2RZR2eIEifi
4u+qzwuaf34CUEsHCAv15IXWAAAApgEAAFBLAwQUAAgACAAZfqU4AAAAAAAA AAAAAAAAQwAA
AEFUTENvb2tib29rX2ZpbHRlcldpdGhSZWZzL2xhdW5jaC9BVExDb29rYm9v a19maWx0ZXJX
aXRoUmVmcy5sYXVuY2idlk1vm0AQhu+V+h8Qp/YQaHPqIU5kO1ixZOIoxu0x WmDA2yy7aD/i
8O87QEyxC9j0YFkM8z7vzDBauLl7z5j1BlJRwSf2d+ebbQGPREx5OrG3weLq h20pTXhMmOAw
sbmw724/f7phxPBoNxc8oamRRKPc0kWOGUKmDkSM5gqc7DpziGYOibVTK5Bb RgJJuEqEzCql
XRKVlnhzqvEvNBqsVygm9jRYWQvKwHokGdjWG2EGLVwMz4V4DfH3klCmQf6i evcMiXL1EVm5
kciLmS9iYIeU0t92By1/+o3XM6SGEYkh68seCVYMoUlTkF9rBtbAgPBTCGNi v+RYWGWNtiBx
rqAarpYGakJG8hP1kudG2x/3PK5lUccJ5Y1+6nvBtAG0ksJW0uxvktu26bZd 0VANNVW2Yt2X
7TcGCWGqt42qdesBl4eB7GinbuGA8vxFVzuz7qQL2qnsA9zJrkkKHPAB6q/v vdV6Gzxtg64K
jsssL84I2o+pSl0+9mTOxqLDEXWHA2VcML610T1b2K6hfw3bWeP28Ino3Tnf oSMgKx+8cv3i
BRUOqS7PPaeLeAOs4yUZpIEmVx/ImofHpZBwfj8upYZnqOH/DTLsbT4cPcg2 65+N6DyWn6T4
DZE+fhH0e9VoRpU+4WxMDpJmuTicW91nXSS4ptzANEGoJ6WQXWdetzamioQM mugDMPSck2gH
l0NynIH23iEy5XssoNkorcBpjBCondhvTJYRWYwQachHZJs8F1Jv/dX1BkcK ovxaUF16t+Pb
AuN/AFBLBwjpU74xSAIAAKsIAABQSwMEFAAIAAgAGX6lOAAAAAAAAAAAAAAA ADMAAABBVExD
b29rYm9va19maWx0ZXJXaXRoUmVmcy9tZXRhLW1vZGVscy9hbW9kZWwuZWNv cmXdk19vgjAU
xd9N/A5N9ywV97IQ0LgNE5OZGP8ke+3wgs2gJW0Z7tvvFoFptof5uj5A6D3n x+m9EM5ORU4+
QBuhZER9b0wJyEQdhMwiut8tRg90Nh0OQkiUhiBe8+SdZ0BOhQh61wRdwwHB hTBpAixG9Ght
GTBW17WnisxTOmOvqyXtJOZaUt83isl47KPsZZscoeAjIY3lMoErepPkygxJ LkoDDQGK1FEm
LHYySiQvUMwLdYC8xUiz3yx7ADvXPGj1Zq0hFafeM3WmEJ5yboxIBZ6ZYPjA fpbIbbvSFLt3
zVffPufcWl0lttI8XwDHO/wC2EAKGtxJWwjkUIC0CFX6gKVDRFOem64TblVl CfpRVRJrIx/H
tmuId4zN47ObkkRJy4V0DxHFHEDZTbnm1mrxVtk+l7v+yERyVfdR/IuIbaQW 9swtdxvkT6PD
c8QYEb/DNnPILodw+1i6pvyfBuDG1V+JW19QSwcIfNnz0mUBAADQAwAAUEsD BBQACAAIABl+
pTgAAAAAAAAAAAAAAAAzAAAAQVRMQ29va2Jvb2tfZmlsdGVyV2l0aFJlZnMv bWV0YS1tb2Rl
bHMvYm1vZGVsLmVjb3Jl1VRdS8MwFH0f+B9CfF6zzRcpq2PTCYKDoRN8zbrb GcxHSVI7/703
XdutfoDzzVBSmnvOybn3Jh1PdkqSN7BOGJ3QYTSgBHRqNkJvE/q0uu1f0snV WW8MqbEQz5c8
feVbIDsl4pY1QtZZj+BAMe1iDCb0xfs8Zqwsy8iobWTslj0v7mgDcV1IeVEh RoPBEGH3j+kL
KN4X2nmuU+ioV046ZEilyB1UCqCyoDJi8wCjRHOF4LUyG5C1jHZPD3etANvH IqjxbmkhE7uW
cxVIY7iW3DmRCcyZoPnYv+eoW1elCjZ7zRYHXmA+elukvrBc3gLHN3wj8AAZ WAiZ1iIgQYH2
KGrsBkObhGZcuqYSYRR5DnZmCo2x/hDbtqoUzxmbzfdsSlKjPRc6fCQUfQBl J/maem/FuvCt
rzB/8USkKVsrwyOLtaVa7IZ7HhbIr1qHeczRIp7D2vOYHTfh9LY0Rfm3Bfjz YcJlBOZGh1s9
bepwcPk5m67rqookihg+6DKCHVe5hIhX94PtZ350idB4u8kPrcOFzv8Elz4A UEsHCI/41RCY
AQAAigQAAFBLAwQUAAgACAAZfqU4AAAAAAAAAAAAAAAAKwAAAEFUTENvb2ti b29rX2ZpbHRl
cldpdGhSZWZzL21vZGVscy9NeS5hbW9kZWx9Tr0KwjAQ3gXfIdxuYjtJSCwO Cg7dFFxLe8RA
cpG02D6+qaEFF6fj+z9VTd6xN8beBtJQ8D0wpDZ0loyG++2yO0B13G5U40OH Tp7q+bDJW7mG
yjmUaqiXidfwHIaXFGIcRx684SEa8aiviyUXrS6RMcc2RARGjUcNeaWANMyY QoceaegX8Zxx
AeKvXn51JX4+T8wHUEsHCO18tSGUAAAA8wAAAFBLAwQUAAgACAAZfqU4AAAA AAAAAAAAAAAA
KwAAAEFUTENvb2tib29rX2ZpbHRlcldpdGhSZWZzL21vZGVscy9NeS5ibW9k ZWylkD0LwjAQ
hnfB/xDO2Zx1kpJYFRQcuim4+nG2hSaRpFj996bGCIK4OIW79+M5IrKbqtmV rKuMlpDwETDS
R3OqdCFhu1kNJ5BN+z1xUOZEdbrIu4fdVJW+Q+Mu5Gu0S/1eQtk0lxSxbVtu VMGNLXCXr6Ml
FL1dGGZOR2MJmN4rkhAoCXgwY4JqUqQbF8VlmF+yN/ioJXcxurt6/pJZaeks Ib/z/ZMwQJzF
Jn8whm6Mq5+o8R+o5BtK4Md/+s0DUEsHCFp2V2W+AAAAiQEAAFBLAwQUAAgA CAAZfqU4AAAA
AAAAAAAAAAAALwAAAEFUTENvb2tib29rX2ZpbHRlcldpdGhSZWZzL21vZGVs cy9NeV9vdXQu
YW1vZGVss7GvyM1RKEstKs7Mz7NVMtQzUFJIzUvOT8nMS7dV8gz217WwMLXU NVSyt+PlsqnI
zbSK8PVUANFwPUYgPUBT8oqtgOK2ShklJQVW+vrl5eV6+bnpevlF6fpAPUr6 QAMAUEsHCFx2
T3ZgAAAAbgAAAFBLAwQUAAgACAAZfqU4AAAAAAAAAAAAAAAALwAAAEFUTENv b2tib29rX2Zp
bHRlcldpdGhSZWZzL21vZGVscy9NeV9vdXQuYm1vZGVsVU69CsIwEN4F3yHc 3sQIQg2JBcGh
Q3FwcdX2iIH8SFNsH9+U0EKn4/s/WU3Okh/20QSvgNMDEPRt6IzXCurHvSjL 07ngUF32O/l2
oUMrrs18yOSMWJPHOZm6fBSJV/AZhq9gbBxHGpymodfs2dSLJRetLpYxxTb0 CMS/HCrIKxzS
MCESLTr0Q1zEW8Yc2FafoWSbRxPzB1BLBwhPma3ElwAAAOcAAABQSwMEFAAI AAgAGX6lOAAA
AAAAAAAAAAAAAEEAAABBVExDb29rYm9va19maWx0ZXJXaXRoUmVmcy90cmFu c2Zvcm1hdGlv
bnMvY29weUJNb2RlbFdpdGhSZWZzLmFzbe1YS3PbNhA+pzP9D4p6sHqwJL5J W2nG9iQzUeO4
idz26KFJSOGUIlmScuz++i4sEoBFLEhadtppc6GoxYcFsI8Pu5y9vl3HgxuS F1GaDF4NDrTx
9GBAkiANo2RFBe8WF4eua3mH2sHg9U/ffzfzi/Ug8dfk1XA6hP8vZkFGf+A3 TYrST8rBjR9v
YDhIs7vT8zQk8e9R+TndlJ/IshhO5OA4Sv5ABz9c5n5SRCQp3wNsQcpjDBmk MTY0Ryet/SjB
xk6wgSk2cBHEv/g5GKjMo79IeHmXEQz6Q+KX0Q06fJbGMQlK8Ax6pnFByg+w 1mjx49Fvih0t
onUWE9VeAHSS3CkXehOTNfiAahnNFevtegu17fjqau2XwWeSX12NFAopkNyS QI0qSLzExoSF
Wnezjdm2/WyhlUlU4AdaMVDb6JtLNBAX5M8NJCzq2Gs8uM/PL96+PIv9ooiW EcmPx34cv7uH
BKR4m6drGlYf52h8zsebBKJzdAbRcIbCFNmloSceJym16ikGMPVO0deNUY5p dH/axGR0fnL5
/iV9O1YFWletfhgu0k0ekDpMFqq0QfNEovbSz1csIdVqm+RJFdD30Y5ihRL7 yDu0j3TUXzv5
gLq1ZVwzYR146Aa+UE6KNL4heCKjgTgfp0H8rvg5SsKLJWUwNLo0t4c1wRH0 /fRux9eQOjsG
btnYr0lIllFCQgh89BCa1TVMYF/bMKGZvN0bPTSu2cFGDPSyQ7OQUiTzlHLZ j/NxlATxhhYc
FIjzDSCXsV+WJBmpYCgT3v9gg9VmL8k6Q5m2h+XppRw2zb9QGIIWVXjYb++/ /mFZnN7dM1uP
cKS+87Msrqq3HjTBZ9ZZ0H3ugzU7WrqHQxrJifoBzaMuk1Himo9Dcr1ZKVOB bBdA7xfnSNMO
4YFmXQ1AM9k50k0AGG0aDPQcMKYcd4806xAedgtAR3nMhRVU47HiXt8JP7xN yCHfszShpHPS
dilZ1Cb0iVqNQ1DLwyCYHp6G2arFQM9OB1sQYDr3kD69VoiF3ucadYKAmE22 Xd4M6sQ4rPo/
bTgooRdgt8CDQaMerI47SzOS+7SZqQDWkC1dktuyQrOwybY9FHSm2/+TXQG0 qOT+7cUsTv1w
ACkK0VlNh/mb4vNW5kpkHpMl5Ev9Gm6yJlKbMmgA5XEl1IbqSfp+axrqNQWh yYRQwm5lfLLa
LqySaN0kU60pVQvbsrsCWb5MmD9nkOAk2ayvSV7613ElnEilcQq6bvw8oiIu h4EbMijitKSN
eh2u7nBwTVZRci8jSQiBy3JxItc0m7CwlQax5j1vFHNL6dOOJuVF+j9iUmNP i+r601mUh7Vu
SGJd58kDZXe4JhJI9xz54mdCUl/dahJttsxfUidy0uqk2NtTcZay16ikDmG2 KMo0JxWxTB8Y
o2xqNzhBRMtKpCvjdtWkFn4sQ+a17jSqy2jU4E6XTjIsyX4N2SVg2C2aZKTb FojCmYSVXNny
3BCQeA+81pb5IE3IIIJsNacsgWG7VQZ7PIUfSRBaTRBgzVo/UOVWvyncIp0o hX/reSSnwIrP
wCmm7JL/xin/bU4RnP6v4ZS2QPzanGL8LzjF7MUpgqA+xpR1SKyZ61YeGupS cNVsBLiHTbuR
TabTN5tagth0ZUEsjHuNPViyI0mVW3wbq7RMK6GQAZx1pJqESdKruDM5S7Xj RGeZSitzmQAU
Tm3JhDaarQ9gz99j6XWmWTzToNKpmiynZ24KN48k/S0Pn/DYZLanT5/MTRB4 tlas9cv4J8rG
FgqRRp6tP3v0qGLB7hkKMjyLTttA8Y+OnH7XwFP4u6XBsa0ObNRyhbSElK0i nt6nkJZUX+MU
DnqK54t1TcKUVhWLrjLWOV6rJ2iyGaps0vYmSvfJiNL2+nHgTqfQqKy5Yx2O bLuA5UplTY6j
yZQ60k6EC4X6p/Otz5LFlhYospx3ZEKhZigkKvfamtNSpBQSIKvMurcSjlDq a3UMCzdfDbMl
ML0JczisLk6ET+0M5kq0mU0Yv3zqLkT87F2h3GmzWdG8JkxrwsQvvjVM57C6 tdKFTmbf8k1o
rVj1JhiITTDYBG5SRzVBWe7JJjDec5t3tr7vN2b36Xq3byz2KBaT3vlfncVc aVclWVAAPoLF
XBk9NVnMdTqxmOt2YjHX68Ri3rQLi3kSepKwmKd3YjHP+MZivVlsNvGLNfz+ DVBLBwhacphD
aQYAALItAABQSwMEFAAIAAgAGX6lOAAAAAAAAAAAAAAAAEEAAABBVExDb29r Ym9va19maWx0
ZXJXaXRoUmVmcy90cmFuc2Zvcm1hdGlvbnMvY29weUJNb2RlbFdpdGhSZWZz LmF0bI2QTUsD
MRCGz8mvGE9toVvwar3sSqALXZUa8CAe9mNaFzbJkmQPIv53Z5MGpCg0BJKZ 95mZN1GmmwaE
1oyfRWU6HF57/2Emf8Cj20KWQRUBiWocao+8tUgHNMTAHRSVkPka6hjlcwRH axQ0vf4lhyCo
W87t3C8Ogy8OtEKFS/xN1DjzBvxFElQ9OmkIXnLGdK0Q7jNwm/m26bCZTstF JBerNWPE4IAK
tXeRSxFnK+DfyYuI2X/cnNVLP6noGkdnljzxYIr+9e32HeSufAHacifg+fBU 7EWVy/IB9uWj
IKo11qIbje56fcrTvND9T4lK4qv4D1BLBwhwl/5p8wAAANYBAABQSwECFAAU AAgACAAZfqU4
C/XkhdYAAACmAQAAIwAAAAAAAAAAAAAAAAAAAAAAQVRMQ29va2Jvb2tfZmls dGVyV2l0aFJl
ZnMvLnByb2plY3RQSwECFAAUAAgACAAZfqU46VO+MUgCAACrCAAAQwAAAAAA AAAAAAAAAAAn
AQAAQVRMQ29va2Jvb2tfZmlsdGVyV2l0aFJlZnMvbGF1bmNoL0FUTENvb2ti b29rX2ZpbHRl
cldpdGhSZWZzLmxhdW5jaFBLAQIUABQACAAIABl+pTh82fPSZQEAANADAAAz AAAAAAAAAAAA
AAAAAOADAABBVExDb29rYm9va19maWx0ZXJXaXRoUmVmcy9tZXRhLW1vZGVs cy9hbW9kZWwu
ZWNvcmVQSwECFAAUAAgACAAZfqU4j/jVEJgBAACKBAAAMwAAAAAAAAAAAAAA AACmBQAAQVRM
Q29va2Jvb2tfZmlsdGVyV2l0aFJlZnMvbWV0YS1tb2RlbHMvYm1vZGVsLmVj b3JlUEsBAhQA
FAAIAAgAGX6lOO18tSGUAAAA8wAAACsAAAAAAAAAAAAAAAAAnwcAAEFUTENv b2tib29rX2Zp
bHRlcldpdGhSZWZzL21vZGVscy9NeS5hbW9kZWxQSwECFAAUAAgACAAZfqU4 WnZXZb4AAACJ
AQAAKwAAAAAAAAAAAAAAAACMCAAAQVRMQ29va2Jvb2tfZmlsdGVyV2l0aFJl ZnMvbW9kZWxz
L015LmJtb2RlbFBLAQIUABQACAAIABl+pThcdk92YAAAAG4AAAAvAAAAAAAA AAAAAAAAAKMJ
AABBVExDb29rYm9va19maWx0ZXJXaXRoUmVmcy9tb2RlbHMvTXlfb3V0LmFt b2RlbFBLAQIU
ABQACAAIABl+pThPma3ElwAAAOcAAAAvAAAAAAAAAAAAAAAAAGAKAABBVExD b29rYm9va19m
aWx0ZXJXaXRoUmVmcy9tb2RlbHMvTXlfb3V0LmJtb2RlbFBLAQIUABQACAAI ABl+pThacphD
aQYAALItAABBAAAAAAAAAAAAAAAAAFQLAABBVExDb29rYm9va19maWx0ZXJX aXRoUmVmcy90
cmFuc2Zvcm1hdGlvbnMvY29weUJNb2RlbFdpdGhSZWZzLmFzbVBLAQIUABQA CAAIABl+pThw
l/5p8wAAANYBAABBAAAAAAAAAAAAAAAAACwSAABBVExDb29rYm9va19maWx0 ZXJXaXRoUmVm
cy90cmFuc2Zvcm1hdGlvbnMvY29weUJNb2RlbFdpdGhSZWZzLmF0bFBLBQYA AAAACgAKAM4D
AACOEwAAAAA=
--------------050108050304020308090206--
Re: [ATL] Copying one model with reference to another => ClassCastException [message #80795 is a reply to message #80697] Tue, 06 May 2008 10:06 Go to previous message
William Piers is currently offline William PiersFriend
Messages: 301
Registered: July 2009
Senior Member
Hello,

Goetz Botterweck a écrit :
> WHAT I WANT TO DO
>
> I have two model files My.amodel and My.bmodel
> My.bmodel contains references to My.amodel
>
> Now I want to use ATL to create a copy from My.bmodel to My_out.bmodel
> Preserving the references to My.amodel
>
>

So you don't want to recreate a My_out.amodel ? I ask because that's the
case in your transformation sample.

> THE PROBLEM
>
> This works as long as I just copy the elements in My.bmodel without the
> refs to My.amodel.
>
> As soon as I try to set the references to the corresponding elements in
> My.amodel the transformation fails with a java.lang.ClassCastException.
> See the problematic line at ##### in the ATL file below.
>
> Thanks for any hints,
> Goetz
>
> See attachment with zip of project.

I tried your sample but the metamodel B didn't validate because the
reference to AElements was incorrectly set.

Here is your file :
<eStructuralFeatures xsi:type="ecore:EReference"
name="correspondingAElement"
ordered="false" eType="ecore:EClass
.../../org.example.amodel/model/amodel.ecore#//AElement"/>

And the value I corrected :
<eStructuralFeatures xsi:type="ecore:EReference"
name="correspondingAElement"
ordered="false" eType="ecore:EClass amodel.ecore#//AElement"/>

>
> --------- ADDITIONAL INFOS ---------
>
> I assume that the problem comes from the fact that ATL tries to handle
> elements in My.amodel and for some reason it has wrong information about
> the meta-model and the classes in it. Hence, it tries to do a cast.
> Whereas I would expect it to leave My.amodel untouched.
>
> Could something be wrong with the "registration" or identification of
> EMF/Ecore meta models (with Namespace/URI) . Could I check something
> about that? I noticed that, despite the launch configuration, the
> transformation will only execute of the .ecore files are in certain
> folders in the workspace.
>
> --------- copyBModelWithRefs.atl ---------
>
> module copyBModelWithoutRefs; -- Module Template
> create bout : BMETA, aout : AMETA from bin : BMETA, ain : AMETA;
>

If you don't want to copy AMETA elements, you don't need to refer to the
ain/aout models.
Just do :
create bout : BMETA from bin : BMETA;

When there is a reference between two input models, the metamodel
reference is implicit, and the two models are loaded.

> rule BModel {
> from s : BMETA!BModel
> to t : BMETA!BModel mapsTo s (
> name <- s.name.debug('BModel'),
> elements <- s.elements
> )
> }
>

Notice that the mapsTo instruction belongs to ATL syntax but has no
effects for now.

> rule BElement {
> from s : BMETA!BElement
> to t : BMETA!BElement mapsTo s (
> name <- s.name.debug('BElement'),
>
> -- ##### THIS IS THE PROBLEMATIC LINE #####
> correspondingAElement <- s.correspondingAElement
> )
> }
>

Finally, you need to know that the loading of referenced metamodel has
been corrected recently. So check you use the last ATL version.

Best regards,

William

> --------- Stacktrace ---------
>
> INFO: BModel: 'BModel1'
> INFO: BElement: 'BElement1'
> SCHWERWIEGEND: ****** BEGIN Stack Trace
> SCHWERWIEGEND: exception:
> SCHWERWIEGEND: The value of type 'class
> org.eclipse.emf.ecore.impl.DynamicEObjectImpl' must be of type
> 'org.eclipse.emf.ecore.impl.EClassImpl@8558b7 (name: AElement)
> (instanceClassName: null) (abstract: false, interface: false)'
> java.lang.ClassCastException: The value of type 'class
> org.eclipse.emf.ecore.impl.DynamicEObjectImpl' must be of type
> 'org.eclipse.emf.ecore.impl.EClassImpl@8558b7 (name: AElement)
> (instanceClassName: null) (abstract: false, interface: false)'
> at
> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleEObject.dynamicGet(EStructuralFeatureImpl .java:2301)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1017)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1002)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:994)
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:989)
> at
> org.eclipse.m2m.atl.drivers.emf4atl.ASMEMFModelElement.get(A SMEMFModelElement.java:147)
>
> at
> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:301)
> at
> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
> at
> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>
> at
> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>
> at
> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
> at
> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:338)
> at
> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
> at
> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>
> at
> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>
> at
> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
> at
> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
> at
> org.eclipse.m2m.atl.engine.vm.ASMInterpreter.<init>(ASMInterpreter.java:299)
>
> at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:169)
> at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:111)
> at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:87)
> at
> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:326)
>
> at
> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:426)
>
> at
> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.launch(AtlReg ularVM.java:398)
>
> at
> org.eclipse.m2m.atl.adt.launching.AtlLaunchConfigurationDele gate.launch(AtlLaunchConfigurationDelegate.java:42)
>
> at
> org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:759)
>
> at
> org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:608)
>
> at
> org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(D ebugUIPlugin.java:899)
>
> at
> org.eclipse.debug.internal.ui.DebugUIPlugin$7.run(DebugUIPlu gin.java:1102)
> at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
> SCHWERWIEGEND: A.main() : ??#24 null
> SCHWERWIEGEND: local variables = {self=copyBModelWithoutRefs :
> ASMModule}
> SCHWERWIEGEND: local stack = []
> SCHWERWIEGEND: A.__exec__() : ??#18 null
> SCHWERWIEGEND: local variables = {e=TransientLink {rule =
> 'BElement', sourceElements = {s = bin!BElement1}, targetElements = {t =
> bout!BElement1}, variables = {}}, self=copyBModelWithoutRefs : ASMModule}
> SCHWERWIEGEND: local stack = []
> SCHWERWIEGEND: A.__applyBElement(1 : NTransientLink;) : ??#20 18:28-18:51
> SCHWERWIEGEND: local variables = {t=bout!BElement1, s=bin!BElement1,
> link=TransientLink {rule = 'BElement', sourceElements = {s =
> bin!BElement1}, targetElements = {t = bout!BElement1}, variables = {}},
> self=copyBModelWithoutRefs : ASMModule}
> SCHWERWIEGEND: local stack = [bout!BElement1, bout!BElement1,
> copyBModelWithoutRefs : ASMModule]
> SCHWERWIEGEND: ****** END Stack Trace
> INFO: Execution terminated due to error (see launch configuration to
> allow continuation after errors).
> SCHWERWIEGEND: null
> java.lang.RuntimeException
> at
> org.eclipse.m2m.atl.engine.vm.SimpleDebugger.error(SimpleDeb ugger.java:195)
> at
> org.eclipse.m2m.atl.engine.vm.StackFrame.printStackTrace(Sta ckFrame.java:95)
>
> at
> org.eclipse.m2m.atl.engine.vm.StackFrame.printStackTrace(Sta ckFrame.java:87)
>
> at
> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:173)
> at
> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>
> at
> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>
> at
> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
> at
> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:338)
> at
> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
> at
> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>
> at
> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>
> at
> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
> at
> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
> at
> org.eclipse.m2m.atl.engine.vm.ASMInterpreter.<init>(ASMInterpreter.java:299)
>
> at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:169)
> at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:111)
> at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:87)
> at
> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:326)
>
> at
> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:426)
>
> at
> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.launch(AtlReg ularVM.java:398)
>
> at
> org.eclipse.m2m.atl.adt.launching.AtlLaunchConfigurationDele gate.launch(AtlLaunchConfigurationDelegate.java:42)
>
> at
> org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:759)
>
> at
> org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:608)
>
> at
> org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(D ebugUIPlugin.java:899)
>
> at
> org.eclipse.debug.internal.ui.DebugUIPlugin$7.run(DebugUIPlu gin.java:1102)
> at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
> Caused by: java.lang.ClassCastException: The value of type 'class
> org.eclipse.emf.ecore.impl.DynamicEObjectImpl' must be of type
> 'org.eclipse.emf.ecore.impl.EClassImpl@8558b7 (name: AElement)
> (instanceClassName: null) (abstract: false, interface: false)'
> at
> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleEObject.dynamicGet(EStructuralFeatureImpl .java:2301)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1017)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1002)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:994)
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:989)
> at
> org.eclipse.m2m.atl.drivers.emf4atl.ASMEMFModelElement.get(A SMEMFModelElement.java:147)
>
> at
> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:301)
> at
> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
> ... 22 more
>
>
>
Previous Topic:error lauch atl transformation programmatic - could not find model UML
Next Topic:Problem with ATL transformation
Goto Forum:
  


Current Time: Tue Apr 16 21:44:54 GMT 2024

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

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

Back to the top