<html>
<head>

<title>Java EE Module Configuration Editors</title>
</head>

<style>
dt {
display: list-item;
list-style-position:outside;
list-style-image:url(/eclipse.org-common/themes/Phoenix/images/arrow.gif);
margin-left:16px;
}
dd {
margin-left:25px;
margin-bottom:5px;
}
</style>

<body>
<p>The Java EE Module Configuration Editors project is a proposed open source project under the <a
	href="http://www.eclipse.org/projects/project_summary.php?projectid=webtools.jeetools">WTP Java EE Tools</a> project.</p>

<p>This proposal is in the Project Proposal Phase (as defined in the
Eclipse Development Process) and is written to declare its intent and
scope. We solicit additional participation and input from the Eclipse
community. Please send all feedback to the <a href="http://www.eclipse.org/forums/index.php?t=thread&frm_id=202">Proposals Forum</a>.</p>

<h2>Background</h2>

<p>Java EE modules are configured via complex XML configuration files and Java annotations. Editing
this configuration is difficult, especially for novice developers and those working on very large
application. A form-based editor that brings together information from XML configuration files
and Java annotations is a useful tool. The content assist and validation provided by such an
editor helps eliminate certain kinds of common bugs.</p>

<h2>Scope</h2>

<p>Deliver editors for Java EE module configurations.</p>

<h2>Description</h2>

<p>The editors are built using <a href="http://www.eclipse.org/sapphire">Sapphire</a>. Each editor
brings in information from the module's XML configuration file as well as the relevant annotations
into a unified view. A user can edit a setting using the same UI whether it is stored in the XML
configuration file or a Java annotation.</p>

<p>Sapphire provides XML binding and bi-directional synchronization with source view. Using Sapphire
facilities, these editor include validation, browsing for possible values and cross-navigation to
source and other referenced locations.</p>

<p>While the primary goal is to deliver the editors, a semantic model is created as part of 
implementing any editor with Sapphire. Whether this model is exposed as public API will depend on 
requirements that interested parties bring to the table.</p>

<p>The editors are not currently envisioned as extensible. Their nature is scoped by Java EE specifications.
However, if interested parties bring extensibility scenarios to the table, these will be considered.</p>

<p><a href="http://www.eclipse.org/sapphire/releases/0.3/documentation/introduction/index.html">Introduction to Sapphire</a></p>

<h2>Why Eclipse?</h2> 

<p>This proposal is a natural extension of WTP Java EE Tools project, that brings functionality needed
by users of that tooling. This functionality is currently only available in commercial products. By being at 
Eclipse, this functionality can eventually be included in EPP packages such as Eclipse IDE for Java EE 
Developers and due the safety net provided by the Eclipse IP process, this functionality can be more easily
adopted by third party IDE package builders.</p> 
 
<h2>Code Contribution</h2>

<p>The work on these features is currently taking place inside Sapphire project as a sample, where a
partial implementation of the web.xml editor already exists.</p>

<p><img src="screen-capture-1.png"/></p>

<p><a href="http://www.eclipse.org/sapphire/samples/jee/demo-1/">Screencast</a><br/>
<a href="http://dev.eclipse.org/viewcvs/viewvc.cgi/org.eclipse.sapphire/plugins/org.eclipse.sapphire.samples.jee/?root=Technology_Project">Source Repository</a></p>

<h2>Committers</h2>

<p>The following individuals are proposed as initial committers to the project:</p>

<dl>
	<dt>Konstantin Komissarchik, Oracle</dt>
	<dd>Konstantin is the project lead for the Sapphire project and is a committer on several WTP projects.
</dl>

<h2>Mentors</h2>

<p>The following Architecture Council members will mentor this
project:</p>

<ul>
	<li>Chris Aniszczyk</li>
	<li>Neil Hauge</li>
</ul>

<h2>Interested Parties</h2>

<p>The following individuals, organizations, companies and projects have 
expressed interest in this project:</p>

<ul>
    <li>Chuck Bridgham (IBM)</li>
    <li>Kaloyan Raev (SAP)</li>
    <li>Neil Hauge (Oracle)</li>
    <li>Jesper Steen M&uuml;ller</li>
	<li>Eclipse Java EE Tools Project</li>
	<li>Oracle (for Enterprise Pack for Eclipse inclusion)</li>
</ul>

<h2>Namespace</h2>

<p>org.eclipse.jst.jee.config</p>

<h2>Project Scheduling</h2>

<p>The plan is to deliver editors for Web, EAR and EJB modules in time for Juno release in 2012.</p>

<p>This project will remain in incubation until the editors are sufficiently mature
and Sapphire itself exits incubation. In the meantime, the project will produce
regular releases and join the release trains. After graduation, this project may
merge into the main Java EE Tools project.</p>

<h2>Changes to this Document</h2>

<table>
	<tr>
		<th>Date</th>
		<th>Change</th>
	</tr>
	<tr>
		<td>2011-06-14</td>
		<td>Document created</td>
	</tr>
	<tr>
		<td>2011-06-16</td>
		<td>Added "why eclipse" section and revised the "interested parties" section.</td>
	</tr>
	<tr>
		<td>2011-06-17</td>
		<td>Listed mentors; more entries under interested parties; added screencast.</td>
	</tr>
	<tr>
		<td>2011-06-20</td>
		<td>One more interested party; wording improvements; screen capture of the editor; link to Sapphire intro.</td>
	</tr>
	<tr>
		<td>2011-06-21</td>
		<td>More description on Sapphire capabilities.</td>
	</tr>
</table>
</body><html><body></body></html>
<html><body></body></html>