Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 434989 - [TERMINALS] IllegalArgumentException in Local connector, when both TM Legacy Terminal and TCF Terminals are installed
Summary: [TERMINALS] IllegalArgumentException in Local connector, when both TM Legacy ...
Status: RESOLVED FIXED
Alias: None
Product: TCF
Classification: Tools
Component: Target (show other bugs)
Version: 1.3   Edit
Hardware: PC Windows 7
: P3 normal (vote)
Target Milestone: 1.2   Edit
Assignee: Project Inbox CLA
QA Contact: Uwe Stieber CLA
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-05-15 12:30 EDT by Martin Oberhuber CLA
Modified: 2014-05-27 22:59 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Martin Oberhuber CLA 2014-05-15 12:30:27 EDT
When both the TM Legacy Terminal and the new TCF Terminals are installed, it looks like the TCF Terminals plugin introduces the legacy "local" connector as a side-effect. When trying to use that one, an IllegalArgumentException happens as per below.

Steps to Reproduce:
1. Install JEE Luna M7 Package on Windows 32-bit:
   http://eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/lunam7
2. Launch JEE Package, Window > Show View > Terminal and try to connect
   a session eg SSH. It should not show the "Local" connector.
3. Help > Install New Software... and add the TCF Terminals from:
   http://download.eclipse.org/tools/tcf/terminals_beta
4. From Legacy Terminal View, try connecting again. It now shows a "Local" 
   connector. Enter something in the Fields eg Image Path=C:\Cygwin\bin\bash.exe
   Arguments=-i
5. Click OK --> UnhandledEventLoopException is logged with IllegalArgumentException:


java.lang.IllegalArgumentException
	at org.eclipse.core.internal.preferences.legacy.PreferenceForwarder.setValue(PreferenceForwarder.java:685)
	at org.eclipse.tm.internal.terminal.provisional.api.PreferenceSettingStore.put(PreferenceSettingStore.java:50)
	at org.eclipse.tm.internal.terminal.view.SettingStorePrefixDecorator.put(SettingStorePrefixDecorator.java:32)
	at org.eclipse.tcf.te.ui.terminals.process.ProcessSettings.save(ProcessSettings.java:289)
	at org.eclipse.tcf.te.ui.terminals.process.ProcessConnector.save(ProcessConnector.java:271)
	at org.eclipse.tm.internal.terminal.connector.TerminalConnector.save(TerminalConnector.java:190)
	at org.eclipse.tm.internal.terminal.view.TerminalView.saveSettings(TerminalView.java:524)
	at org.eclipse.tm.internal.terminal.view.TerminalView.showSettingsDialog(TerminalView.java:360)
	at org.eclipse.tm.internal.terminal.view.TerminalView.onTerminalConnect(TerminalView.java:282)
	at org.eclipse.tm.internal.terminal.actions.TerminalActionConnect.run(TerminalActionConnect.java:37)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:519)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:595)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:511)
	at org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:462)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4353)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4172)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3761)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1152)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1033)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:635)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:578)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135)
	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:379)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:233)
	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:648)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
Comment 1 Uwe Stieber CLA 2014-05-15 13:07:22 EDT
Hi Martin,
"Local" is not the legacy "Local" connector, it is the native TCF Terminals "Local" connector type. This one should be never visible with the legacy TM Terminal view. 

http://git.eclipse.org/c/tcf/org.eclipse.tcf.git/commit/?id=3d4e340abdaf178eebe5e25f0b44b5e583ab75e0
Comment 2 Martin Oberhuber CLA 2014-05-15 14:23:03 EDT
Ah, I see ... thanks !

Anyways I found that even for our "Local Terminal Console" it might be a good idea to allow user optionally specify an Image Path and Arguments in the "New Terminal" dialog.

That way, one could open either a CMD terminal or a Cygwin terminal or whatever other app somebody wants. 

What do you think , shall I file an Enhancement request ?
Comment 3 Uwe Stieber CLA 2014-05-16 01:03:48 EDT
Feel free to do so. Will not be hard to get as it is supported by the underlying connector, it's just not exposed to the user.