Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » [EMF Compare] NullPointerException in EMF Compare Merge Service(NPE when merging models that use opposite EReferences in their ECore)
[EMF Compare] NullPointerException in EMF Compare Merge Service [message #518467] Thu, 04 March 2010 08:41 Go to next message
Sabri Skhiri is currently offline Sabri SkhiriFriend
Messages: 43
Registered: February 2010
Member
Hi,

We found the following problem when using EMF Compare Merge service (from left to right, i.e. undoInTarget):

We have got a NPE when merging models that use opposite EReferences in their ECore, when one end of the opposite is a new EObject (does not exist in right) and the other end already exists in right.

Scenario:

The problem occurs when:

1) For example, we have got an ecore, but I did not find a way to attach
2) Create a model My.testemfc, with two classes a:C1 and b:C2.
3) Copy the model to aMy.testemfc and edit it to:
a. Add a new class c:C1
b. Add "a" to c.referenced. Its opposite is set as well: a.referencing contains "c".
4) Save and compare the two files with each other.
5) Copy all from left to right. An NPE occurs.

Stack trace:
eclipse.buildId=I20090611-1540
java.version=1.6.0_17
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US
Framework arguments: -product org.eclipse.platform.ide

Error

Thu Mar 04 08:29:34 CET 2010

Unhandled event loop exception

java.lang.NullPointerException

            at org.eclipse.emf.compare.diff.merge.EMFCompareEObjectCopier.copyReferences(EMFCompareEObjectCopier.java:89)

            at org.eclipse.emf.compare.diff.merge.DefaultMerger.copy(DefaultMerger.java:134)

            at org.eclipse.emf.compare.diff.internal.merge.impl.ModelElementChangeLeftTargetMerger.undoInTarget(ModelElementChangeLeftTargetMerger.java:66)

            at org.eclipse.emf.compare.diff.merge.service.MergeService.doMerge(MergeService.java:166)

            at org.eclipse.emf.compare.diff.merge.service.MergeService.merge(MergeService.java:130)

            at org.eclipse.emf.compare.diff.internal.merge.impl.DiffGroupMerger.undoInTarget(DiffGroupMerger.java:48)

            at org.eclipse.emf.compare.diff.merge.service.MergeService.doMerge(MergeService.java:166)

            at org.eclipse.emf.compare.diff.merge.service.MergeService.merge(MergeService.java:130)

            at org.eclipse.emf.compare.diff.internal.merge.impl.DiffGroupMerger.undoInTarget(DiffGroupMerger.java:48)

            at org.eclipse.emf.compare.diff.merge.service.MergeService.doMerge(MergeService.java:166)

            at org.eclipse.emf.compare.diff.merge.service.MergeService.merge(MergeService.java:130)

            at org.eclipse.emf.compare.ui.ModelCompareInput.doCopy(ModelCompareInput.java:485)

            at org.eclipse.emf.compare.ui.ModelCompareInput.copy(ModelCompareInput.java:164)

            at org.eclipse.emf.compare.ui.viewer.content.ModelContentMergeViewer.copy(ModelContentMergeViewer.java:380)

            at org.eclipse.compare.contentmergeviewer.ContentMergeViewer$8.run(ContentMergeViewer.java:881)

            at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)

            at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)

            at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)

            at org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:452)

            at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)

            at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)

            at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3880)

            at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3473)

            at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405)

            at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)

            at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)

            at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)

            at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)

            at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)

            at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)

            at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)

            at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)

            at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)

            at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)

            at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)

            at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)

            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

            at java.lang.reflect.Method.invoke(Unknown Source)

            at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)

            at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)

            at org.eclipse.equinox.launcher.Main.run(Main.java:1311)

            at org.eclipse.equinox.launcher.Main.main(Main.java:1287)


Is this a known bug ?
Sabri.

[Updated on: Thu, 04 March 2010 08:49]

Report message to a moderator

Re: [EMF Compare] NullPointerException in EMF Compare Merge Service [message #518561 is a reply to message #518467] Thu, 04 March 2010 13:42 Go to previous message
Laurent Goubet is currently offline Laurent GoubetFriend
Messages: 1902
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------070501090304010300030401
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Sabri,

We have quite a number of issues raised against the merge
functionalities of EMF Compare ; looking at this stack trace and related
code, this is obviously a bug too. This might have already been raised
on bugzilla, but please raise a new bug with this stack trace so that we
don't lose track of it ; I'll take care of the duplicate marking later
if it's already been raised.

Please note that we're currently focusing on integrating patch
contributions before M6 and that we won't be able to look into this
beofre the Helios release if you cannot provide us with a patch.

Laurent Goubet
Obeo

Sabri Skhiri wrote:
> Hi,
>
> We found the following problem when using EMF Compare Merge service
> (from left to right, i.e. undoInTarget):
>
> We have got a NPE when merging models that use opposite EReferences in
> their ECore, when one end of the opposite is a new EObject (does not
> exist in right) and the other end already exists in right.
>
> Scenario:
>
> The problem occurs when.
>
> 1) For example, look at the ecore in attachment.
>
> 2) Create a model My.testemfc, with two classes a:C1 and b:C2.
>
> 3) Copy the model to aMy.testemfc and edit it to:
>
> a. Add a new class c:C1
>
> b. Add "a" to c.referenced. Its opposite is set as well:
> a.referencing contains "c".
>
> 4) Save and compare the two files with each other.
>
> 5) Copy all from left to right. An NPE occurs.
>
> Stack trace:
> eclipse.buildId=I20090611-1540
> java.version=1.6.0_17
> java.vendor=Sun Microsystems Inc.
> BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US
> Framework arguments: -product org.eclipse.platform.ide
>
> Error
>
> Thu Mar 04 08:29:34 CET 2010
>
> Unhandled event loop exception
>
> java.lang.NullPointerException
>
> at
> org.eclipse.emf.compare.diff.merge.EMFCompareEObjectCopier.c opyReferences(EMFCompareEObjectCopier.java:89)
>
>
> at
> org.eclipse.emf.compare.diff.merge.DefaultMerger.copy(Defaul tMerger.java:134)
>
>
> at
> org.eclipse.emf.compare.diff.internal.merge.impl.ModelElemen tChangeLeftTargetMerger.undoInTarget(ModelElementChangeLeftT argetMerger.java:66)
>
>
> at
> org.eclipse.emf.compare.diff.merge.service.MergeService.doMe rge(MergeService.java:166)
>
>
> at
> org.eclipse.emf.compare.diff.merge.service.MergeService.merg e(MergeService.java:130)
>
>
> at
> org.eclipse.emf.compare.diff.internal.merge.impl.DiffGroupMe rger.undoInTarget(DiffGroupMerger.java:48)
>
>
> at
> org.eclipse.emf.compare.diff.merge.service.MergeService.doMe rge(MergeService.java:166)
>
>
> at
> org.eclipse.emf.compare.diff.merge.service.MergeService.merg e(MergeService.java:130)
>
>
> at
> org.eclipse.emf.compare.diff.internal.merge.impl.DiffGroupMe rger.undoInTarget(DiffGroupMerger.java:48)
>
>
> at
> org.eclipse.emf.compare.diff.merge.service.MergeService.doMe rge(MergeService.java:166)
>
>
> at
> org.eclipse.emf.compare.diff.merge.service.MergeService.merg e(MergeService.java:130)
>
>
> at
> org.eclipse.emf.compare.ui.ModelCompareInput.doCopy(ModelCom pareInput.java:485)
>
>
> at
> org.eclipse.emf.compare.ui.ModelCompareInput.copy(ModelCompa reInput.java:164)
>
>
> at
> org.eclipse.emf.compare.ui.viewer.content.ModelContentMergeV iewer.copy(ModelContentMergeViewer.java:380)
>
>
> at
> org.eclipse.compare.contentmergeviewer.ContentMergeViewer$8. run(ContentMergeViewer.java:881)
>
>
> at org.eclipse.jface.action.Action.runWithEvent(Action.java:498 )
>
> at
> org.eclipse.jface.action.ActionContributionItem.handleWidget Selection(ActionContributionItem.java:584)
>
>
> at
> org.eclipse.jface.action.ActionContributionItem.access$2(Act ionContributionItem.java:501)
>
>
> at
> org.eclipse.jface.action.ActionContributionItem$6.handleEven t(ActionContributionItem.java:452)
>
>
> at
> org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java :84)
>
> at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
>
> at
> org.eclipse.swt.widgets.Display.runDeferredEvents(Display.ja va:3880)
>
> at
> org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3473)
>
> at
> org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2405)
>
> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
>
> at
> org.eclipse.ui.internal.Workbench.access$4(Workbench.java:22 21)
>
> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
>
> at
> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:332)
>
>
> at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:493)
>
> at
> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>
> at
> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
>
>
> at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:194)
>
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
>
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
>
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:368)
>
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
>
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
> Source)
>
> at java.lang.reflect.Method.invoke(Unknown Source)
>
> at
> org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 559)
>
> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
>
> at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
>
> at org.eclipse.equinox.launcher.Main.main(Main.java:1287)
>
> Is this a known bug ?
> Sabri.


--------------070501090304010300030401
Content-Type: text/x-vcard; charset=utf-8;
name="laurent_goubet.vcf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="laurent_goubet.vcf"

YmVnaW46dmNhcmQNCmZuOkxhdXJlbnQgR291YmV0DQpuOkdvdWJldDtMYXVy ZW50DQpvcmc6
PGEgaHJlZj0iaHR0cDovL3d3dy5vYmVvLmZyIj5PYmVvPC9hPg0KZW1haWw7 aW50ZXJuZXQ6
bGF1cmVudC5nb3ViZXRAb2Jlby5mcg0KdXJsOmh0dHA6Ly93d3cub2Jlby5m cg0KdmVyc2lv
bjoyLjENCmVuZDp2Y2FyZA0KDQo=
--------------070501090304010300030401--
Previous Topic:Problems with dynamic AND generated EMF
Next Topic:OPTION_DEFER_IDREF_RESOLUTION causes IOWrappedException
Goto Forum:
  


Current Time: Fri Apr 26 10:22:27 GMT 2024

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

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

Back to the top