<?xml version="1.0" encoding="UTF-8"?>
<!--
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>
    <title>Pluto Subprojects</title>
    <author email="ddewolf@apache.org">David DeWolf</author>
  </properties>
  
  <body>
    <section name="Pluto Subprojects">
      
      <p>
        Pluto 1.1 utilizes Maven 2 as it's project management and build
        automation tool.  Pluto follows maven's best practices and is organized
        into modules or subprojects.
      </p>
      
      <subsection name="Container Subprojects">
        <p>
          <ul>
            <li>
              <b>Pluto Container:</b>
              The Pluto Container is the core compontent of the Apache Pluto
              project. All other modules either support the development. The
              Pluto Container is the reference implementation of the Portlet
              Specification.
            </li>
            <li>
              <b>Pluto Tags:</b>
              The Java Portlet Tag Library implementation which is provided
              with the container.
            </li>
          </ul>
        </p>
      </subsection>
      
      <subsection name="Portal/Testing Subprojects">
        <p>
          <ul>
            <li>
              <b>Pluto Portal Driver:</b>
              A driver library for the Pluto Portlet Container. Provides service
              implementations and utilities for implementing a portal which
              utilizes the container.
            </li>
            <li>
              <b>Pluto Portal:</b>
              The user interface components (web application) of the Pluto
              Portal. The pluto portal is a simple portal application which
              embeds the portal. The portal is not meant to be a full enterprise
              portal, but instead is meant to be an example of how to embed the
              container and a lightweight environment for developing and testing
              portlets.
            </li>
            <li>
              <b>Pluto Testsuite:</b>
              A test portlet which can be used to exercise and test any portlet
              container.
            </li>
          </ul>
        </p>
      </subsection>
      
      <subsection name="Libraries and Supporting Subprojects">
        <p>
          <ul>
            <li>
              <b>Pluto Descriptor API:</b>
              A domain model which represents the deployment descriptors read
              by the portlet container.  Contains service interfaces for reading
              and writing portlet.xml and web.xml.
            </li>
            <li>
              <b>Pluto Descriptor Impl:</b>
              The default implementation of the Pluto Descriptor API Subproject.
              The default implementation utilzes castor for reading and writing
              portlet and web application descriptors.
            </li>
            <li>
              <b>Pluto Optional Services:</b>
              Provides optional implementations of the Pluto Container Services.
              Includes database implementations of the PortletPreferencesService
              and the UserAttributeService.
            </li>
          </ul>
        </p>
      </subsection>
      
      <subsection name="Utilities and Tools (for working with the Pluto Portal)">
        <p>
          <ul>
            <li>
              <b>Pluto Util:</b>
              Utilities for working with the Pluto Portal. Includes libraries
              for installing pluto, assembling portlet applications for
              deployment in pluto, deploying to pluto, and publishing portlets
              to pluto.
            </li>
            <li>
              <b>Maven Plugin:</b>
              Provides Maven goals for utilizing the Pluto utilities. Install
              the portal within a servlet container, assemble portlets, deploy
              portlets, and publish portlets to th Pluto Portal.
            </li>
            <li>
              <b>Ant Tasks:</b>
              Ant tasks which allow developers to utilize the Pluto utilities
              within ant. Currently supports assembling wars for deployment
              within pluto.
            </li>
          </ul>
        </p>
      </subsection>
      
    </section>
  </body>
  
</document>

