Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » GMF (Graphical Modeling Framework) » Diagram does not open after regenerating GMF code
Diagram does not open after regenerating GMF code [message #753897] Sun, 30 October 2011 11:40 Go to next message
miranda  is currently offline miranda Friend
Messages: 2
Registered: January 2011
Junior Member
Hi,

I am working on a GMF project. I am not sure which version of GMF was used to generate the code before. Now, I needed to change something and had to regenerate the diagram code. Now I get an exception whenever I want to open a diagram:

java.lang.IllegalStateException: Cannot modify resource set without a write transaction
at org.eclipse.emf.transaction.impl.TransactionChangeRecorder.assertWriting(TransactionChangeRecorder.java:348)
at org.eclipse.emf.transaction.impl.TransactionChangeRecorder.appendNotification(TransactionChangeRecorder.java:302)
at org.eclipse.emf.transaction.impl.TransactionChangeRecorder.processObjectNotification(TransactionChangeRecorder.java:284)
at org.eclipse.emf.transaction.impl.TransactionChangeRecorder.notifyChanged(TransactionChangeRecorder.java:240)
at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:380)
at org.eclipse.emf.common.notify.impl.NotificationImpl.dispatch(NotificationImpl.java:1033)
at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eContainer(BasicEObjectImpl.java:784)
at org.eclipse.gmf.runtime.emf.core.util.CrossReferenceAdapter.getInverseReferences(CrossReferenceAdapter.java:884)
at org.eclipse.emf.ecore.util.ECrossReferenceAdapter.getInverseReferences(ECrossReferenceAdapter.java:311)
at org.eclipse.gmf.runtime.emf.core.util.CrossReferenceAdapter.updateImportsAndExports(CrossReferenceAdapter.java:302)
at org.eclipse.gmf.runtime.emf.core.util.CrossReferenceAdapter.selfAdapt(CrossReferenceAdapter.java:107)
at org.eclipse.emf.ecore.util.ECrossReferenceAdapter.notifyChanged(ECrossReferenceAdapter.java:430)
at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:380)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1514)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1282)
at org.unicase.ui.diagram.urml.part.UrmlDocumentProvider.setDocumentContent(UrmlDocumentProvider.java:229)
at org.unicase.ui.diagram.urml.part.UrmlDocumentProvider.createDocument(UrmlDocumentProvider.java:113)
at org.unicase.ui.diagram.urml.part.UrmlDocumentProvider.createElementInfo(UrmlDocumentProvider.java:86)
at org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.AbstractDocumentProvider.connect(AbstractDocumentProvider.java:387)
at org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor.doSetInput(DiagramDocumentEditor.java:460)
at org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor.setInput(DiagramDocumentEditor.java:423)
at org.eclipse.gef.ui.parts.GraphicalEditor.init(GraphicalEditor.java:346)
at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor.init(DiagramEditor.java:653)
at org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor.init(DiagramDocumentEditor.java:126)
at org.eclipse.ui.internal.EditorManager.createSite(EditorManager.java:798)
at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:647)
at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:465)
at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
at org.eclipse.ui.internal.EditorAreaHelper.setVisibleEditor(EditorAreaHelper.java:271)
at org.eclipse.ui.internal.EditorManager.setVisibleEditor(EditorManager.java:1429)
at org.eclipse.ui.internal.EditorManager$5.runWithException(EditorManager.java:942)
at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
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:4041)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
at org.eclipse.ui.internal.Workbench$31.runWithException(Workbench.java:1567)
at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:179)
at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:4584)
at org.eclipse.ui.internal.StartupThreading.runWithoutExceptions(StartupThreading.java:94)
at org.eclipse.ui.internal.Workbench.init(Workbench.java:1562)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2567)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
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:369)
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:620)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
at org.eclipse.equinox.launcher.Main.main(Main.java:1384)


The problem seems to be the setDocumentContent method which seems to generate a write when loading a resource.

As you see at the stack trace, all involved code is generated, there is no user code in there. So why do I get that exception?
Re: Diagram does not open after regenerating GMF code [message #753991 is a reply to message #753897] Mon, 31 October 2011 11:21 Go to previous messageGo to next message
Ralph Gerbig is currently offline Ralph GerbigFriend
Messages: 702
Registered: November 2009
Senior Member
Hi,

set a break point on this exception (java.lang.IllegalStateException) and take a look at the stack in the debug view. Is there somewhere custom code by you?

Ralph
Re: Diagram does not open after regenerating GMF code [message #754106 is a reply to message #753991] Mon, 31 October 2011 18:53 Go to previous messageGo to next message
miranda  is currently offline miranda Friend
Messages: 2
Registered: January 2011
Junior Member
There is no user code in there, however, it contains a more precise reason for the exception:

During resource loading, the eContainer() method of the Diagram model element is called. This method resolves the container of the diagram, which seems to be a proxy (but why?). Resolving involves setting the container. This is what requires a write transaction. However, I dunno why this did not happen before the regeneration of the code. Why is the code not executed in a write transaction if it possibly does proxy resolving?

[Updated on: Mon, 31 October 2011 19:23]

Report message to a moderator

Re: Diagram does not open after regenerating GMF code [message #754340 is a reply to message #754106] Wed, 02 November 2011 09:15 Go to previous message
Ralph Gerbig is currently offline Ralph GerbigFriend
Messages: 702
Registered: November 2009
Senior Member
This looks like a EMF problem that causes problems with GMF. Maybe you can find out in the EMF forum why eContainer() is behavin in such a way and find a workaround for this.
Previous Topic:Update/Synchronize diagram after execute EMF operations
Next Topic:Message: "Top-level diagram container must be concrete"
Goto Forum:
  


Current Time: Thu Mar 28 08:56:49 GMT 2024

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

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

Back to the top