Build Notes for TM 3.0
Jun 20, 2008

New and Noteworthy
  • TM 3.0 requires Eclipse 3.3 or later for the SSH component. Other components may work with earlier Eclipse versions, but these have not been tested. Platform Runtime is the minimum requirement for core RSE and Terminal. Discovery needs EMF, and the RemoteCDT integration needs CDT.
    Building the RSE SSH service requires Eclipse 3.4 or later for the fix of bug 224799; the fix also requires 3.4 at runtime, but the code contains a backward compatibility fallback to also run on Eclipse 3.3 if that particular fix is not required.
  • Important Bug Fixes, Enhancements and API changes:
    • The RSE User Actions framework is available as a new downloadable package [187395].
    • The RAPI Library and Windows CE Subsystem is available as a new downloadable package in Incubation status. Thanks to Radoslav Gerganov for contributing this new functionality [214887].
    • Tgz and tar.gz files are now supported by the DSore and Local archive handlers. Thanks to Johnson Ma for contributing this new functionality [195402].
    • The optional terminal input line is now resizeable [196447].
    • Performance: Fewer plugins are now activated when RSE starts up, because the code that loads UI Adapters for the core services being used now loads those adapters more lazily. For some extenders of RSE, this might mean that they need to manually provide for loading their adapters when needed. For details, see the final comments on bug [218304].
    • API: Streamed remote shell and Terminal access is now supported by API. IAdaptable is used to convert the old API into the new one. This will enable RSE Terminal integrations, and provide better performance and consumability. At the same time, the RSE Services was cleaned up and made implement IAdaptable in general [170910] [226262].
    • API: RSE Early Startup and initialization behavior was improved. The org.eclipse.rse.core.modelInitializers extension point was added for clients to register code that needs to be executed when the RSE Model is initialized. For clients, new API was added to RSECorePlugin in order to query when initialization is complete, or to wait until initialization completes a given phase, or to get notified when initialization passes a given phase [197167].
    • API: RSE SystemMessages can now be constructed more easily with the new SimpleSystemMessage API. Contents of these messages typically comes from standard Eclipse NLS property files, rather than the RSE-specific monolithic systemmessages.xml file. At the same time, messages have been refactored into non-UI plugins where possible, or the correct feature-specific plugins. This accounts for better modularity and Platform integration; but it also means breaking API changes where clients had re-used RSE messages for themselves. Such re-use is now no longer supported [211067,216252,220309].
    • API: RSE MOVE and COPY Events now also contain source and destination objects, such that listeners can update data associated with moved remote objects [224313].
    • API: Added API to support running the dstore server in multi-threaded mode, where many clients can share a single remote process to save resources [220126].
    • API: The TerminalConnectorProxy class was removed, and replaced by an IAdaptable mechanism to get a concrete connector instance. This allows to programmatically create connections when a concrete connector instance is known, and will be further enhanced in the future [200541].
    • API: RSE FTP Listing Parsers can now contribute custom commands to send on connect. This enables connecting IBM System/i (OS400) FTP in IFS mode [212382].
  • At least 100 bugs were fixed: Use this query to show the list of bugs fixed since TM 3.0M6 [build notes].
  • For details on checkins, see TM SearchCVS, the RSE CVS changelog, and the TM Core CVS changelog.
  • For other questions, please check the TM and RSE FAQ as well as the TM 3.0 Known Issues and Workarounds.
Getting Started

The RSE User Documentation now has a Tutorial that guides you through installation, first steps, connection setup and important tasks.

If you want to know more about future directions of the Target Management Project, developer documents, architecture or how to get involved,
the online Getting Started page as well as the TM and RSE FAQ are the best places for you to get started.

API Status

For the upcoming TM 3.0 release, some API changes will be inevitable, especially in order to support improved componentization and UI/Non-UI splitting. Although we completed a great deal of API cleanup for TM 2.0, we decided to still mark all API as provisional since we expect more work to do. If anyhow possible, we will avoid breaking API changes after TM 2.0, but please be prepared for future changes, and especially take care of API marked as @deprecated in the Javadoc. Such API is prime candidate to be removed in the future. All API changes will be voted by committers on the dsdp-tm-dev developer mailing list, and documented in a migration guide for future releases. Early migration information can also be found right in the bug reports. Look for those that are tagged [api][breaking].

API Changes since TM 2.0 - newest changest first
The following lists those API changes that are not backward compatible and require user attention. A short hint on what needs to change is given directly in the list. More information can be found in the associated bugzilla items.
  • TM 3.0 Breaking API Changes [query]
  • TM 3.0M6 Breaking API Changes [query]
    • RSE UI Adapter Loading has been made more lazy. This means, that contributors of RSE subsystems, which provide core services and UI adapters in separate plugins, may need to take care of loading their adapters at the right time. RSE does provide for automatica adapter loading when a subsystem gets connected, but any adapter functionality that's needed before that time needs to be provided by the client. For details, see the final comments on bug [218304].
    • Several SystemMessages and Shared Resource Strings have been moved to different packages in order to allow better integration with other Eclipse projects and better UI/Non-UI splitting. New SimpleSystemMessage class has been added to create System Messages out of standard Eclipse NLS Strings. A list of related breaking API changes is attached to bugs [216252] [220309].
    • Adaptable Services: All RSE Services must now extend AbstractService rather than implementing the Service interface directly, in order to make the Service adaptable [226262].
    • ISystemNewConnectionWizardPage was moved from Core to non-UI, and replaced by a non-UI base class named ISubSystemConfigurator in non-UI. Contributed Wizard Pages should use the new API in order to support configuring subsystems without bringing in unnecessary UI dependencies [168976].
    • SystemFileTransferModeRegistry has been moved to internal class. ISystemFileTransferModeRegistry can now be accessed by calling new API RemoteFileUtility.getSystemFileTransferModeRegistry() instead [220020].
    • Some deprecated or not correctly working methods have been removed but should not have been used by any clients anyways [219975,220041,223126].
    • Some less relevant breaking API changes, mostly for cleaning up API, have been made. See the bug reports if you find that your code doesn't compile any more against RSE 3.0M6 and you find that not even an "organize imports" operation helps: [query bugzilla].
  • TM 3.0M5 Breaking API Changes [query]
    • Removed IServiceSubSystem and related types in order to simplify the code, and allow better lazy initialization. ISubSystem.getServiceType() is now used to know whether a given subsystem is based on a service or not. Implementers of IServiceSubSystem need to implement ISubSystem now; code that tested for instanceof IServiceSubSystem needs to use the dynamic check now [217556].
    • Removed ISystemProfile#createHost(IRSESystemType, String, String, String). Deprecated some other methods related to filter or host creation, in order to support lazy initialization of filter pools. Replacement methods are mentioned in the deprecation text [197036].
    • Made the TerminalConnectorId mandatory in terminal connector plugin.xml, because it is essentially API allowing to talk to a given connector [199285].
    • Removed deprecated ISystemViewInputProvider#getShell() [218524].
    • Moved some methods from ISystemRegistry into ISystemRegistryUI in order to facilitate moving SystemRegistry implementation to non-UI. Making this change also required adding an SWT dependency for rse.core, which we hope to get rid again later. The SystemRegistry logfile can now be found in the rse.core plugin rather than the rse.ui plugin [215820].
    • IRSESystemType.isEnabled() has been added instead of RSESystemTypeAdapter.isEnabled(), in order to provide enablement info to non-UI plugins as well. The adapter method has been made final in order to warn extenders that they need to move their code to non-UI. [218655].
  • TM 3.0M4 Breaking API Changes
    • IRemoteObjectResolver.getObjectWithAbsoluteName() now takes an additional IProgressMonitor parameter, in order to support cancellation of deferred queries. The old method has been deprecated and will be removed for 3.0. Especially custom Subsystem implementations will need to be changed to implement the new method instead of the old one [211472].
    • IFileService.getOutputStream() now takes an additional int options parameter, in order to support opening streams which append to existing files. This was required in order to properly fulfill the EFS APIs. The corresponding old method has been deprecated and will be removed for 3.0. Custom File Service implementations should be changed to implement the new method instead of the old one [208778].
    • Removed the now obsolete IFileService.list(...) methods in favor of the new API from bug 207178. Clients of IRemoteFileSubSystem and IFileService need to be changed, though the change is simple and compiler will mark error positions [209552].
    • Archive Handler API has been changed to support background operation and cancellation. To facilitate this, an additional ISystemOperationMonitor interface was added as last parameter of most method calls in ISystemArchiveHandler. In addition to that, VirtualChild#getExtractedFile() was also changed [160775].
    • Removed obsolete method RSESystemTypeAdapter#acceptContextMenuActionContribution() [199032].
  • TM 3.0M3 Breaking API Changes
    • Optimized IFileService for multi-queries. This is not a breaking API change for clients that extend AbstractFileService rather than implementing IFileService directly. But the now deprecated methods getFiles(), getFolders() and getFilesAndFolders() may be removed soon in favor of the new list() API [207178].
    • Changed ISubSystem#checkIsConnected() to accept an IProgressMonitor argument [207095].
    • Changed the mountPathMappers extension point: ISystemMountPathMapper#getWorkspaceMappingFor() has been changed to accept an additional parameter of type IRemoteFileSubSystem [195285].
    • Removed some deprecated APIs:
      • ISubSystem#connect() API without progress or callback [186363].
      • obsolete SystemSelectConnection* classes [196938].
      • obsolete classes ISystemConnectionWizardPropertyPage and SystemSubSystemsPropertiesWizardPage [197129].
      • obsolete methods in IRemoteCmdSubSystem and IRemoteSystemEnvVar [208813].
Use this query to show the full list of API changes since TM 2.0 .
Known Problems and Workarounds
The following critical or major bugs are currently known. We'll strive to fix these as soon as possible.
  • bug 235221 - cri - Files truncated on exit of Eclipse
  • bug 225360 - cri - [files] Deadlock on Startup with a remote file in the Editor
  • bug 238156 - maj - Export/Import Connection doesn't create default filters for the specified connection
  • bug 222380 - maj - [persistence][migration][team] Subsystem association is lost when creating connection with an installation that does not have subsystem impl
  • bug 198395 - maj - [dstore] Can connect to DStore with expired password
  • bug 236443 - maj - [releng] Using P2 to install "remotecdt" only from update site creates an unusable installation
  • bug 227944 - maj - [efs][regression] IllegalArgumentException for RemoteSystemsTempFiles project.
  • bug 218387 - maj - [efs] Eclipse hangs on startup of a Workspace with a large efs-shared file system on a slow connection
  • bug 208185 - maj - [terminal][serial] terminal can hang the UI when text is entered while the backend side is not reading characters
Use this query for an up-to-date list of major or critical bugs.

The TM 3.0 Known Issues and Workarounds Wiki page gives an up-to-date list of the most frequent and obvious problems, and describes workarounds for them.
If you have other questions regarding TM or RSE, please check the TM and RSE FAQ

Click here for a complete up-to-date bugzilla status report, or here for a report on bugs fixed so far.