Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 321023

Summary: User can't modify the name of an artifact using Properties view
Product: [Technology] Tigerstripe Reporter: Navid Mehregani <nmehrega>
Component: UIAssignee: Navid Mehregani <nmehrega>
Status: RESOLVED FIXED QA Contact:
Severity: major    
Priority: P3 CC: chrhartl, erdillon
Version: unspecified   
Target Milestone: 0.5M0   
Hardware: PC   
OS: Mac OS X - Carbon (unsup.)   
Whiteboard:
Attachments:
Description Flags
Patch
none
Patch#2 none

Description Navid Mehregani CLA 2010-07-27 10:27:20 EDT
Build Identifier: 

Right click on an Entity artifact in a class diagram and select Show Properties View > Select Advanced > Under name field, modify the name and press enter.  Notice that the name is not modified.  The following ConcurrentModificationException is thrown:

Daemon Thread [Thread-0] (Suspended (exception java.util.ConcurrentModificationException))	
	java.util.AbstractList$Itr.checkForComodification() line: 372 [local variables unavailable]	
	java.util.AbstractList$Itr.next() line: 343	
	org.eclipse.tigerstripe.workbench.internal.api.impl.updater.request.ArtifactRenameRequest.updateReferences(org.eclipse.tigerstripe.workbench.model.deprecated_.IArtifactManagerSession, org.eclipse.tigerstripe.workbench.model.deprecated_.IAbstractArtifact, java.lang.String) line: 210	
	org.eclipse.tigerstripe.workbench.internal.api.impl.updater.request.ArtifactRenameRequest.execute(org.eclipse.tigerstripe.workbench.model.deprecated_.IArtifactManagerSession) line: 128	
	org.eclipse.tigerstripe.workbench.internal.api.impl.updater.ModelUpdaterImpl.handleChangeRequest(org.eclipse.tigerstripe.workbench.internal.api.model.artifacts.updater.IModelChangeRequest) line: 45	
	org.eclipse.tigerstripe.workbench.ui.visualeditor.adaptation.clazz.sync.etadapter.ManagedEntityETAdapter(org.eclipse.tigerstripe.workbench.emf.adaptation.etadapter.BaseETAdapter).postChangeRequest(org.eclipse.tigerstripe.workbench.internal.api.model.artifacts.updater.IModelChangeRequest) line: 81	
	org.eclipse.tigerstripe.workbench.ui.visualeditor.adaptation.clazz.sync.etadapter.ManagedEntityETAdapter(org.eclipse.tigerstripe.workbench.ui.visualeditor.adaptation.clazz.sync.etadapter.QualifiedNamedElementETAdapter).handleSetName(java.lang.String, java.lang.String, org.eclipse.tigerstripe.workbench.ui.visualeditor.QualifiedNamedElement) line: 222	
	org.eclipse.tigerstripe.workbench.ui.visualeditor.adaptation.clazz.sync.etadapter.ManagedEntityETAdapter(org.eclipse.tigerstripe.workbench.ui.visualeditor.adaptation.clazz.sync.etadapter.QualifiedNamedElementETAdapter).handleSetNotification(org.eclipse.emf.common.notify.Notification) line: 104	
	org.eclipse.tigerstripe.workbench.ui.visualeditor.adaptation.clazz.sync.etadapter.ManagedEntityETAdapter(org.eclipse.tigerstripe.workbench.ui.visualeditor.adaptation.clazz.sync.etadapter.QualifiedNamedElementETAdapter).notifyChanged(org.eclipse.emf.common.notify.Notification) line: 65	
	org.eclipse.tigerstripe.workbench.ui.visualeditor.impl.ManagedEntityArtifactImpl(org.eclipse.emf.common.notify.impl.BasicNotifierImpl).eNotify(org.eclipse.emf.common.notify.Notification) line: 280	
	org.eclipse.tigerstripe.workbench.ui.visualeditor.impl.ManagedEntityArtifactImpl(org.eclipse.tigerstripe.workbench.ui.visualeditor.impl.NamedElementImpl).setName(java.lang.String) line: 304	
	org.eclipse.tigerstripe.workbench.ui.visualeditor.impl.ManagedEntityArtifactImpl(org.eclipse.tigerstripe.workbench.ui.visualeditor.impl.QualifiedNamedElementImpl).eSet(int, java.lang.Object) line: 241	
	org.eclipse.tigerstripe.workbench.ui.visualeditor.impl.ManagedEntityArtifactImpl(org.eclipse.tigerstripe.workbench.ui.visualeditor.impl.AbstractArtifactImpl).eSet(int, java.lang.Object) line: 321	
	org.eclipse.tigerstripe.workbench.ui.visualeditor.impl.ManagedEntityArtifactImpl(org.eclipse.emf.ecore.impl.BasicEObjectImpl).eSet(org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object) line: 1073	
	org.eclipse.emf.edit.command.SetCommand.doExecute() line: 721	
	org.eclipse.emf.edit.command.SetCommand(org.eclipse.emf.edit.command.AbstractOverrideableCommand).execute() line: 131	
	org.eclipse.emf.workspace.EMFCommandOperation.doExecute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) line: 119	
	org.eclipse.emf.workspace.EMFCommandOperation(org.eclipse.emf.workspace.AbstractEMFOperation).execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) line: 150	
	org.eclipse.core.commands.operations.DefaultOperationHistory.execute(org.eclipse.core.commands.operations.IUndoableOperation, org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) line: 511	
	org.eclipse.emf.workspace.impl.WorkspaceCommandStackImpl.doExecute(org.eclipse.emf.common.command.Command, java.util.Map<?,?>) line: 208	
	org.eclipse.emf.workspace.impl.WorkspaceCommandStackImpl(org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack).execute(org.eclipse.emf.common.command.Command, java.util.Map<?,?>) line: 165	
	org.eclipse.emf.workspace.impl.WorkspaceCommandStackImpl(org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack).execute(org.eclipse.emf.common.command.Command) line: 219	
	org.eclipse.emf.edit.provider.ItemPropertyDescriptor.setPropertyValue(java.lang.Object, java.lang.Object) line: 1441	
	org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositeSourcePropertyDescriptor.setPropertyValue(java.lang.Object) line: 464	
	org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource.setPropertyValue(java.lang.Object, java.lang.Object) line: 233	
	org.eclipse.gmf.runtime.diagram.ui.properties.descriptors.NotationPropertySource(org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource).setPropertyValue(java.lang.Object, java.lang.Object) line: 235	
	org.eclipse.gmf.runtime.emf.ui.properties.commands.SetModelPropertyValueCommand.doExecuteWithResult(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) line: 104	
	org.eclipse.gmf.runtime.emf.ui.properties.commands.SetModelPropertyValueCommand(org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand).doExecute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) line: 247	
	org.eclipse.gmf.runtime.emf.ui.properties.commands.SetModelPropertyValueCommand(org.eclipse.emf.workspace.AbstractEMFOperation).execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) line: 150	
	org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand(org.eclipse.emf.workspace.CompositeEMFOperation).doExecute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) line: 217	
	org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand(org.eclipse.emf.workspace.AbstractEMFOperation).execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) line: 150	
	org.eclipse.core.commands.operations.TriggeredOperations.execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) line: 165	
	org.eclipse.core.commands.operations.DefaultOperationHistory.execute(org.eclipse.core.commands.operations.IUndoableOperation, org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) line: 511	
	org.eclipse.gmf.runtime.emf.ui.properties.sections.UndoableModelPropertySheetEntry.valueChanged(org.eclipse.gmf.runtime.emf.ui.properties.sections.UndoableModelPropertySheetEntry, org.eclipse.gmf.runtime.common.core.command.ICommand) line: 244	
	org.eclipse.gmf.runtime.emf.ui.properties.sections.UndoableModelPropertySheetEntry.setValue(java.lang.Object) line: 199	
	org.eclipse.gmf.runtime.emf.ui.properties.sections.UndoableModelPropertySheetEntry.applyEditorValue() line: 127	
	org.eclipse.jface.viewers.CellEditor$1.run() line: 333	
	org.eclipse.core.runtime.SafeRunner.run(org.eclipse.core.runtime.ISafeRunnable) line: 42	
	org.eclipse.core.runtime.Platform.run(org.eclipse.core.runtime.ISafeRunnable) line: 888	
	org.eclipse.ui.internal.JFaceUtil$1.run(org.eclipse.core.runtime.ISafeRunnable) line: 48	
	org.eclipse.jface.util.SafeRunnable.run(org.eclipse.core.runtime.ISafeRunnable) line: 175	
	org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositeSourcePropertyDescriptor$3(org.eclipse.jface.viewers.CellEditor).fireApplyEditorValue() line: 331	
	org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositeSourcePropertyDescriptor$3(org.eclipse.jface.viewers.TextCellEditor).handleDefaultSelection(org.eclipse.swt.events.SelectionEvent) line: 295	
	org.eclipse.jface.viewers.TextCellEditor$1.widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent) line: 148	
	org.eclipse.swt.widgets.TypedListener.handleEvent(org.eclipse.swt.widgets.Event) line: 113	
	org.eclipse.swt.widgets.EventTable.sendEvent(org.eclipse.swt.widgets.Event) line: 84	
	org.eclipse.swt.widgets.Display.sendEvent(org.eclipse.swt.widgets.EventTable, org.eclipse.swt.widgets.Event) line: 3543	
	org.eclipse.swt.widgets.Text(org.eclipse.swt.widgets.Widget).sendEvent(org.eclipse.swt.widgets.Event) line: 1250	
	org.eclipse.swt.widgets.Text(org.eclipse.swt.widgets.Widget).sendEvent(int, org.eclipse.swt.widgets.Event, boolean) line: 1273	
	org.eclipse.swt.widgets.Text(org.eclipse.swt.widgets.Widget).sendEvent(int, org.eclipse.swt.widgets.Event) line: 1258	
	org.eclipse.swt.widgets.Text(org.eclipse.swt.widgets.Widget).notifyListeners(int, org.eclipse.swt.widgets.Event) line: 1079	
	org.eclipse.swt.widgets.Display.runDeferredEvents() line: 3441	
	org.eclipse.swt.widgets.Display.readAndDispatch() line: 3100	
	org.eclipse.ui.internal.Workbench.runEventLoop(org.eclipse.jface.window.Window$IExceptionHandler, org.eclipse.swt.widgets.Display) line: 2405	
	org.eclipse.ui.internal.Workbench.runUI() line: 2369	
	org.eclipse.ui.internal.Workbench.access$4(org.eclipse.ui.internal.Workbench) line: 2221	
	org.eclipse.ui.internal.Workbench$5.run() line: 500	
	org.eclipse.core.databinding.observable.Realm.runWithDefault(org.eclipse.core.databinding.observable.Realm, java.lang.Runnable) line: 332	
	org.eclipse.ui.internal.Workbench.createAndRunWorkbench(org.eclipse.swt.widgets.Display, org.eclipse.ui.application.WorkbenchAdvisor) line: 493	
	org.eclipse.ui.PlatformUI.createAndRunWorkbench(org.eclipse.swt.widgets.Display, org.eclipse.ui.application.WorkbenchAdvisor) line: 149	
	org.eclipse.ui.internal.ide.application.IDEApplication.start(org.eclipse.equinox.app.IApplicationContext) line: 113	
	org.eclipse.equinox.internal.app.EclipseAppHandle.run(java.lang.Object) line: 194	
	org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(java.lang.Object) line: 110	
	org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(java.lang.Object) line: 79	
	org.eclipse.core.runtime.adaptor.EclipseStarter.run(java.lang.Object) line: 368	
	org.eclipse.core.runtime.adaptor.EclipseStarter.run(java.lang.String[], java.lang.Runnable) line: 179	
	sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]	
	sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 39	
	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25	
	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 597	
	org.eclipse.equinox.launcher.Main.invokeFramework(java.lang.String[], java.net.URL[]) line: 559	
	org.eclipse.equinox.launcher.Main.basicRun(java.lang.String[]) line: 514	
	org.eclipse.equinox.launcher.Main.run(java.lang.String[]) line: 1311	
	org.eclipse.equinox.launcher.Main.main(java.lang.String[]) line: 1287	


Reproducible: Always
Comment 1 Chris Hartley CLA 2010-07-27 21:10:16 EDT
All renames need to go through the Refactoring framework
Comment 2 Navid Mehregani CLA 2010-07-28 09:54:13 EDT
(In reply to comment #1)
> All renames need to go through the Refactoring framework

In that case, we need to disable this functionality from Properties view.  It's obviously incorrect to throw an exception when user does this and I assume most "Eclipse users" will, since EMF and other Eclipse projects support modification of model objects thorough Properties view.
Comment 3 Eric Dillon CLA 2010-08-09 21:59:48 EDT
This may be a duplicate of the other bug on "renaming associations". 
To be verified.
Comment 4 Eric Dillon CLA 2010-08-09 22:00:10 EDT
THIS MUST USE THE REFACTOR FRAMEWORK! :-)
Comment 5 Navid Mehregani CLA 2010-08-19 10:17:29 EDT
Created attachment 176997 [details]
Patch

This patch disables editing of properties for Entities in Property view.  The view can still be used to view properties, but the user has to go through the expected route (e.g. refactor framework) to modify properties of the model.

Modified files:
AbstractArtifactItemProvider
QualifiedNamedElementItemProvider
NamedElementItemProvider
Comment 6 Navid Mehregani CLA 2010-08-19 10:53:37 EDT
Created attachment 177003 [details]
Patch#2

This patch also makes the changes for instance diagrams.

Modified files:
InstanceItemProvider
NamedElementItemProvider
AbstractArtifactItemProvider
NamedElementItemProvider
QualifiedNamedElementItemProvider
Comment 7 Navid Mehregani CLA 2010-08-24 12:25:12 EDT
Submitted patch.