blob: 4d8a3bc0f668b233f7b422b71a47d10696f3c2c0 [file] [log] [blame]
<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. Similar for IServer and other delegates</td>
<td>IAdaptable is a common Eclipse mechanism, and allows for other extension as well. 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>