<?xml version="1.0"?>
<!--
Copyright 2004 The Apache Software Foundation
Licensed  under the  Apache License,  Version 2.0  (the "License");
you may not use  this file  except in  compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed  under the  License is distributed on an "AS IS" BASIS,
WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
implied.

See the License for the specific language governing permissions and
limitations under the License.
-->
<document>
  <properties>
  <author email="ddewolf.AT.apache.D0T.org">David DeWolf</author>
  <title>Pluto User Guide</title>
</properties>

<body>
<section name="User Guide">
<subsection name="Prerequisites">
  <p>It is expected that the reader of the user guide documentation
     should has an understanding of Java Web Application development, and 
     Java Portlet Development.</p>
</subsection>

<subsection name="Pluto - The Pluto Container">
<p>
   Pluto is the reference implementation of the Portlet Specification.
   It is a portlet container which manages the lifecycle and request
   processing of portlets which adhere to the specification.
</p>
   
<p>
   In an of itself, Pluto is not very usefull to the end user.
   As a container, it does not have any understanding of portlet
   invocation, portlet aggregation or other portal specific features. 
</p>

<p>
  For more information on how to integrate Pluto into your portal, 
  please see the <A href="../developer/integration.html">developer guides</A>.
</p>

</subsection>

<subsection name="Pluto Portal Driver - The Test Portal">
<p>
  The Pluto Portal Driver is a simple portal implementation that
  is provided for convenience sake. It's purpose is to provide
  aggregation support so that Pluto may be easily tested, and
  portlets may be easily developed.
</p>

<p>
  For information on how to use, configure, and customize the 
  Portal Driver, please see the 
  <A href="portal.html">Portal Driver User Guide</A>.
</p>

</subsection>

<subsection name="Pluto TestSuite - The Test Portlet Application">
<p>
  The Pluto TestSuite is a Portlet Application which can be used to test
  Portlet Implementations.  The TestSuite tests several basic portlet
  functions and is a quick and dirty way to test for Portlet Specification
  compliance.  While a quick test of a portal using the testsuite won't 
  garuntee compliance, it will help flag any notable incompliance.
</p>

<p>
  For information on how to use and configure the TestSuite, please see
  the <A href="testsuite.html">TestSuite User Guide</A>
</p>
</subsection>

</section>

</body>
</document>

