<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../wtp.xsl"?>
<html>
	<head>
		<meta name="root" content="../../" />
		<title>web tools platform adopters</title>
	</head>
	<body>
		<h1>WTP Usage Scanner</h1>

		<h2>Download and install the Eclipse API scanner plugins</h2>
		<p>
		The tool for scanning adopter breakages are developed as part of
		the Eclipse API scanner. The Eclipse API scanner is available as
		two Eclipse plug-ins. You can overlay them on top of any Eclipse
		3.1+ drivers.
		<ol>
			<li>
			Download the 
			<a href="http://www.eclipse.org/downloads/download.php?file=/webtools/downloads/wtp-apiscanner.zip">Eclipse API scanner</a>
			and unzip it on top of your Eclipse driver.
			</li>
			<li>Start Eclipse.</li>
		</ol>
		</p>

		<h2>Tutorial on how to scan for adopters breakage</h2>
		<p>
		<ol>
			<li>
			First, you need to configure the location of the adopter usage reports.
			These reports are committed to
			<b>dev.eclipse.org:/cvsroot/webtools/releng.builder/tools/apitools/adopter_usages</b>.
			Check out the <b>adopter_usages</b> folder from CVS.
			</li>
			<li>
			To configure the adopter usage reports, go to preferences.
			Select the <b>Adopter Usage Reports</b> tab.
			<p><img src="img/pref_adopter_reports1.gif"/></p>
			</li>
			<li>
			Click <b>Add</b> and choose the project(s) that contains the adopter usage
			reports. Click <b>Browse</b> and choose the folder where you want the
			breakage reports to be generated into. Click <b>OK</b> to exit out of preferences.
			<p><img src="img/pref_adopter_reports2.gif"/></p>
			</li>
			<li>
			You now have everything setup. You can continue with your day-to-day
			development. Before you commit your code into CVS, make sure you scan
			your code for adopter breakages. For this tutorial, we will use the
			org.eclipse.wst.server.core plug-in as an example. Check out the
			org.eclipse.wst.server.core plug-in from CVS.
			</li>
			<li>
			In the <b>Resources</b> perspective, right click on the
			org.eclipse.wst.server.core project, select <b>API</b> and choose
			<b>Scan for breakages</b>. 
			<p><img src="img/action_scan_breakage1.gif"/></p>
			</li>
			<li>
			You should receive a popup indicating that the org.eclipse.wst.server.core
			plug-in is compatible with the adopter usage reports.
			<p><img src="img/action_scan_breakage2.gif"/></p>
			</li>
			<li>
			Now, we will remove an method from the one of the Java source and scan
			again. Open the servercore/org/eclipse/wst/server/core/IServer.java in
			the Java editor, scroll down to the bottom of the file and comment out
			the <b>restartModule(IModule[] module, IOperationListener listener)</b>
			method and save.
			<p><img src="img/editor_java.gif"/></p>
			</li>
			<li>
			Right click on the org.eclipse.wst.server.core project again, select
			<b>API</b> and choose <b>Scan for breakages</b>.
			</li>
			<li>
			After the operation completes, the <b>Adopter Breakages View</b> will
			open and you will find all the adopter breakages in this view.
			<p><img src="img/view_adopter_breakages.gif"/></p>
			</li>
			<li>
			The Adopter Breakages view is structured in the following format:
			<ul>
				<li>
				Plugin
				<ul>
					<li>
					Contact information of the adopter
					<ul>
						<li>
						Classes that are used by this adopter. Classes that show up
						here means either they are removed, or one or more of their
						methods/fields are removed.
						<ul>
							<li>Removed methods that are used by this adopter</li>
							<li>Removed fields that are used by this adopter</li>
						</ul>
						</li>
					</ul>
					</li>
				</ul>
				</li>
			</ul>
			You should either restore the removed classes/methods/fields or notify
			the adopter that these classes/methods/fields will be removed in the
			coming builds. Please refer to the non-API deprecation policy for details
			on what to do in this case. 
			</li>
		</ol>
		</p>

	</body>
</html>