Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 313758 - EMF Compare throws out of bounds exception when comparing ecore files
Summary: EMF Compare throws out of bounds exception when comparing ecore files
Status: CLOSED FIXED
Alias: None
Product: EMFCompare
Classification: Modeling
Component: Core (show other bugs)
Version: unspecified   Edit
Hardware: PC Linux
: P3 major (vote)
Target Milestone: ---   Edit
Assignee: EMF Compare CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-05-20 12:11 EDT by Stephen McCants CLA
Modified: 2011-06-15 11:16 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stephen McCants CLA 2010-05-20 12:11:40 EDT
Build Identifier: 20100218-1602

I have two ecore files with differences (and no, I can't provide the ecores, as they are intellectual property).  Asking EMF Compare to compare them results in three identical out of bounds exceptions:

org.eclipse.emf.common.util.BasicEList$BasicIndexOutOfBoundsException: index=0, size=0
	at org.eclipse.emf.common.util.BasicEList.get(BasicEList.java:352)
	at org.eclipse.emf.compare.diff.provider.DiffModelItemProvider.getText(DiffModelItemProvider.java:166)
	at org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider.getText(AdapterFactoryLabelProvider.java:380)
	at org.eclipse.emf.compare.ui.viewer.structure.ModelStructureMergeViewer$ModelStructureLabelProvider.getText(ModelStructureMergeViewer.java:368)
	at org.eclipse.jface.viewers.WrappedViewerLabelProvider.getText(WrappedViewerLabelProvider.java:108)
	at org.eclipse.jface.viewers.WrappedViewerLabelProvider.update(WrappedViewerLabelProvider.java:164)
	at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:145)
	at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:932)
	at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:102)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.runtime.Platform.run(Platform.java:888)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:994)
	at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:481)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.runtime.Platform.run(Platform.java:888)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2111)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:827)
	at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:782)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:776)
	at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:639)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalInitializeTree(AbstractTreeViewer.java:1490)
	at org.eclipse.jface.viewers.TreeViewer.internalInitializeTree(TreeViewer.java:828)
	at org.eclipse.jface.viewers.AbstractTreeViewer$5.run(AbstractTreeViewer.java:1474)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1392)
	at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:402)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1353)
	at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1467)
	at org.eclipse.emf.compare.ui.viewer.structure.ModelStructureMergeViewer.inputChanged(ModelStructureMergeViewer.java:163)
	at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:274)
	at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1634)
	at org.eclipse.emf.compare.ui.viewer.structure.ModelStructureMergeViewer$ConfigurationPropertyListener.propertyChange(ModelStructureMergeViewer.java:298)
	at org.eclipse.compare.CompareConfiguration.fireChange(CompareConfiguration.java:367)
	at org.eclipse.compare.CompareConfiguration.setProperty(CompareConfiguration.java:398)
	at org.eclipse.emf.compare.ui.viewer.content.ModelContentMergeViewer.setInput(ModelContentMergeViewer.java:305)
	at org.eclipse.compare.CompareViewerSwitchingPane.setInput(CompareViewerSwitchingPane.java:270)
	at org.eclipse.compare.internal.CompareContentViewerSwitchingPane.setInput(CompareContentViewerSwitchingPane.java:132)
	at org.eclipse.compare.CompareEditorInput.internalSetContentPaneInput(CompareEditorInput.java:817)
	at org.eclipse.compare.CompareEditorInput.access$8(CompareEditorInput.java:815)
	at org.eclipse.compare.CompareEditorInput$11.run(CompareEditorInput.java:755)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.compare.CompareEditorInput.feed1(CompareEditorInput.java:749)
	at org.eclipse.compare.CompareEditorInput.feedInput(CompareEditorInput.java:727)
	at org.eclipse.compare.CompareEditorInput.createContents(CompareEditorInput.java:543)
	at com.ibm.team.filesystem.rcp.ui.internal.compare.LocalFileCompareEditorInput.createContents(LocalFileCompareEditorInput.java:255)
	at org.eclipse.compare.internal.CompareEditor.createCompareControl(CompareEditor.java:449)
	at org.eclipse.compare.internal.CompareEditor.access$6(CompareEditor.java:416)
	at org.eclipse.compare.internal.CompareEditor$3.run(CompareEditor.java:372)
	at org.eclipse.ui.internal.UILockListener.doPendingWork(UILockListener.java:155)
	at org.eclipse.ui.internal.UISynchronizer$3.run(UISynchronizer.java:158)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3468)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3115)
	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(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:599)
	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)

Reproducible: Always

Steps to Reproduce:
1. I'm unsure how to provide a test case since the models cannot be shared.
Comment 1 Stephen McCants CLA 2010-05-20 12:14:59 EDT
Doing a manual diff on the files, here is what I found:

[smccants@smccants smccants]$ diff /tmp/old.ecore /tmp/new.ecore
51d50
<

So the difference seems to be a blank line.
Comment 2 Cedric Brun CLA 2010-05-25 05:45:36 EDT
so you don't have any "logical" difference but only a serialization one ? am I right ?
Comment 3 Stephen McCants CLA 2010-05-25 10:59:51 EDT
You are correct.
Comment 4 Laurent Goubet CLA 2011-06-15 11:16:26 EDT
This has been fixed since EMF Compare 1.1