| Summary: | NPE in ComposerField when condition added with "enter" | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | z_Archived | Reporter: | Christoph Thommen <christoph.thommen> | ||||||||
| Component: | Scout | Assignee: | Project Inbox <scout.core-inbox> | ||||||||
| Status: | CLOSED FIXED | QA Contact: | |||||||||
| Severity: | normal | ||||||||||
| Priority: | P3 | CC: | ivan.motsch, zimmermann | ||||||||
| Version: | unspecified | Flags: | zimmermann:
indigo+
zimmermann: juno+ |
||||||||
| Target Milestone: | --- | ||||||||||
| Hardware: | PC | ||||||||||
| OS: | All | ||||||||||
| Whiteboard: | |||||||||||
| Attachments: |
|
||||||||||
Created attachment 196418 [details]
Composer Form
Created attachment 197416 [details]
patch modifies SwtScoutTable to not listen to the Enter key anymore
In Swing environment this problem doesn't occur because the SwingScoutTable only listens to Space key and left mouse button but SwtScoutTable listens also to the Enter key.
This results in a table which unchecks the selected row immediatly after the form has been closed by the same key event which ends up in an NPE because Eclipse Scout expects an operator to be selected.
The attached patch resolves this issue by modifying the SwtScoutTable to not listen to the Enter key anymore, so it behaves just like the SwingScoutTable.
This patch would break major functionality using the CR key.
It is a key feature of the table to listen to the CR key (in swt only solvable that way).
Swing also listens to VK_ENTER but using a Action on the InputMap.
Solution is done in the causing location at SwtScoutTable:863
case SWT.KeyUp: {
if (getScoutObject().isCheckable()) {
is changed by respecting already handler CR event to
case SWT.KeyUp: {
if (event.doit && getScoutObject().isCheckable()) {
shipped with scout 3.7.1 |
Created attachment 196417 [details] Composer Tree Add a condition for a field (f.e. Language), select "ist leer" and press enter. The condition "ist leer" is not correctly added to the composer tree. When you start a search now, following NullPointerException is thrown: WARN 2011-05-23 10:38:22,064 (Worker-15) org.eclipse.scout.rt.client.ui.form.fields.composer.AbstractComposerField - write op null java.lang.NullPointerException at org.eclipse.scout.rt.client.ui.form.fields.composer.AbstractComposerField.storeXMLRec(AbstractComposerField.java:451) at org.eclipse.scout.rt.client.ui.form.fields.composer.AbstractComposerField.storeXMLRec(AbstractComposerField.java:443) at org.eclipse.scout.rt.client.ui.form.fields.composer.AbstractComposerField.storeXML(AbstractComposerField.java:429) at org.eclipse.scout.rt.client.ui.form.AbstractForm$13.visitField(AbstractForm.java:1717) at org.eclipse.scout.rt.client.ui.form.fields.AbstractCompositeField.visitFields(AbstractCompositeField.java:192) at org.eclipse.scout.rt.client.ui.form.fields.AbstractCompositeField.visitFields(AbstractCompositeField.java:182) at org.eclipse.scout.rt.client.ui.form.fields.AbstractCompositeField.visitFields(AbstractCompositeField.java:182) at org.eclipse.scout.rt.client.ui.form.AbstractForm.visitFields(AbstractForm.java:914) at org.eclipse.scout.rt.client.ui.form.AbstractForm.storeXML(AbstractForm.java:1727) at org.eclipse.scout.rt.client.ui.form.AbstractForm.storeXML(AbstractForm.java:1673) at org.eclipse.scout.rt.client.ui.form.AbstractForm.getXML(AbstractForm.java:1656) at org.eclipse.scout.rt.client.services.common.bookmark.internal.BookmarkUtility.bmStoreTablePage(BookmarkUtility.java:555) at org.eclipse.scout.rt.client.services.common.bookmark.internal.BookmarkUtility.createBookmark(BookmarkUtility.java:379) at org.eclipse.scout.rt.client.ui.desktop.AbstractDesktop.createBookmark(AbstractDesktop.java:1190) at org.eclipse.scout.rt.client.ui.desktop.navigation.internal.UserNavigationHistory.addStep(UserNavigationHistory.java:54) at org.eclipse.scout.rt.client.ui.desktop.navigation.internal.NavigationHistoryService.addStep(NavigationHistoryService.java:33) at org.eclipse.scout.rt.client.ui.desktop.outline.pages.AbstractPageWithTable$1.formChanged(AbstractPageWithTable.java:339) at org.eclipse.scout.rt.client.ui.form.AbstractForm.fireFormEvent(AbstractForm.java:1956) at org.eclipse.scout.rt.client.ui.form.AbstractForm.fireFormStoreBefore(AbstractForm.java:1901) at org.eclipse.scout.rt.client.ui.form.AbstractForm.storeStateInternal(AbstractForm.java:1106) at org.eclipse.scout.rt.client.ui.form.AbstractForm.doSaveWithoutMarkerChange(AbstractForm.java:1399) at org.eclipse.scout.rt.client.ui.form.AbstractForm.handleSystemButtonEventInternal(AbstractForm.java:2249) at org.eclipse.scout.rt.client.ui.form.AbstractForm$P_SystemButtonListener.buttonChanged(AbstractForm.java:2281) at org.eclipse.scout.rt.client.ui.form.fields.button.AbstractButton.fireButtonEvent(AbstractButton.java:301) at org.eclipse.scout.rt.client.ui.form.fields.button.AbstractButton.fireButtonClicked(AbstractButton.java:270) at org.eclipse.scout.rt.client.ui.form.fields.button.AbstractButton.doClick(AbstractButton.java:199) at org.eclipse.scout.rt.client.ui.form.fields.button.AbstractButton$P_UIFacade.fireButtonClickedFromUI(AbstractButton.java:313) at org.eclipse.scout.rt.ui.swt.form.fields.button.SwtScoutButton$3.run(SwtScoutButton.java:252) at org.eclipse.scout.rt.ui.swt.concurrency.SwtScoutSynchronizer$1.runVoid(SwtScoutSynchronizer.java:61) at org.eclipse.scout.rt.client.ClientJob.run(ClientJob.java:153) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) INFO 2011-05-23 10:38:22,080 (Worker-15) ch.post.pf.bap.ui.swt.core.services.BapExceptionHandlerService - Unexpected ProcessingException[ProcessingStatus[ERROR code=0 Unexpected java.lang.NullPointerException]] at org.eclipse.scout.rt.client.ui.form.AbstractForm.resetSearchFilter(AbstractForm.java:961) at org.eclipse.scout.rt.client.ui.form.AbstractForm.rebuildSearchFilter(AbstractForm.java:939) at org.eclipse.scout.rt.client.ui.form.AbstractForm.storeStateInternal(AbstractForm.java:1109) at org.eclipse.scout.rt.client.ui.form.AbstractForm.doSaveWithoutMarkerChange(AbstractForm.java:1399) at org.eclipse.scout.rt.client.ui.form.AbstractForm.handleSystemButtonEventInternal(AbstractForm.java:2249) at org.eclipse.scout.rt.client.ui.form.AbstractForm$P_SystemButtonListener.buttonChanged(AbstractForm.java:2281) at org.eclipse.scout.rt.client.ui.form.fields.button.AbstractButton.fireButtonEvent(AbstractButton.java:301) at org.eclipse.scout.rt.client.ui.form.fields.button.AbstractButton.fireButtonClicked(AbstractButton.java:270) at org.eclipse.scout.rt.client.ui.form.fields.button.AbstractButton.doClick(AbstractButton.java:199) at org.eclipse.scout.rt.client.ui.form.fields.button.AbstractButton$P_UIFacade.fireButtonClickedFromUI(AbstractButton.java:313) at org.eclipse.scout.rt.ui.swt.form.fields.button.SwtScoutButton$3.run(SwtScoutButton.java:252) at org.eclipse.scout.rt.ui.swt.concurrency.SwtScoutSynchronizer$1.runVoid(SwtScoutSynchronizer.java:61) at org.eclipse.scout.rt.client.ClientJob.run(ClientJob.java:153) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) Caused by: java.lang.NullPointerException at org.eclipse.scout.rt.client.ui.form.fields.composer.AbstractComposerField$Tree.exportTreeNodeData(AbstractComposerField.java:650) at org.eclipse.scout.rt.client.ui.basic.tree.AbstractTree.exportTreeNodeDataRec(AbstractTree.java:1985) at org.eclipse.scout.rt.client.ui.basic.tree.AbstractTree.exportTreeNodeDataRec(AbstractTree.java:1987) at org.eclipse.scout.rt.client.ui.basic.tree.AbstractTree.exportTreeData(AbstractTree.java:1979) at org.eclipse.scout.rt.client.ui.form.fields.composer.AbstractComposerField.exportFormFieldData(AbstractComposerField.java:272) at org.eclipse.scout.rt.client.ui.form.AbstractForm.exportFormData(AbstractForm.java:754) at ch.post.pf.bap.client.core.ui.searchforms.MarktinfosSearchForm.execResetSearchFilter(MarktinfosSearchForm.java:97) at org.eclipse.scout.rt.client.ui.form.AbstractForm.resetSearchFilter(AbstractForm.java:955) ... 13 more ERROR 2011-05-23 10:38:22,083 (main) ch.post.pf.gui.ocp.support.core.StatusTargetHandler - Error - ERROR - Fehler Die ursprüngliche Fehlermeldung ist: encountered ProcessingException on Unexpected cause: NullPointerException - Unexpected WARN 2011-05-23 10:38:22,087 (Worker-15) org.eclipse.scout.rt.client.ui.form.fields.composer.AbstractComposerField - write op null java.lang.NullPointerException at org.eclipse.scout.rt.client.ui.form.fields.composer.AbstractComposerField.storeXMLRec(AbstractComposerField.java:451) at org.eclipse.scout.rt.client.ui.form.fields.composer.AbstractComposerField.storeXMLRec(AbstractComposerField.java:443) at org.eclipse.scout.rt.client.ui.form.fields.composer.AbstractComposerField.storeXML(AbstractComposerField.java:429) at org.eclipse.scout.rt.client.ui.form.AbstractForm$13.visitField(AbstractForm.java:1717) at org.eclipse.scout.rt.client.ui.form.fields.AbstractCompositeField.visitFields(AbstractCompositeField.java:192) at org.eclipse.scout.rt.client.ui.form.fields.AbstractCompositeField.visitFields(AbstractCompositeField.java:182) at org.eclipse.scout.rt.client.ui.form.fields.AbstractCompositeField.visitFields(AbstractCompositeField.java:182) at org.eclipse.scout.rt.client.ui.form.AbstractForm.visitFields(AbstractForm.java:914) at org.eclipse.scout.rt.client.ui.form.AbstractForm.storeXML(AbstractForm.java:1727) at org.eclipse.scout.rt.client.ui.form.AbstractForm.storeXML(AbstractForm.java:1673) at org.eclipse.scout.rt.client.ui.form.AbstractForm.getXML(AbstractForm.java:1656) at org.eclipse.scout.rt.client.LargeMemoryPolicy.storeSearchFormState(LargeMemoryPolicy.java:57) at org.eclipse.scout.rt.client.AbstractMemoryPolicy.handlePageFormEvent(AbstractMemoryPolicy.java:165) at org.eclipse.scout.rt.client.AbstractMemoryPolicy$1.formChanged(AbstractMemoryPolicy.java:56) at org.eclipse.scout.rt.client.ui.form.AbstractForm.fireFormEvent(AbstractForm.java:1956) at org.eclipse.scout.rt.client.ui.form.AbstractForm.fireFormStoreAfter(AbstractForm.java:1915) at org.eclipse.scout.rt.client.ui.form.AbstractForm.storeStateInternal(AbstractForm.java:1129) at org.eclipse.scout.rt.client.ui.form.AbstractForm.doSaveWithoutMarkerChange(AbstractForm.java:1399) at org.eclipse.scout.rt.client.ui.form.AbstractForm.handleSystemButtonEventInternal(AbstractForm.java:2249) at org.eclipse.scout.rt.client.ui.form.AbstractForm$P_SystemButtonListener.buttonChanged(AbstractForm.java:2281) at org.eclipse.scout.rt.client.ui.form.fields.button.AbstractButton.fireButtonEvent(AbstractButton.java:301) at org.eclipse.scout.rt.client.ui.form.fields.button.AbstractButton.fireButtonClicked(AbstractButton.java:270) at org.eclipse.scout.rt.client.ui.form.fields.button.AbstractButton.doClick(AbstractButton.java:199) at org.eclipse.scout.rt.client.ui.form.fields.button.AbstractButton$P_UIFacade.fireButtonClickedFromUI(AbstractButton.java:313) at org.eclipse.scout.rt.ui.swt.form.fields.button.SwtScoutButton$3.run(SwtScoutButton.java:252) at org.eclipse.scout.rt.ui.swt.concurrency.SwtScoutSynchronizer$1.runVoid(SwtScoutSynchronizer.java:61) at org.eclipse.scout.rt.client.ClientJob.run(ClientJob.java:153) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)