Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 360203 - [EMF Compare UML] Update Reference difference for Stereotype attribute give an java.lang.IllegalArgumentException
Summary: [EMF Compare UML] Update Reference difference for Stereotype attribute give a...
Status: CLOSED FIXED
Alias: None
Product: EMFCompare
Classification: Modeling
Component: Core (show other bugs)
Version: unspecified   Edit
Hardware: All All
: P3 major (vote)
Target Milestone: ---   Edit
Assignee: EMF Compare CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-10-07 04:30 EDT by Arthur Daussy CLA
Modified: 2013-04-24 07:27 EDT (History)
1 user (show)

See Also:


Attachments
Model to reproduce the bug (10.50 KB, application/zip)
2011-10-07 04:30 EDT, Arthur Daussy CLA
no flags Details
Possible correction (1.26 KB, patch)
2011-10-07 04:39 EDT, Arthur Daussy CLA
no flags Details | Diff
Nicer possible correction (3.16 KB, patch)
2011-10-07 05:22 EDT, Arthur Daussy CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Arthur Daussy CLA 2011-10-07 04:30:46 EDT
Created attachment 204732 [details]
Model to reproduce the bug

Hi,
 I'm currently using MDT Papyrus as modeller. And I get an error when handling stereotyped uml element. If the difference to see is an "UpdateReference" of a property of the stereotype. I get the following error:

java.lang.IllegalArgumentException: The feature 'Property0' is not a valid feature
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eOpenGet(BasicEObjectImpl.java:1072)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1025)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1013)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1008)
	at org.eclipse.emf.compare.diff.provider.UpdateReferenceItemProvider.getLeftValue(UpdateReferenceItemProvider.java:177)
	at org.eclipse.emf.compare.diff.provider.UpdateReferenceItemProvider.getImage(UpdateReferenceItemProvider.java:68)
	at org.eclipse.emf.compare.uml2diff.provider.UMLStereotypeUpdateReferenceItemProvider.getImage(UMLStereotypeUpdateReferenceItemProvider.java:158)
	at org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider.getImage(AdapterFactoryLabelProvider.java:336)
	at org.eclipse.emf.compare.ui.viewer.structure.ModelStructureMergeViewer$ModelStructureLabelProvider.getImage(ModelStructureMergeViewer.java:441)
	at org.eclipse.jface.viewers.WrappedViewerLabelProvider.getImage(WrappedViewerLabelProvider.java:117)
	at org.eclipse.jface.viewers.WrappedViewerLabelProvider.update(WrappedViewerLabelProvider.java:165)
	at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:152)
	at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:938)
	at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:106)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:1018)
	at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:485)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2167)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:833)
	at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:808)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:782)
	at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:644)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:753)
	at org.eclipse.jface.viewers.AbstractTreeViewer.handleTreeExpand(AbstractTreeViewer.java:1485)
	at org.eclipse.jface.viewers.TreeViewer.handleTreeExpand(TreeViewer.java:952)
	at org.eclipse.jface.viewers.AbstractTreeViewer$4.treeExpanded(AbstractTreeViewer.java:1496)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:132)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)
	at org.eclipse.swt.widgets.Tree.wmNotifyChild(Tree.java:7538)
	at org.eclipse.swt.widgets.Control.wmNotify(Control.java:5534)
	at org.eclipse.swt.widgets.Composite.wmNotify(Composite.java:1896)
	at org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:5086)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4584)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4972)
	at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2424)
	at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1533)
	at org.eclipse.swt.widgets.Tree.WM_LBUTTONDOWN(Tree.java:6411)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4564)
	at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5937)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4985)
	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2530)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3752)

I will put my models as attachment.
Comment 1 Arthur Daussy CLA 2011-10-07 04:39:49 EDT
Created attachment 204733 [details]
Possible correction

I think this patch might correct this bug but I may also missed to impact problem
Comment 2 Arthur Daussy CLA 2011-10-07 04:41:33 EDT
An other solution would may be to change the 
org.eclipse.emf.compare.uml2diff.provider.UMLStereotypeUpdateReferenceItemProvider.getImage(Object) implementation.
Comment 3 Arthur Daussy CLA 2011-10-07 05:22:11 EDT
Created attachment 204737 [details]
Nicer possible correction

This might be a nicer correction
Comment 4 Cedric Brun CLA 2011-10-11 05:54:32 EDT
I reproduced the bug with the models you gave us. I'll look into your patch.
Comment 5 Cedric Brun CLA 2011-10-11 07:25:22 EDT
As the UMLDiff Extension extends the generic diff, I would expect this specific code to handle the stereotype references to be in the specialized umldiff.edit and not the generic one.

I did the change in commit eefaf5e570f20c2b5ec1b6304b0d84c195b7023d. You'll get the fix in the next 1.3 build.

We need a testcase to make sure other issues like this on getText/getImage won't happen on some comparison cases, it sounds pretty easy to setup, just diffing models and calling the adapter factory on each diff, then building an UML model adding elements and changes so that we get a proper code coverage.

I'll track another bug for that.
Comment 6 Laurent Goubet CLA 2013-01-17 08:32:25 EST
batch-closing a bunch of "RESOLVED" bugs.