Skip to content

Commit 141d1e6

Browse files
committed
Make connector API provisional and prevent static singleton access
Currently Connector API is public API (what seems unnecessary as one can query connectors by ID), also there are some static singleton services that binds consumers to that explicit class and might hinder future evolution. This now makes all connector API provisional except for one shared with another connector but reducing that part as much as possible. Also some interfaces are extracted and registered as services to allow loose coupling. In one case the static access can be even avoided completely now.
1 parent 3256085 commit 141d1e6

File tree

28 files changed

+341
-152
lines changed

28 files changed

+341
-152
lines changed

terminal/bundles/org.eclipse.terminal.connector.local/META-INF/MANIFEST.MF

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@ Require-Bundle: org.eclipse.core.expressions;bundle-version="[3.9.400,4)",
2121
Bundle-RequiredExecutionEnvironment: JavaSE-17
2222
Bundle-ActivationPolicy: lazy
2323
Bundle-Localization: plugin
24-
Export-Package: org.eclipse.terminal.connector.local.controls;version="1.0.0",
25-
org.eclipse.terminal.connector.local.launcher;version="1.0.0"
24+
Export-Package: org.eclipse.terminal.connector.local.controls;x-internal:=true,
25+
org.eclipse.terminal.connector.local.launcher;x-internal:=true
2626
Automatic-Module-Name: org.eclipse.terminal.connector.local

terminal/bundles/org.eclipse.terminal.connector.local/src/org/eclipse/terminal/connector/local/activator/UIPlugin.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.eclipse.terminal.view.core.ITerminalService;
1818
import org.eclipse.terminal.view.core.utils.ScopedEclipsePreferences;
1919
import org.eclipse.terminal.view.core.utils.TraceHandler;
20+
import org.eclipse.terminal.view.ui.launcher.ILaunchDelegateManager;
2021
import org.eclipse.ui.plugin.AbstractUIPlugin;
2122
import org.osgi.framework.BundleContext;
2223
import org.osgi.util.tracker.ServiceTracker;
@@ -120,14 +121,25 @@ public static ImageDescriptor getImageDescriptor(String key) {
120121
return getDefault().getImageRegistry().getDescriptor(key);
121122
}
122123

123-
private static ServiceTracker<ITerminalService, ITerminalService> serviceTracker;
124+
private static ServiceTracker<ITerminalService, ITerminalService> terminalServiceTracker;
124125

125126
public static synchronized ITerminalService getTerminalService() {
126-
if (serviceTracker == null) {
127-
serviceTracker = new ServiceTracker<>(getDefault().getBundle().getBundleContext(), ITerminalService.class,
128-
null);
129-
serviceTracker.open();
127+
if (terminalServiceTracker == null) {
128+
terminalServiceTracker = new ServiceTracker<>(getDefault().getBundle().getBundleContext(),
129+
ITerminalService.class, null);
130+
terminalServiceTracker.open();
130131
}
131-
return serviceTracker.getService();
132+
return terminalServiceTracker.getService();
133+
}
134+
135+
private static ServiceTracker<ILaunchDelegateManager, ILaunchDelegateManager> launchDelegateServiceTracker;
136+
137+
public static synchronized ILaunchDelegateManager getLaunchDelegateManager() {
138+
if (launchDelegateServiceTracker == null) {
139+
launchDelegateServiceTracker = new ServiceTracker<>(getDefault().getBundle().getBundleContext(),
140+
ILaunchDelegateManager.class, null);
141+
launchDelegateServiceTracker.open();
142+
}
143+
return launchDelegateServiceTracker.getService();
132144
}
133145
}

terminal/bundles/org.eclipse.terminal.connector.local/src/org/eclipse/terminal/connector/local/launcher/LocalLauncherHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121
import org.eclipse.jface.viewers.ISelection;
2222
import org.eclipse.jface.viewers.IStructuredSelection;
2323
import org.eclipse.jface.viewers.StructuredSelection;
24+
import org.eclipse.terminal.connector.local.activator.UIPlugin;
2425
import org.eclipse.terminal.view.core.ITerminalsConnectorConstants;
2526
import org.eclipse.terminal.view.ui.launcher.ILauncherDelegate;
26-
import org.eclipse.terminal.view.ui.launcher.LauncherDelegateManager;
2727
import org.eclipse.ui.IEditorInput;
2828
import org.eclipse.ui.IPathEditorInput;
2929
import org.eclipse.ui.handlers.HandlerUtil;
@@ -56,7 +56,7 @@ public Object execute(ExecutionEvent event) throws ExecutionException {
5656
}
5757

5858
// Get all applicable launcher delegates for the current selection
59-
ILauncherDelegate[] delegates = LauncherDelegateManager.getInstance().getApplicableLauncherDelegates(selection);
59+
ILauncherDelegate[] delegates = UIPlugin.getLaunchDelegateManager().getApplicableLauncherDelegates(selection);
6060
// Find the local terminal launcher delegate
6161
ILauncherDelegate delegate = null;
6262
for (ILauncherDelegate candidate : delegates) {

terminal/bundles/org.eclipse.terminal.connector.process/META-INF/MANIFEST.MF

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
33
Bundle-Name: %pluginName
44
Bundle-SymbolicName: org.eclipse.terminal.connector.process;singleton:=true
55
Bundle-Version: 1.0.0.qualifier
6-
Bundle-Activator: org.eclipse.terminal.connector.process.activator.UIPlugin
6+
Bundle-Activator: org.eclipse.terminal.connector.process.internal.UIPlugin
77
Bundle-Vendor: %providerName
88
Import-Package: org.eclipse.cdt.utils.pty;mandatory:=native,
99
org.eclipse.cdt.utils.spawner;mandatory:=native,
@@ -22,5 +22,5 @@ Bundle-RequiredExecutionEnvironment: JavaSE-17
2222
Bundle-ActivationPolicy: lazy
2323
Bundle-Localization: plugin
2424
Export-Package: org.eclipse.terminal.connector.process;version="1.0.0",
25-
org.eclipse.terminal.connector.process.help;version="1.0.0"
25+
org.eclipse.terminal.connector.process.internal;x-internal:=true
2626
Automatic-Module-Name: org.eclipse.terminal.connector.process

terminal/bundles/org.eclipse.terminal.connector.process/plugin.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<!-- Terminal launcher delegate contributions -->
2525
<extension point="org.eclipse.terminal.view.ui.launcherDelegates">
2626
<delegate
27-
class="org.eclipse.terminal.connector.process.ProcessLauncherDelegate"
27+
class="org.eclipse.terminal.connector.process.internal.ProcessLauncherDelegate"
2828
hidden="true"
2929
id="org.eclipse.terminal.connector.process.launcher.process"
3030
label="%ProcessLauncherDelegate.label">

terminal/bundles/org.eclipse.terminal.connector.process/src/org/eclipse/terminal/connector/process/ProcessConnector.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,17 @@
2929
import org.eclipse.core.runtime.Platform;
3030
import org.eclipse.jface.dialogs.MessageDialog;
3131
import org.eclipse.osgi.util.NLS;
32-
import org.eclipse.swt.custom.CTabItem;
3332
import org.eclipse.swt.widgets.Shell;
33+
import org.eclipse.swt.widgets.Widget;
3434
import org.eclipse.terminal.connector.ISettingsStore;
3535
import org.eclipse.terminal.connector.ITerminalControl;
3636
import org.eclipse.terminal.connector.NullSettingsStore;
3737
import org.eclipse.terminal.connector.TerminalState;
38-
import org.eclipse.terminal.connector.process.activator.UIPlugin;
39-
import org.eclipse.terminal.connector.process.nls.Messages;
38+
import org.eclipse.terminal.connector.process.internal.Messages;
39+
import org.eclipse.terminal.connector.process.internal.ProcessMonitor;
40+
import org.eclipse.terminal.connector.process.internal.UIPlugin;
4041
import org.eclipse.terminal.view.core.ILineSeparatorConstants;
4142
import org.eclipse.terminal.view.core.utils.Env;
42-
import org.eclipse.terminal.view.ui.launcher.ConsoleManager;
4343
import org.eclipse.terminal.view.ui.streams.AbstractStreamsConnector;
4444

4545
/**
@@ -209,10 +209,7 @@ public void connect(ITerminalControl control) {
209209
// Save the shell so the error message can have somewhere to display
210210
Shell shell = control.getShell();
211211
// Lookup the tab item
212-
CTabItem item = ConsoleManager.getInstance().findConsole(control);
213-
if (item != null) {
214-
item.dispose();
215-
}
212+
UIPlugin.getConsoleManager().findConsole(control).ifPresent(Widget::dispose);
216213
// Get the error message from the exception
217214
String msg = e.getLocalizedMessage() != null ? e.getLocalizedMessage() : ""; //$NON-NLS-1$
218215
Assert.isNotNull(msg);
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@
99
* Contributors:
1010
* Wind River Systems - initial API and implementation
1111
*******************************************************************************/
12-
package org.eclipse.terminal.connector.process.help;
13-
14-
import org.eclipse.terminal.connector.process.activator.UIPlugin;
12+
package org.eclipse.terminal.connector.process.internal;
1513

1614
/**
1715
* Context help id definitions.
Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* Contributors:
1010
* Wind River Systems - initial API and implementation
1111
*******************************************************************************/
12-
package org.eclipse.terminal.connector.process.nls;
12+
package org.eclipse.terminal.connector.process.internal;
1313

1414
import org.eclipse.osgi.util.NLS;
1515

@@ -18,15 +18,9 @@
1818
*/
1919
public class Messages extends NLS {
2020

21-
// The plug-in resource bundle name
22-
private static final String BUNDLE_NAME = "org.eclipse.terminal.connector.process.nls.Messages"; //$NON-NLS-1$
23-
24-
/**
25-
* Static constructor.
26-
*/
2721
static {
2822
// Load message values from bundle file
29-
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
23+
NLS.initializeMessages(Messages.class.getName(), Messages.class);
3024
}
3125

3226
// **** Declare externalized string id's down here *****
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* Contributors:
1010
* Wind River Systems - initial API and implementation
1111
*******************************************************************************/
12-
package org.eclipse.terminal.connector.process;
12+
package org.eclipse.terminal.connector.process.internal;
1313

1414
import java.util.Map;
1515

@@ -19,7 +19,7 @@
1919
import org.eclipse.terminal.connector.ITerminalConnector;
2020
import org.eclipse.terminal.connector.InMemorySettingsStore;
2121
import org.eclipse.terminal.connector.TerminalConnectorExtension;
22-
import org.eclipse.terminal.connector.process.activator.UIPlugin;
22+
import org.eclipse.terminal.connector.process.ProcessSettings;
2323
import org.eclipse.terminal.view.core.ITerminalService;
2424
import org.eclipse.terminal.view.core.ITerminalServiceOutputStreamMonitorListener;
2525
import org.eclipse.terminal.view.core.ITerminalsConnectorConstants;

0 commit comments

Comments
 (0)