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

Bug 351917

Summary: [All table] bug with table using facets : NPE
Product: [Modeling] Papyrus Reporter: Vincent Lorenzo <vincent.lorenzo>
Component: CoreAssignee: Vincent Lorenzo <vincent.lorenzo>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: emft.facet-inbox
Version: 0.8.0   
Target Milestone: SR1   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Bug Depends on: 352580    
Bug Blocks:    
Attachments:
Description Flags
This patch corrects the bug : we load the facets earlier to avoid error in Papyrus Table vincent.lorenzo: review?

Description Vincent Lorenzo CLA 2011-07-13 03:50:26 EDT
Steps to reproduce : 
	1/ Create a Papyrus Requirement Table (or a table with facet)
	2/ Close Eclipse
	3/ Restart Eclipse (Papyrus reopens the model which were opened before closing Eclipse
		-> the table is not correctly opened : we get the following exception (which is an error inside the creation of the log of an other error...)
	4/ Close your model and reopen it -> it's work
	
	
	
	FacetSetCatalog.getSingleton();
java.lang.NullPointerException
	at org.eclipse.emf.ecore.util.EcoreUtil.getURI(EcoreUtil.java:2913)
	at org.eclipse.emf.facet.widgets.nattable.internal.NatTableWidget.registerCellEditorForColumn(NatTableWidget.java:1029)
	at org.eclipse.emf.facet.widgets.nattable.internal.NatTableWidget.access$11(NatTableWidget.java:1000)
	at org.eclipse.emf.facet.widgets.nattable.internal.NatTableWidget$6.configureRegistry(NatTableWidget.java:985)
	at net.sourceforge.nattable.NatTable.configure(NatTable.java:372)
	at org.eclipse.emf.facet.widgets.nattable.internal.NatTableWidget.setInput(NatTableWidget.java:450)
	at org.eclipse.emf.facet.widgets.nattable.internal.NatTableWidget.init(NatTableWidget.java:367)
	at org.eclipse.emf.facet.widgets.nattable.internal.NatTableWidget.<init>(NatTableWidget.java:353)
	at org.eclipse.papyrus.table.common.internal.PapyrusNatTableWidget.<init>(PapyrusNatTableWidget.java:78)
	at org.eclipse.papyrus.table.common.internal.NatTableEditor.createNattableWidget(NatTableEditor.java:228)
	at org.eclipse.papyrus.table.common.internal.NatTableEditor.createPartControl(NatTableEditor.java:217)
	at org.eclipse.papyrus.sasheditor.internal.EditorPart.createEditorPartControl(EditorPart.java:263)
	at org.eclipse.papyrus.sasheditor.internal.EditorPart.createPartControl(EditorPart.java:169)
	at org.eclipse.papyrus.sasheditor.internal.TabFolderPart.createChildPart(TabFolderPart.java:917)
	at org.eclipse.papyrus.sasheditor.internal.TabFolderPart.createTabItem(TabFolderPart.java:842)
	at org.eclipse.papyrus.sasheditor.internal.TabFolderPart.synchronize2(TabFolderPart.java:757)
	at org.eclipse.papyrus.sasheditor.internal.RootPart.synchronize2(RootPart.java:139)
	at org.eclipse.papyrus.sasheditor.internal.SashWindowsContainer.refreshTabsInternal(SashWindowsContainer.java:431)
	at org.eclipse.papyrus.sasheditor.internal.SashWindowsContainer.refreshTabs(SashWindowsContainer.java:384)
	at org.eclipse.papyrus.sasheditor.internal.SashWindowsContainer.createPartControl(SashWindowsContainer.java:173)
	at org.eclipse.papyrus.sasheditor.editor.AbstractMultiPageSashEditor.createPartControl(AbstractMultiPageSashEditor.java:130)
	at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:670)
	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:1459)
	at org.eclipse.ui.internal.EditorManager$5.runWithException(EditorManager.java:972)
	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:135)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
	at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
	at org.eclipse.ui.internal.Workbench$33.runWithException(Workbench.java:1595)
	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:135)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
	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:344)
	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:622)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Comment 1 Vincent Lorenzo CLA 2011-07-13 04:13:01 EDT
To correct this error, we should do : FacetSetCatalog.getSingleton(); to be sure the facets are loaded before opening the Papyrus table. 
Problem : the access to FacetSetCatalog is restricted for Papyrus. (internal). 
I think the best should be to correct this default in EMF-Facet, loading the facet when the widget is created (for example).
Comment 2 Vincent Lorenzo CLA 2011-07-13 04:23:24 EDT
Created attachment 199548 [details]
This patch corrects the bug : we load the facets earlier to avoid error in Papyrus Table

 (1) I, Vincent Lorenzo, wrote 100% of the code I've provided.
  (2) This code contains no cryptography
  (3) I have the right to contribute the code to Eclipse.
  (4) I contribute the content under the EPL.
Comment 3 Vincent Lorenzo CLA 2013-02-07 04:28:30 EST
This bug can be marked as closed fixed. We didn't commit the patch, because EMF-Facet corrected the problem.