| <html> |
| |
| <head> |
| <meta http-equiv="Content-Language" content="en-us"> |
| <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> |
| <link rel="stylesheet" href="http://www.eclipse.org/default_style.css" type="text/css"> |
| <title>Server Tools API Branch</title> |
| </head> |
| |
| <body> |
| |
| <body alink="#ff0000" bgcolor="#ffffff" link="#0000ee" text="#000000" vlink="#551a8b"> |
| |
| <table border="0" cellpadding="2" cellspacing="5" width="100%"> |
| <tbody><tr> |
| <TD WIDTH=60%> |
| <P ALIGN=LEFT><B><FONT SIZE=6><FONT FACE="Verdana, Arial, Helvetica, sans-serif">Server Tools API Branch</FONT></FONT></B><BR> |
| <FONT SIZE=1><FONT FACE="Arial, Helvetica, sans-serif"><FONT COLOR="#8080ff">Information on the Server Tools API Branch</FONT></FONT></FONT> |
| </P> |
| </TD> |
| <td rowspan="2" width="19%"><img src="http://www.eclipse.org/images/Idea.jpg" border="0" height="86" width="120"></td> |
| </tr> |
| </tbody></table> |
| |
| <table border="0" cellpadding="2" cellspacing="5" width="100%"> |
| <tbody><tr> |
| <td colspan="2" align="left" bgcolor="#0080c0" valign="top"><b><font color="#ffffff" face="Arial,Helvetica">Changes</font></b></td> |
| </tr></tbody> |
| </table> |
| |
| This document contains information on the Server Tools API changes that have gone |
| into the Server Tools API Branch for M2. |
| |
| <p/> |
| |
| <table border=1> |
| <tr> |
| <th>Change</th> |
| <th>Reason</th> |
| <th>Old Code</th> |
| <th>New Code</th> |
| </tr> |
| <tr> |
| <td>All java.util.Lists returned from methods have been changed to arrays of the corresponding |
| content type.</td> |
| <td>Stronger typed return values are safer, and returning a copy of the list (instead of the list |
| itself) blocks against clients modifying internal data structures.</td> |
| <td>List list = ServerCore.getRuntimeTypes();</td> |
| <td>IRuntimeType[] rt = ServerCore.getRuntimeTypes();</td> |
| </tr> |
| <tr> |
| <td>IResourceManager has been removed. Most of it's methods have been moved to the ServerCore |
| class, with the remaining ones in ServerUtil.</td> |
| <td>There was no client benefit of the resource manager, and it was misnamed.</td> |
| <td>ServerCore.getResourceManager().getServers();</td> |
| <td>ServerCore.getServers();</td> |
| </tr> |
| <tr> |
| <td>All extension point interfaces have been changed to abstract classes, and the "I" removed |
| from the name.</td> |
| <td>Allows for future support and maintenance without breaking existing interfaces.</td> |
| <td></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td>Several interfaces were moved from the .core.model package to .core.</td> |
| <td>The .core.model package was meant for SPIs, not API. All API classes & interfaces will |
| be moved or remain in .core so that API users do not need to use the .core.model package.</td> |
| <td>import org.eclipse.wst.server.code.model.IModule;</td> |
| <td>import org.eclipse.wst.server.code.IModule;</td> |
| </tr> |
| <tr> |
| <td>IServerResourceListener renamed to IServerLifecycleListener. Several methods moved out to |
| new IRuntimeListener and IServerConfigurationListener interfaces.</td> |
| <td>"Resource" had to be removed from the name, and the interface contained methods for |
| runtimes and server configurations as well. They are split up so that API users do not |
| need to listen for all types of changes from a single interface.</td> |
| <td>ServerCore.getResourceManager().addServerResourceListener(myListener);</td> |
| <td>ServerCore.addRuntimeLifecycleListener(myListener);</td> |
| </tr> |
| <tr> |
| <td>Publishing interfaces completely rewritten & .core.resources package removed.</td> |
| <td>The publishing interface was outdated and written before the Eclipse team support, |
| ANT, or other recent publishing methods had been developed. The new API allows for |
| better support and for each server type to use it's own publishing mechanism.</td> |
| <td></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td>IRuntimeDelegate and IRuntimeWorkingCopyDelegate merged into a single RuntimeDelegate. |
| IServerDelegate and IServerWorkingCopyDelegate reworked into |
| ServerDelegate and ServerBehaviourDelegate.</td> |
| <td>Making clients provide two separate classes for the delegates was excessive, |
| unnecessary, and ended up with too many SPI classes. Only a single delegate class is |
| now required for these extension points.</td> |
| <td></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td>IRuntime.getDelegate(), IRuntime.getWorkingCopyDelegate() changed into IRuntime extending |
| IAdaptable.</td> |
| <td>**. Clients should still remember that calling this method may involve plugin loading, so |
| it should not be used in popup menus, etc.</td> |
| <td>ITomcatRuntime tr = (ITomcatRuntime) runtime.getDelegate();</td> |
| <td>ITomcatRuntime tr = (ITomcatRuntime) runtime.getAdapter(ITomcatRuntime.class);</td> |
| </tr> |
| <tr> |
| <td>IModuleType and IModuleKind interfaces merged.</td> |
| <td>IModuleKind was created late in the previous release cycle and couldn't be merged at the |
| time it was created.</td> |
| <td></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td>IServerTask changed and IModuleTask removed.</td> |
| <td>The existing interfaces had an ITask directly returned as a delegate, and only allowed a |
| single task per extension point. The new IServerTask allows the delegate to return multiple |
| tasks from a single extension point, and it is not itself a task.</td> |
| <td></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td>IServerConfiguration, IServerConfiguration, etc. removed</td> |
| <td>The server config was a relic and did not need to be a first class resource. ServerDelegates |
| are now directly responsible for maintaining the configuration.</td> |
| <td></td> |
| <td>see Tomcat implementation</td> |
| </tr> |
| <tr> |
| <td>Various minor cleanup - methods renamed, parameters changed, etc.</td> |
| <td>Cleanup and future maintenance.</td> |
| <td></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td>IModuleObjectAdapter -> IModuleArtifactAdapter, IModuleObject -> IModuleArtifact</td> |
| <td>Object was too generic and didn't have any real meaning. Artifact represents what the |
| IModuleObject really represents - resources within a module</td> |
| <td></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td>getServerType(String id) -> findServerType(String id)</td> |
| <td>Lookup methods on ServerCore and ServerUtil renamed to be more accurate.</td> |
| <td>IServerType st = getServerType("com.x")</td> |
| <td>IServerType st = findServerType("com.x")</td> |
| </tr> |
| <tr> |
| <td>Lots of methods & interfaces moved to internal packages</td> |
| <td>Need to trim down the exposed API to only what is required for ongoing maintenance. If |
| there is anything in an internal package that you were previously using, or plan to use |
| in the future, please contact me and we'll work out an API solution</td> |
| <td></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td></td> |
| <td></td> |
| <td></td> |
| <td></td> |
| </tr> |
| </table> |
| |
| </body> |
| </html> |