| <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> | 
 | <html> | 
 |  | 
 | <head> | 
 | <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> | 
 | <title>ECF New and Noteworthy</title> | 
 | <link rel="stylesheet" href="http://www.eclipse.org/default_style.css" type="text/css"> | 
 |  | 
 | </head> | 
 |  | 
 | <body bgcolor="#FFFFFF"> | 
 | <table border=0 cellspacing=5 cellpadding=2 width="100%"> | 
 |   <tbody> | 
 |     <tr> | 
 |       <td width="69%" class="bannertext"> | 
 |         <font class="indextop style">eclipse communication framework</font> | 
 |         <br><br> | 
 |         <font class="indexsub">an eclipse technology subproject</font> | 
 |         <br><br> | 
 |         <font class="indextop style2">New and Noteworthy</font><br>0.6.2 Stable Release</font> | 
 |         <br><br><br> | 
 |         Return to <a href="downloads.php">ECF download page</a></br> | 
 |         Return to <a href="comm_resources.php">ECF communication resources page</a> | 
 |         <br><br> | 
 |         <a href="NewAndNoteworthy_0.4.0.html">New and Noteworthy for 0.4.0</a><br> | 
 |         <a href="NewAndNoteworthy_0.5.2.html">New and Noteworthy for 0.5.2</a><br> | 
 |         <a href="NewAndNoteworthy_0.5.4.html">New and Noteworthy for 0.5.4</a><br> | 
 |         <a href="NewAndNoteworthy_0.6.0.html">New and Noteworthy for 0.6.0</a> | 
 |       </td> | 
 |       <td width="31%"> | 
 |         <div align="center"> | 
 |           <img src="../images/Idea.jpg" width="120" height="86" hspace="50" align="middle"> | 
 |         </div> | 
 |       </td> | 
 |     </tr> | 
 |   </tbody> | 
 | </table> | 
 |  | 
 | <table> | 
 |   <TR> <!-----------------------------------------------------> | 
 |     <TD colSpan=2> <HR> </TD> | 
 |   </TR> | 
 |   <TR><TD colSpan=2><H2>ECF API Additions and Changes</H2></TD> | 
 |  | 
 |   <TR> | 
 |     <TD vAlign=top align=left width="30%"> | 
 |     <p><br></p> | 
 |         <P align=left> | 
 | 	<B>Revised Datashare API</B> | 
 |         </P> | 
 |     </TD> | 
 |     <TD vAlign=top width="70%"> | 
 |       <p><br></p> | 
 |       <P>The revised datashare API <b>org.eclipse.ecf.datashare</b> allows clients | 
 |       to create channels for distributing arbitrary data.  Here's some example code showing the | 
 |       creation of a channel and use to distribute some test data:  | 
 |       <pre> | 
 | // Create container | 
 | IContainer container = ContainerFactory.getDefault().createContainer( | 
 | 		CHANNEL_CONTAINER); | 
 | // Connect container | 
 | container.connect(serverID, null); | 
 |  | 
 | // Get IChannelContainer adapter | 
 | IChannelContainer channelContainer = (IChannelContainer) container | 
 | 		.getAdapter(IChannelContainer.class); | 
 | // Create channel listener | 
 | IChannelListener listener = new IChannelListener() { | 
 | 	public void handleChannelEvent(IChannelEvent event) { | 
 | 		System.out.println("handleChannelEvent(evt=" + event + ")"); | 
 | 	} | 
 | }; | 
 | // Create channel named "mychannel" | 
 | IChannel channel = channelContainer.createChannel(IDFactory.getDefault().createStringID("channel1"), listener, | 
 | 		new HashMap()); | 
 | // Send data on channel | 
 | for (int i = 0; i < 10; i++) { | 
 | 	channel.sendMessage("hello".getBytes()); | 
 | 	Thread.sleep(200); | 
 | } | 
 |       </pre> | 
 |       See the javadocs for the  | 
 |       <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/datashare/package-summary.html">org.eclipse.ecf.datashare package</a> | 
 |       , and the  | 
 |       <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/datashare/events/package-summary.html">org.eclipse.ecf.datashare.events</a> | 
 |       package.  | 
 |       </p> | 
 |     </TD> | 
 |   </TR> | 
 |  | 
 |   <TR> | 
 |     <TD vAlign=top align=left width="30%"> | 
 |     <p><br></p> | 
 |         <P align=left> | 
 | 	<B>New Fileshare API</B> | 
 |         </P> | 
 |     </TD> | 
 |     <TD vAlign=top width="70%"> | 
 |       <p><br></p> | 
 |       <P>The new Fileshare API provides clients with a mechanism for asynchronously sending and retrieving files.  Here's  | 
 |       some example code that sends a file to all of the other connected participants within the given <b>IContainer</b> | 
 |       instance: | 
 |       <pre> | 
 | // Create container | 
 | IContainer container = ContainerFactory.getDefault().createContainer( | 
 | 		FILESHARE_CONTAINER); | 
 | // Connect container | 
 | container.connect(serverID, null); | 
 |  | 
 | // Get fileshare adapter | 
 | IFileShareContainer fileshareContainer = (IFileShareContainer) container | 
 | 		.getAdapter(IFileShareContainer.class); | 
 | // Create fileshare listener | 
 | IFileShareListener listener = new IFileShareListener() { | 
 | 	public void handleFileShareEvent(IFileShareEvent event) { | 
 | 		System.out.println("handleChannelEvent(" + event + ")"); | 
 | 	} | 
 | }; | 
 | // Create ID for new fileshare instance | 
 | ID fileshareID = IDFactory.getDefault().createGUID(); | 
 | // Create ID to specify remote file name...in this case make remote name same as local name | 
 | ID remoteFileID = IDFactory.getDefault().createID( | 
 | 		fileshareContainer.getFileNamespace(), filename); | 
 | // Create fileshare instance in container | 
 | IFileShare fileshare = fileshareContainer.createSender(fileshareID, | 
 | 		new FileInputStream(filename), remoteFileID, listener, | 
 | 		new HashMap()); | 
 | // Start sending asynchronously...this actualy sends the local file 'filename' | 
 | // to all in container | 
 | fileshare.start(); | 
 |       </pre> | 
 |       Here is example code that asynchronously retrieves a file from a web server: | 
 |       <pre> | 
 | // Create container | 
 | IContainer container = ContainerFactory.getDefault().createContainer( | 
 | 		FILESHARE_CONTAINER); | 
 | // Connect container | 
 | container.connect(serverID, null); | 
 |  | 
 | // Get fileshare adapter | 
 | IFileShareContainer fileshareContainer = (IFileShareContainer) container | 
 | 		.getAdapter(IFileShareContainer.class); | 
 | // Create fileshare listener | 
 | IFileShareListener listener = new IFileShareListener() { | 
 | 	public void handleFileShareEvent(IFileShareEvent event) { | 
 | 		// Note...here is where the retrieved file contents | 
 | 		// Should be saved...when IFileShareRetrieveData events are received | 
 | 		System.out.println("handleChannelEvent(" + event + ")"); | 
 | 	} | 
 | }; | 
 | // Create ID for new fileshare instance | 
 | ID fileshareID = IDFactory.getDefault().createGUID(); | 
 | // Create ID for the remote file...e.g. fileurl = 'http://www.eclipse.org/index.html' | 
 | ID fileID = IDFactory.getDefault().createID( | 
 | 		fileshareContainer.getFileNamespace(), fileurl); | 
 | // Create fileshare instance in container | 
 | IFileShare fileshare = fileshareContainer.createRetriever(fileshareID, | 
 | 		fileID, listener, new HashMap()); | 
 | // Start receiving asynchronously...this actualy retrieves the remote file | 
 | // 'filename' | 
 | fileshare.start(); | 
 |       </pre> | 
 |       </p> | 
 |     </TD> | 
 |   </TR> | 
 |  | 
 |   <TR> | 
 |     <TD vAlign=top align=left width="30%"> | 
 |     <p><br></p> | 
 |         <P align=left> | 
 | 	<B>New example RobotApplication added to example clients</B> | 
 |         </P> | 
 |     </TD> | 
 |     <TD vAlign=top width="70%"> | 
 |       <p><br></p> | 
 |       <P>The <b>org.eclipse.ecf.example.clients</b> plugin has a new XMPP-based 'robot' in the <b>RobotApplication</b> class.</p> | 
 |     </TD> | 
 |   </TR> | 
 |  | 
 |  | 
 | </table> | 
 |  | 
 |  | 
 | </body> | 
 | </html> |