<title>Team API Summary</title>
<table border="0" cellspacing="5" cellpadding="2" width="100%">
  
    <tr> 
      
    <td align="left" valign="top" bgcolor="#0080c0"> <b><font color="#ffffff" face="Arial,Helvetica"> 
      Eclipse 3.0 - Team API Summary</font></b></td>
    </tr>
</table>
<h1>Team API in Eclipse 3.0</h1>
<p>The original plan for Team API in Eclipse 3.0 is presented in the <a href="team_api.html">Eclipse 
  3.0 Team Plan Item Overview</a>. This document revises this plan and discusses 
  the motivation for any changes. Of particular interest is the decision to drop 
  the adoption of JSR 147 from the 3.0 plan. This document also summarizes the 
  API provided by Team, indicating changes and additions.</p>
<h2>The revised plan</h2>
<p>Our proposed improvements to the Team provider integration include the following 
  high-level work items in the Eclipse 3.0 timeframe:</p>
<ol>
  <li>Provide a non-versioning <a href="deployment_provider.html">Deployment Provider</a> 
    integration point. This mainly affects the Target Management plugins.<br>
    <em>Timeline: Initial conversion of FTP to be completed for M7.<br>
    </em></li>
  <li>Promote the support of a Team API by repository vendors.<br>
    <em>Dropped from 3.0: will be considered again when JSR is more mature.<br>
    </em></li>
  <li>Improved <a href="synchronizing_solution.html">Synchronize view</a> with 
    simplified integration API.<br>
    <em>Timeline: majority of API finalization for M7 with necessary adjustments 
    as required.<br>
    </em></li>
  <li>Support <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=36957">concurrent 
    execution</a> of operations.<br>
    <em>Timeline: support has been available since M4 and adjustments have been 
    ongoing. See the referenced document.</em></li>
</ol>
<p>Point 1 has been changed to address non-versioning repositories only. Originally, 
  it was envisioned that there would be some relationship between versioning and 
  non-versioning support. However, the decision was made to keep these two entities 
  separate. </p>
<p>Point 2 has been dropped from the 3.0 plan because JSR 147 is in it's early 
  stages and could not be fit into the 3.0 release timeframe. However, we still 
  believe that a Team API will only be possible if it is driven by the repository 
  vendors themselves. Hence, we will continue to monitor the progress of the JSR 
  and hope to adopt it at some point in the future.</p>
<h2>Summary of Team API in Eclipse 3.0</h2>
<p>The focus of the Team API is Eclipse 3.0 continues to be the rich integration 
  of repository support into Eclipse.</p>
<h3>Existing API in 2.1</h3>
<p>The following API exisited in Eclipse 2.1 and remains in Eclipse 3.0. For the 
  most part there have been no changes to the API listed below. Any changes that 
  have been made are mentioned and are 100% backwards compatible.</p>
<ul>
  <li>Project Sets 
    <ul>
      <li>plan to improve support for headless operation (contribution)</li>
      <li>considering the addition of API to access information about project 
        set entries </li>
    </ul>
  </li>
  <li>Ignored Resources List (unchanged)</li>
  <li>File Content Types (unchanged)</li>
  <li>RepositoryProvider and Core hooks (validate Save/Edit and Move/Delete)
<ul>
      <li>validateSave/Edit?</li>
    </ul>
  </li>
  <li>RepositoryProviderType 
    <ul>
      <li>changes related to project set changes</li>
    </ul>
  </li>
</ul>
<h3>New API in 3.0</h3>
<p>API has been added in 3.0 to ease the implementation of repository and deployment 
  providers.</p>
<ul>
  <li>Concurrency Support: Although not technically a Team API, consurrency support 
    will affect repository provider implementors (link to doc)</li>
  <li>TeamSubscriber and synchronization infrastructure: This API provides reusable 
    components for creating synchronization tools.</li>
  <li>DeploymentProvider: This API provides lifecycle management for deployment 
    type repositories such as FTP and WebDAV.</li>
  <li>RemoteContentsCache: This API simplifies the caching of remote contents 
    locally (provisional)</li>
  <li>BackgroundEventHandler: Helper class for processing events in the background 
    (provisional)</li>
  <li>SynchronizationCache and subclasses: Helper classes for managing synchronization 
    information (provisional)</li>
</ul>
<h3>Removed Provisional API</h3>
<p>In 2.1, Team had some API that was deemed provisional. The following provisional 
  API has been removed from 3.0.</p>
<ul>
  <li>IRemoteResource</li>
  <li>IRemoteSyncElement and related classes</li>
  <li>SyncView and related classes</li>
</ul>
<p>&nbsp; </p>
</BODY>
</html>