[EmfStore] Null Context in MEEditorInput [message #1049796] |
Fri, 26 April 2013 05:29  |
Eclipse User |
|
|
|
Hi,
I use Ecp and EmfStore from git-sources and I have java.lang.NullPointerException when try to open my model element.
From source I found:
1. Created MEEditorInput with non null context
2. Invoked WorkbenchSourceProvider.checkActivePart and
Object newEditorInput = currentState.get(ISources.ACTIVE_EDITOR_INPUT_NAME) returned MEEditorInput with null context
3. When WorkbenchSourceProvider compare inputs it is throws java.lang.NullPointerException
Can any body halp me?
Stack trace:
!ENTRY org.eclipse.ui.workbench 4 2 2013-04-26 13:21:06.379
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.ui.workbench".
!STACK 0
java.lang.NullPointerException
at org.eclipse.emf.ecp.editor.e3.MEEditorInput.equals(MEEditorInput.java:98)
at org.eclipse.ui.internal.util.Util.equals(Util.java:370)
at org.eclipse.ui.internal.services.WorkbenchSourceProvider.checkActivePart(WorkbenchSourceProvider.java:363)
at org.eclipse.ui.internal.services.WorkbenchSourceProvider.checkActivePart(WorkbenchSourceProvider.java:297)
at org.eclipse.ui.internal.services.WorkbenchSourceProvider$2.windowDeactivated(WorkbenchSourceProvider.java:270)
at org.eclipse.ui.internal.Workbench$12.run(Workbench.java:987)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.Workbench.fireWindowDeactivated(Workbench.java:985)
at org.eclipse.ui.internal.WorkbenchWindow$14.shellDeactivated(WorkbenchWindow.java:1789)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:111)
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:1058)
at org.eclipse.swt.widgets.Decorations.WM_ACTIVATE(Decorations.java:1676)
at org.eclipse.swt.widgets.Shell.WM_ACTIVATE(Shell.java:2145)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4525)
at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1627)
at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2069)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4976)
at org.eclipse.swt.internal.win32.OS.PeekMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.PeekMessage(OS.java:3129)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3753)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1029)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:923)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
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:353)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
[Updated on: Fri, 26 April 2013 05:31] by Moderator
|
|
|
|
|
|
|
Re: [EmfStore] Null Context in MEEditorInput [message #1052724 is a reply to message #1052549] |
Tue, 30 April 2013 08:56  |
Eclipse User |
|
|
|
Hi Dmitriy,
as Ed already mentioned thread-safety must be provided on an application
level. The problem with the decorator as it seems is that it will add
adapters during decoration effectively changing the model and thereby
contending with other threads. It will be difficult to enforce
synchronization by only adding a synchronized block to your code.
One way to handle multi-threading are Transactional Editing domains. But
for your case it seems overkill, maybe a simple way to solve your
problem is to add the suffix you create directly in the
ItemProvider.getText() of the respective EClasses instead of later
adding them to the label by decoration. (Remember to add a @generated
NOT annotation). This way threading issues should vanish in my opinion.
Cheers,
Maximilian
Am 30.04.2013 10:19, schrieb Dmitriy Shishkin:
> After fixing a new problem has grown..
>
> Before moving on ECP I had my own navigator with some decorators and it was some problems with it related with that EObjects are not thread safe and decorator (I think it was decorator) sometimes corrupt my adapters im model elements
> (http://www.eclipse.org/forums/index.php/m/1008115/#msg_1008115)
>
> I fixed it with synhronized method in all decorators:
> @Override
> public void decorate(Object element, IDecoration decoration) {
> ItemProviderAdapter provider = null;
> synchronized (element){
> AdapterFactory adapterFactory = AlsDomainPlugin.getInjector().getInstance(AdapterFactory.class);
> provider = (ItemProviderAdapter) adapterFactory.adapt(element, IItemLabelProvider.class);
> }
> if (provider != null) {
> String text = Dictionary.get(element, provider);
> if (text != null && text.length() > 0){
> decoration.addSuffix(" " + "[" + text + "]");
> }
> }
> }
>
> And now I have similar problem I think:
>
>
>
> Maybe it is bug in my own decorators. If you can help I would be very grateful
>
> Stack for this error:
> !ENTRY org.eclipse.e4.ui.workbench 4 0 2013-04-30 12:05:26.699
> !MESSAGE Unable to create class 'org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor' from bundle '840'
> !STACK 0
> org.eclipse.e4.core.di.InjectionException: java.util.NoSuchElementException
> at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:63)
> at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:859)
> at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:839)
> at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:111)
> at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:319)
> at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:240)
> at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:161)
> at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:102)
> at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:71)
> at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:53)
> at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:141)
> at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:896)
> at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:630)
> at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:732)
> at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$2(PartRenderingEngine.java:703)
> at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:697)
> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
> at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:682)
> at org.eclipse.e4.ui.internal.workbench.PartServiceImpl$1.handleEvent(PartServiceImpl.java:91)
> at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:41)
> at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:180)
> at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
> at org.eclipse.swt.widgets.Display.syncExec(Display.java:4687)
> at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:187)
> at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:38)
> at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197)
> at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)
> at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
> at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
> at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
> at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)
> at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
> at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
> at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:81)
> at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:58)
> at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
> at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:171)
> at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:418)
> at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:385)
> at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:579)
> at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.bringToTop(PartServiceImpl.java:315)
> at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:985)
> at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3079)
> at org.eclipse.ui.internal.WorkbenchPage.access$22(WorkbenchPage.java:3003)
> at org.eclipse.ui.internal.WorkbenchPage$8.run(WorkbenchPage.java:2985)
> at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
> at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2981)
> at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2940)
> at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2931)
> at org.eclipse.emf.ecp.explorereditorbridge.internal.EditorModelElementOpener.openModelElement(EditorModelElementOpener.java:59)
> at org.eclipse.emf.ecp.internal.ui.util.ECPHandlerHelper.openModelElement(ECPHandlerHelper.java:391)
> at org.eclipse.emf.ecp.ui.views.ModelExplorerView$DoubleClickListener.doubleClick(ModelExplorerView.java:74)
> at org.eclipse.jface.viewers.StructuredViewer$1.run(StructuredViewer.java:845)
> 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.fireDoubleClick(StructuredViewer.java:843)
> at org.eclipse.jface.viewers.AbstractTreeViewer.handleDoubleSelect(AbstractTreeViewer.java:1477)
> at org.eclipse.jface.viewers.StructuredViewer$4.widgetDefaultSelected(StructuredViewer.java:1246)
> at org.eclipse.jface.util.OpenStrategy.fireDefaultSelectionEvent(OpenStrategy.java:249)
> at org.eclipse.jface.util.OpenStrategy.access$0(OpenStrategy.java:246)
> at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:307)
> 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.Display.runDeferredEvents(Display.java:4169)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3758)
> at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1029)
> at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
> at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:923)
> at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
> at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
> at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
> at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
> at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
> 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:353)
> at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:601)
> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
> at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
> at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
> Caused by: java.util.NoSuchElementException
> at org.eclipse.emf.common.util.AbstractEList$EIterator.doNext(AbstractEList.java:711)
> at org.eclipse.emf.common.util.AbstractEList$EIterator.next(AbstractEList.java:690)
> at org.eclipse.emf.common.notify.impl.AdapterFactoryImpl.adapt(AdapterFactoryImpl.java:80)
> at com.tes.als.chapter.provider.ChapterItemProviderAdapterFactory.adapt(ChapterItemProviderAdapterFactory.java:172)
> at org.eclipse.emf.edit.provider.ComposedAdapterFactory.adapt(ComposedAdapterFactory.java:294)
> at org.eclipse.emf.edit.provider.ComposedAdapterFactory.adapt(ComposedAdapterFactory.java:271)
> at org.eclipse.emf.edit.provider.ComposedAdapterFactory.adapt(ComposedAdapterFactory.java:258)
> at org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider.getText(AdapterFactoryLabelProvider.java:370)
> at org.eclipse.emf.ecp.editor.internal.e3.ShortLabelProvider.getText(ShortLabelProvider.java:42)
> at org.eclipse.emf.ecp.editor.internal.e3.MEEditor.init(MEEditor.java:202)
> at org.eclipse.ui.internal.EditorReference.initialize(EditorReference.java:324)
> at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:288)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:601)
> at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
> ... 87 more
>
> !ENTRY org.eclipse.emf.ecp.ui 4 0 2013-04-30 12:05:26.726
> !MESSAGE java.lang.NullPointerException
> !STACK 0
> java.lang.NullPointerException
> at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3095)
> at org.eclipse.ui.internal.WorkbenchPage.access$22(WorkbenchPage.java:3003)
> at org.eclipse.ui.internal.WorkbenchPage$8.run(WorkbenchPage.java:2985)
> at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
> at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2981)
> at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2940)
> at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2931)
> at org.eclipse.emf.ecp.explorereditorbridge.internal.EditorModelElementOpener.openModelElement(EditorModelElementOpener.java:59)
> at org.eclipse.emf.ecp.internal.ui.util.ECPHandlerHelper.openModelElement(ECPHandlerHelper.java:391)
> at org.eclipse.emf.ecp.ui.views.ModelExplorerView$DoubleClickListener.doubleClick(ModelExplorerView.java:74)
> at org.eclipse.jface.viewers.StructuredViewer$1.run(StructuredViewer.java:845)
> 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.fireDoubleClick(StructuredViewer.java:843)
> at org.eclipse.jface.viewers.AbstractTreeViewer.handleDoubleSelect(AbstractTreeViewer.java:1477)
> at org.eclipse.jface.viewers.StructuredViewer$4.widgetDefaultSelected(StructuredViewer.java:1246)
> at org.eclipse.jface.util.OpenStrategy.fireDefaultSelectionEvent(OpenStrategy.java:249)
> at org.eclipse.jface.util.OpenStrategy.access$0(OpenStrategy.java:246)
> at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:307)
> 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.Display.runDeferredEvents(Display.java:4169)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3758)
> at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1029)
> at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
> at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:923)
> at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
> at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
> at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
> at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
> at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
> 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:353)
> at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:601)
> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
> at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
> at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
>
--
Maximilian Kögel
Get Professional Eclipse Support: http://eclipsesource.com/munich
|
|
|
Powered by
FUDForum. Page generated in 0.05917 seconds