Bug 258631 - [api] ITerminalService should be public API
Summary: [api] ITerminalService should be public API
Status: RESOLVED FIXED
Alias: None
Product: Target Management
Classification: Tools
Component: RSE (show other bugs)
Version: 3.0   Edit
Hardware: All All
: P3 enhancement (vote)
Target Milestone: 3.1 M4   Edit
Assignee: Anna Dushistova CLA
QA Contact: Martin Oberhuber CLA
URL:
Whiteboard:
Keywords: api
Depends on:
Blocks: 259363
  Show dependency tree
 
Reported: 2008-12-12 05:13 EST by Martin Oberhuber CLA
Modified: 2008-12-19 09:41 EST (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 2008-12-12 05:13:50 EST
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.
Comment 1 Anna Dushistova CLA 2008-12-14 13:30:43 EST
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?
Comment 2 Martin Oberhuber CLA 2008-12-19 09:41:12 EST
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.