eclipse communication framework

an eclipse technology subproject

New and Noteworthy
0.9.3 Stable Release


Return to ECF download page
Return to ECF communication resources page

New and Noteworthy for 0.4.0
New and Noteworthy for 0.5.2
New and Noteworthy for 0.5.4
New and Noteworthy for 0.6.0
New and Noteworthy for 0.6.2
New and Noteworthy for 0.7.0
New and Noteworthy for 0.7.5
New and Noteworthy for 0.7.6
New and Noteworthy for 0.8.0
New and Noteworthy for 0.8.1
New and Noteworthy for 0.8.2
New and Noteworthy for 0.8.4
New and Noteworthy for 0.8.5
New and Noteworthy for 0.8.6
New and Noteworthy for 0.8.7
New and Noteworthy for 0.8.9
New and Noteworthy for 0.9.0
New and Noteworthy for 0.9.1
New and Noteworthy for 0.9.2

NOTE: For brevity, bundles and packages named "org.eclipse.ecf.foo" will sometimes be referred to as "ecf.foo" below.

ECF API Refactoring


ECF Core Bundle Split into 3 Bundles


Previously, there was one core ECF bundle org.eclipse.ecf. This bundle was approximately 150K of code. In response to dev mailing list postings about ECF code size and applicability in multiple runtime environments we went about refactoring the ECF core plugins so that there was less code, and less code was required for other ECF APIs (like filetransfer, datashare, discovery, remoteservices).

There are now two core plugins: org.eclipse.ecf.identity and org.eclipse.ecf. org.eclipse.ecf depends upon org.eclipse.ecf.identity.

Plugin/Bundle ID

New Size (Kbytes)

Dependencies

Project Name

API Javadocs

org.eclipse.ecf.identity

30

(packages) org.eclipse.core.runtime org.osgi.framework

org.eclipse.ecf.core.identity

org.eclipse.ecf.core.identity

org.eclipse.ecf

43

(bundle) org.eclipse.ecf.identity

org.eclipse.ecf

org.eclipse.ecf.core org.eclipse.ecf.core.events org.eclipse.ecf.core.provider org.eclipse.ecf.core.security org.eclipse.ecf.core.start org.eclipse.ecf.core.user org.eclipse.ecf.core.util

These are now the only plugins required for use of ECF, so the total code for minimal ECF applications is 73K. The ecf plugin exports the packages and classes from ecf.identity, so it is not necessary for the ecf.identity plugin to be explicitly added.

There is now also a third core plugin ecf.sharedobject:

Plugin/Bundle ID

New Size (Kbytes)

Dependencies

Project Name

API Javadocs

org.eclipse.ecf.sharedobject

71

(plugin) org.eclipse.ecf

org.eclipse.ecf.core.sharedobject

org.eclipse.ecf.core.sharedobject

This plugin is not required for other ECF API plugins (e.g. filetransfer, discovery, remoteservices, datashare), but is useful as an API...particularly for implementing component-based ECF providers.

NOTE: One consequence of this refactoring is that the shared object API interfaces and classes (ISharedObject, ISharedObjectContainer, etc) that were present in the org.eclipse.ecf.core package are now no longer in that package. These classes can, however, be found in the org.eclipse.ecf.core.sharedobject package, which is now in the org.eclipse.ecf.sharedobject plugin (the org.eclipse.ecf.core.sharedobject project). In most cases, adding the org.eclipse.ecf.sharedobject plugin to list of your plugin's dependencies and then having Eclipse "Add Import" or "Organize Imports" should fix with new package names.


ECF Core and API plugins Now Able to Run on CDC 1.0/Foundation 1.0 Execution Environments


The following plugins are now able to run on a minimum of the CDC 1.0/Foundation 1.0 execution environment:

  • org.eclipse.ecf.identity
  • org.eclipse.ecf
  • org.eclipse.ecf.sharedobject
  • org.eclipse.ecf.discovery
  • org.eclipse.ecf.datashare
  • org.eclipse.ecf.filetransfer
  • org.eclipse.ecf.presence
  • org.eclipse.ecf.remoteservice
See bug #149024.


Package Changes for ecf.core.identity



Package Changes for ecf.core, ecf.core.events, ecf.core.security, ecf.core.provider, ecf.core.util


Many of the classes previously in these packages have moved to the org.eclipse.ecf.sharedobject bundle. The classes are now in the following packages in that bundle: ecf.core.sharedobject, ecf.core.sharedobject.events, ecf.core.sharedobject.provider, ecf.core.sharedobject.security, and ecf.core.sharedobject.util. To use the classes it's now necessary to include (via Require-Bundle or Import-Package) from the org.eclipse.ecf.sharedobject bundle.


Extension Point Changes


Previously there were four extension points defined in the org.eclipse.ecf bundle: org.eclipse.ecf.namespace, org.eclipse.ecf.containerFactory, org.eclipse.ecf.connectionFactory, org.eclipse.ecf.startup, and org.eclipse.ecf.sharedObjectFactory. The following changes have been made to these extention points:

  1. org.eclipse.ecf.namespace
    1. Moved extension point to org.eclipse.ecf.identity bundle
    2. Changed id for extension point to org.eclipse.ecf.identity.namespace
    3. Simplified signature for superclass Namespace.createInstance()
  2. org.eclipse.ecf.containerFactory
    1. Simplified signature for factory interface IContainerInstantiator
  3. org.eclipse.ecf.start -- Unchanged
  4. org.eclipse.ecf.connectionFactory -- REMOVED
  5. org.eclipse.ecf.sharedObjectFactory
    1. Moved extension point to org.eclipse.ecf.sharedobject bundle
    2. Changed id for extension point to org.eclipse.ecf.sharedobject.sharedObjectFactory
    3. Simplified signature for factory interface ISharedObjectInstantiator


Added org.eclipse.ecf.filetransfer plugin, removed org.eclipse.ecf.fileshare plugin


For filetransfer, the plugin org.eclipse.ecf.filetransfer was created/added. Further, the org.eclipse.ecf.fileshare plugin was removed from the main distribution and will no longer be supported.


NEW ECF CONVENTION: Container adapter interfaces now use common naming


Previously, the container adapter interfaces in the various extension APIs (e.g. discovery) did not have a common naming convention. For example, org.eclipse.ecf.discovery.IDiscoveryContainer, or org.eclipse.ecf.datashare.IChannelContainer. Now, all of these adapter interfaces have the convention of I<type>ContainerAdapter.class. So, for example, org.eclipse.ecf.discovery.IDiscoveryContainer.class is now called org.eclipse.ecf.discovery.IDiscoveryContainerAdapter.class, and org.eclipse.ecf.datashare.IChannelContainer is now called org.eclipse.ecf.datashare.IChannelContainerAdapter. These interfaces are intended to be used as adapters for org.eclipse.ecf.core.IContainer instances, e.g.:

      IContainer container = ContainerFactory.getDefault().createContainer("type");
      IDiscoveryContainerAdapter discovery = 
      		(IDiscoveryContainerAdapter) container.getAdapter(IDiscoveryContainerAdapter.class);
      


Moved classes to *.internal* names and fixed other naming conventions


In accord with the Eclipse Platform naming conventions, a number of classes and interfaces previously exposed are now in internal packages with names of the form org.eclipse.ecf.internal.*. These packages are further marked as x-internal:=true in the Export-Packages section within MANIFEST.MF.


org.eclipse.ecf.core.util.ECFException now inherits from CoreException


org.eclipse.ecf.core.util.ECFException formerly inherited from java.lang.Exception. It now inherits from org.eclipse.core.runtime.CoreException. This should allow ECFException to run on the CDC 1.0/Foundation 1.0 execution environment, as that execution environment does not support java.lang.Exception constructors: Exception(Throwable) and Exception(String,Throwable)


Add 'removeListener' methods


Added 'removeListener' methods to org.eclipse.ecf.presence.chat.IChatRoomContainer and org.eclipse.ecf.presence.IPresenceContainer. See bug #160968.


Moved org.eclipse.ecf.presence.IInvitationListener


Moved (in org.eclipse.ecf.presence API) access to IInvitationListener to IChatRoomManager rather than IPresenceContainer. See bug #160137.


Allowed extending org.eclipse.ecf.provider.generic.ClientSOContainer for authentication


Streamlined handling of creating/passing in connect data for new kind of authentication. See bug #150398.


Added query methods to org.eclipse.ecf.core.ContainerTypeDescription


Two methods were added to org.eclipse.ecf.core.ContainerTypeDescription. These two methods are ContainerTypeDescription.getSupportedAdapterTypes(), and ContainerTypeDescription.getSupportedParameterTypes(). These two methods are available so that client code can inspect the adapter types and parameter types appropriate for a given IContainer instance before it is actually created. See bug #164154.


Removed URI references from discovery API


Removed references to java.net.URI class from org.eclipse.ecf.discovery plugin.


Changed method names in org.eclipse.ecf.presence API


Changed a number of method names in org.eclipse.ecf.presence API for clarity and consistency. For example, IPresenceContainerAdapter.removeSubscripionListener -> IPresenceContainerAdapter.removeRosterSubscriptionListener


Changed exception names


Exception class names from *InstantiationException to *CreateException. For example, IDInstantiation exception is now IDCreateException. ContainerInstantiationException is now ContainerCreateException.


Changed method signature for IContainer.addListener


The method signature for IContainer.addListener(IContainerListener listener, String filter) has changed to IContainer.addListener(IContainerListener listener)