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

Bug 272650

Summary: [terminal][telnet] NullPointerException in Terminal
Product: [Tools] Target Management Reporter: Nils Hagge <nils.hagge>
Component: TerminalAssignee: dsdp.tm.core-inbox <tm.core-inbox>
Status: CLOSED DUPLICATE QA Contact: Martin Oberhuber <mober.at+eclipse>
Severity: normal    
Priority: P3 CC: eclipse, mober.at+eclipse
Version: 3.1   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description Nils Hagge CLA 2009-04-17 03:56:07 EDT
Build ID: M20090211-1700 (Eclipse)
Component: TM-terminal-3.0.2.zip

Steps To Reproduce:
Open several Telnet Terminals and "play around". 
After some playing with connect and disconnect. The disconnect command seems to be ignored. It turns out that it caused a NullPointerException.


I analyzed the code and found a contradictious method implementation in

[Plugin org.eclipse.tm.terminal.telnet]
package org.eclipse.tm.internal.terminal.telnet;
class TelnetConnector {
....
Line 84:
	public boolean isLocalEcho() {
		if(fTelnetConnection!=null)
			return false;
		return fTelnetConnection.localEcho();
	}
...
}

Im am pretty sure the author intended to implement 
the following:

	public boolean isLocalEcho() 
        {
	  return fTelnetConnection != null &&
		 fTelnetConnection.localEcho();
	}
which defaults to "false"

alternatively

	public boolean isLocalEcho() 
        {
	  return fTelnetConnection == null ||
		 fTelnetConnection.localEcho();
	}
would default to "true"


More information:
The stacktrace:

java.lang.NullPointerException
at org.eclipse.tm.internal.terminal.telnet.TelnetConnector.isLocalEcho(TelnetConnector.java:84)
at org.eclipse.tm.internal.terminal.connector.TerminalConnector.isLocalEcho(TerminalConnector.java:165)
at org.eclipse.tm.internal.terminal.emulator.VT100TerminalControl$TerminalKeyHandler.keyPressed(VT100TerminalControl.java:897)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:155)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1027)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1012)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1040)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1036)
at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1352)
at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:3894)
at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:341)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:3787)
at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:337)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4528)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2371)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3420)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2384)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2200)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:490)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
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:386)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
Comment 1 Martin Oberhuber CLA 2010-09-22 10:00:55 EDT

*** This bug has been marked as a duplicate of bug 288254 ***