Community
Participate
Working Groups
ITerminalService was added in RSE 3.0 as provisional API. For RSE 3.1, we should make the "internal" package public and evolve it to be fully supported public API. The package name should be moved NOW in order to ensure we have enough time to finish evolving the API signatures. The "EXPERIMENTAL" tags must be removed from the Javadocs. ProcessBaseShell is the only class where I'm not yet sure if we really want this to be public API. I think I'd prefer keeping this "internal" in its old location for now. The reason for this is, that java.lang.Process is often not suitable for running external commands; CDT has created the Spawner class with some native methods in order to better support sending signals like KILL as well as PTY Terminal handling. Therefore, I think that instead of a re-usable ProcessBaseShell class, we'd rather want a configurable ProcessBaseShellFactory which uses some pluggable mechanism for creating IBaseShell instances that wrap a process.
I moved all the classes except ProcessBaseShell. Could you please take a look at package.html files if they're still relevant from your point of view?
Thanks Anna. I had to make the following additional changes: 1. MOST IMPORTANT: In all plugins that reference classes from the refactored package, the MANIFEST.MF had to be changed to require version 3.1 or rse.services: Require-Bundle:org.eclipse.rse.services;bundle-version="[3.1.0,4.0.0)", this is, because if an old 3.0 version of rse.services would be loaded, the classes would not be found where they are expected. Affected were all bundles that directly or indirectly deal with terminals, i.e. those that YOU had to change when making the refactoring. Next time, please remember to update the "Require-Bundle" version when making such a refactoring right away. 2. Update org.eclipse.rse.doc.isv - options.txt - topics_Reference.xml These files guide what packages get generated into the Javadoc. Because of the refactoring, the new packages had to be picked up. 3. Remove org.eclipse.rse.internal.services.terminals/package.html - This file is no longer used since the package is not an API package. 4. In IBaseShell Javadocs, remove the references to ProcessBaseShell. Since we decided not to make ProcessBaseShell an API, it must not be referenced from the API interface. 5. I also noticed that due to the API change, the API of the RSE Terminals Integration also changes (since it uses types from this API as parameters or return values). Consequently, the version number of the rseterminals integration also had to be reved up. I did the intial work and filed bug 259363 for follow-up. All changes are committed and released for 3.1m4: [258631][api] ITerminalService should be public API I believe that this can be marked FIXED. As part of verifying the fix, we should read through the generated Javadocs on m4 to see if they are nicely browseable, well put and properly use all the API Tooling tags.