[
https://issues.jboss.org/browse/JBIDE-23354?page=com.atlassian.jira.plugi...
]
Viacheslav Kabanovich commented on JBIDE-23354:
-----------------------------------------------
[~jeffmaury], [~adietish], NPE probably happened at implicit conversion to boolean.
Comparing to getColumnText we see that it is normal to check the result for null (the same
check is in super implementation). Even if in this case the call of refresh was the
immediate cause of null value, it can happen in other situations. I suggest to protect
this method by postponing the conversion until null check:
{code}
@Override
public Image getColumnImage(Object element, int columnIndex) {
if (columnIndex == ROUTE_PORT_COLUMN_INDEX) {
Boolean selected = (Boolean)attributeMaps[columnIndex].get(element);
return selected != null && selected ?
OpenShiftImages.CHECKED_IMG:OpenShiftImages.UNCHECKED_IMG;
}
return null;
}
{code}
Also, I suspect, that we may need table refresh to fix JBIDE-23416. We can see in code
that table refresh is used in many cases not relying on auto-refresh on fired events.
Deploy Docker Wizard: Reset of port mapping whille at least 1 default
is present causes NPE
-------------------------------------------------------------------------------------------
Key: JBIDE-23354
URL:
https://issues.jboss.org/browse/JBIDE-23354
Project: Tools (JBoss Tools)
Issue Type: Bug
Components: openshift
Affects Versions: 4.4.2.AM2
Reporter: Marián Labuda
Assignee: Jeff MAURY
Labels: deploy_docker_wizard, openshift_v3
Fix For: 4.4.2.AM3
In Deploy Image to Docker wizard on the wizard page with routing settings, if I click on
Reset while in the table is at least 1 default port mapping (row with non-changed values =
default), cause NPE and the default row is shown as empty = name, service port and pod
port are shown as blank.
NPE stack trace
{code}Problems occurred when invoking code from plug-in: "org.eclipse.jface".
java.lang.NullPointerException
at
org.jboss.tools.openshift.internal.ui.wizard.deployimage.ServicesAndRoutingPage$2.getColumnImage(ServicesAndRoutingPage.java:196)
at
org.eclipse.jface.viewers.TableColumnViewerLabelProvider.update(TableColumnViewerLabelProvider.java:67)
at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:141)
at
org.eclipse.jface.viewers.AbstractTableViewer.doUpdateItem(AbstractTableViewer.java:382)
at
org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:474)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:50)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:173)
at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2170)
at
org.eclipse.jface.viewers.AbstractTableViewer.internalRefreshAll(AbstractTableViewer.java:669)
at
org.eclipse.jface.viewers.AbstractTableViewer.internalRefresh(AbstractTableViewer.java:607)
at
org.eclipse.jface.viewers.AbstractTableViewer.internalRefresh(AbstractTableViewer.java:599)
at org.eclipse.jface.viewers.StructuredViewer.lambda$0(StructuredViewer.java:1519)
at
org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1458)
at
org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1419)
at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1519)
at org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:523)
at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1478)
at
org.jboss.tools.openshift.internal.ui.wizard.deployimage.ServicesAndRoutingPage$7.widgetSelected(ServicesAndRoutingPage.java:402)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:249)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5219)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1340)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4553)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4143)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:818)
at org.eclipse.jface.window.Window.open(Window.java:794)
at org.jboss.tools.common.ui.WizardUtils.openWizardDialog(WizardUtils.java:257)
at
org.jboss.tools.openshift.internal.ui.handler.DeployImageHandler$2$1.run(DeployImageHandler.java:94)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4528)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4146)
at
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1121)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
at
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1022)
at
org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:150)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:687)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:604)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:138)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610)
at org.eclipse.equinox.launcher.Main.run(Main.java:1519)
at org.eclipse.equinox.launcher.Main.main(Main.java:1492)
{code}
--
This message was sent by Atlassian JIRA
(v7.2.2#72004)