<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>About</title></head><body lang="EN-US">
<h2>About This Content</h2>
 
<p>June, 2008</p>	
<h3>License</h3>

<p>The Eclipse Foundation makes available all content in this plug-in ("Content").  Unless otherwise 
indicated below, the Content is provided to you under the terms and conditions of the
Eclipse Public License Version 1.0 ("EPL").  A copy of the EPL is available 
at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
For purposes of the EPL, "Program" will mean the Content.</p>

<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
being redistributed by another party ("Redistributor") and different terms and conditions may
apply to your use of any object code in the Content.  Check the Redistributor's license that was 
provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
indicated below, the terms and conditions of the EPL still apply to any source code in the Content
and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
		
<h3>Third Party Content</h3>
<p>The Content includes items that have been sourced from third parties as set out below. If you 
did not receive this Content directly from the Eclipse Foundation, the following is provided 
for informational purposes only, and you should look to the Redistributor's license for 
terms and conditions of use.</p>

<h4>Cactus 1.7.2</h4> 

<p>The plug-in is accompanied by Cactus 1.7.2 (&quot;Cactus&quot;) developed by the Apache Software Foundation as part of the Jakarta Project.
Your use of Cactus is governed by the terms and conditions of the Apache License, Version 2.0 (&quot;Apache License&quot;).
A copy of the Apache License can be found in <a href="about_files/LICENSE-2.0.txt">about_files/LICENSE-2.0.txt</a>
and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a>.
The Cactus binary code be can found in the following files located in the lib directory of the plug-in:</p>

<ul>
	<li>cactus-1.7.2.jar</li>
</ul>

<p>Source code for Cactus is available at <a href="http://jakarta.apache.org/cactus/">http://jakarta.apache.org/cactus/</a>.</p>

<p>Cactus also includes:</p>

<blockquote>
<h4>AspectJ runtime 1.2.1</h4>

<p>Your use of the AspectJ runtime is governed by the terms and conditions of the EPL.  The AspectJ binary code can be found in
the following files located in the lib directory of the plug-in:</p>

<ul>
	<li>aspectjrt-1.2.1.jar</li>
</ul>

<p>Source code for AspectJ is available at <a href="http://www.eclipse.org/aspectj/">http://www.eclipse.org/aspectj/</a>.</p>

<h4>Commons HTTP Client 2.0.2</h4>

<p>Your use of Commons HTTP Client 2.0.2 (&quot;Commons HTTP Client&quot;) is governed by the terms and conditions of the Apache License, Version 2.0 (&quot;Apache License&quot;).
A copy of the Apache License can be found in <a href="about_files/LICENSE-2.0.txt">about_files/LICENSE-2.0.txt</a>
and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a>.
The Commons HTTP Client binary code can be found in the following files located in the lib directory of the plug-in:</p>

<ul>
	<li>commons-httpclient-2.0.2.jar</li>
</ul>

<p>Source code for Commons HTTP Client is available at <a href="http://jakarta.apache.org/commons/httpclient/">http://jakarta.apache.org/commons/httpclient/</a>.</p>

<h4>Commons Logging 1.0.4</h4>

<p>The plug-in includes Commons Logging 1.0.4 (&quot;Commons Logging&quot;) developed by the Apache Software Foundation as part of the Jakarta project.  Therefore:</p>

<blockquote>
This product includes software developed by the Apache Software Foundation (<a href="http://www.apache.org/">http://www.apache.org/</a>).
</blockquote>

<p>The Commons Logging binary code can be found in the following files located in the lib directory of the plug-in.</p>

<ul>
	<li>commons-logging-1.0.4.jar</li>
</ul>

<p>Commons Logging is:</p>

<blockquote>Copyright (c) 1999-2003 The Apache Software Foundation. All rights reserved.</blockquote>

<p>Your use of the Commons Logging code is subject to the terms and conditions of the Apache Software License 1.1 which is available at
<a href="http://jakarta.apache.org/LICENSE">http://jakarta.apache.org/LICENSE</a>.  More specifically:</p>

<blockquote>
	1. Redistributions of source code must retain the above copyright notice, this list of<br>
	conditions and the following disclaimer.<br>
<br>
	2. Redistributions in binary form must reproduce the above copyright notice, this list of<br>
	conditions and the following disclaimer in the documentation and/or other materials<br>
	provided with the distribution.<br>
<br>
	3. The end-user documentation included with the redistribution, if any, must include the<br>
	following acknowledgment:<br>
	<blockquote>
		&quot;This product includes software developed by the Apache Software Foundation<br>
		(<a href="http://www.apache.org/">http://www.apache.org/</a>).&quot;
	</blockquote>
	Alternately, this acknowledgment may appear in the software itself, if and wherever such<br>
	third-party acknowledgments normally appear.<br>
<br>
	4. The names &quot;The Jakarta Project&quot;, &quot;Commons&quot; and &quot;Apache Software Foundation&quot;<br>
	must not be used to endorse or	promote products derived from this software without prior<br>
	written permission. For written permission, please contact <a href="mailto:apache@apache.org">apache@apache.org</a>.<br>
<br>
	5. Products derived from this software may not be called &quot;Apache&quot;, nor may &quot;Apache&quot; appear<br>
	in their name, without prior written permission of the Apache Software Foundation.<br>
<br>
	THIS SOFTWARE IS PROVIDED &quot;AS IS&quot; AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT<br>
	LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR<br>
	PURPOSE ARE	DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ITS<br>
	CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR<br>
	CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR<br>
	SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON<br>
	ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,	OR TORT (INCLUDING<br>
	NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT	OF THE USE OF THIS SOFTWARE, EVEN IF<br>
	ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</blockquote>

<p>Source code for Commons Logging is available at <a href="http://jakarta.apache.org/commons/logging/">http://jakarta.apache.org/commons/logging/</a>.</p>

<h4>JUnit 3.8.1</h4>

<p>Your use of JUnit 3.8.1 (&quot;JUnit&quot;) is governed by the the terms and conditions of the Common Public License Version 1.0 (&quot;CPL&quot;).
A copy of the CPL is included in <a href="about_files/cpl-v10.html">about_files/cpl-v10.html</a> and is also available at
<a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>.

<p>The JUnit binary code can be found in the following files located in the lib directory of the plug-in.</p>

<ul>
	<li>junit-3.8.1.jar</li>
</ul>

</blockquote>
</body>
</html>