You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2004/01/27 05:20:52 UTC

svn commit: rev 6313 - in incubator/directory/sitedocs/trunk/sitedocs: . src src/etc xdocs xdocs/community xdocs/community/history xdocs/community/process xdocs/community/who xdocs/developing xdocs/doc xdocs/images xdocs/product xdocs/product/components xdocs/product/containers xdocs/product/framework xdocs/related xdocs/sandbox

Author: akarasulu
Date: Mon Jan 26 20:20:51 2004
New Revision: 6313

Added:
   incubator/directory/sitedocs/trunk/sitedocs/
   incubator/directory/sitedocs/trunk/sitedocs/maven.xml
   incubator/directory/sitedocs/trunk/sitedocs/project.properties
   incubator/directory/sitedocs/trunk/sitedocs/project.xml
   incubator/directory/sitedocs/trunk/sitedocs/src/
   incubator/directory/sitedocs/trunk/sitedocs/src/etc/
   incubator/directory/sitedocs/trunk/sitedocs/src/etc/site.jsl
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/.htaccess
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/.navigation.xml.swp   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/history/
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/history/changes.txt
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/history/index.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/history/navigation.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/index.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/navigation.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/code-standards.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/development.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/index.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/mission.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/navigation.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/patches.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/pmc-votes.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/pmc.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/release.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/who/
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/who/akarasulu.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/who/index.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/who/mcconnell.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/who/navigation.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/cvs.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/authors.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/compatiblity.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/conclusion.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/decomposing.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/framework.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/implementing.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/index.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/introduction.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/navigation.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/strategies.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/doc/
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/doc/articles.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/doc/index.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/doc/navigation.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/doc/wiki.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/download.cgi
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/download.html
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/apache-avalon-logo.png   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/avalon-logo.svg
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/avalon-power.png   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/deployment.gif   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/group-logo.gif   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/icon.png   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/merlin.gif   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/project-logo.gif   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/server-01.gif   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/server-02.gif   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/server-03.gif   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/server-04.gif   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/tortoise-cvs-screenshot.gif   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/tortoisecvs-checkout.jpg   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/tortoisecvs-settings.jpg   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/wincvs-checkout.jpg   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/wincvs-preferences.jpg   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/wincvs-settings.jpg   (contents, props changed)
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/index.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/license.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/mailing-lists.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/navigation.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/news.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/components/
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/components/index.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/components/navigation.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/containers/
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/containers/index.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/containers/navigation.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/framework/
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/framework/index.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/framework/navigation.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/index.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/navigation.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/related/
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/related/apache.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/related/external.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/related/index.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/related/navigation.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/related/powered.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/sandbox/
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/sandbox/index.xml
   incubator/directory/sitedocs/trunk/sitedocs/xdocs/sandbox/navigation.xml
Log:
mainly this is a copy of the Avalon site - I'll change it gradually

Added: incubator/directory/sitedocs/trunk/sitedocs/maven.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/maven.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<project
+  xmlns:j="jelly:core"
+  xmlns:ant="jelly:ant"
+  xmlns:maven="jelly:maven"
+  xmlns:deploy="deploy"
+  xmlns:m="maven">
+
+  <preGoal name="site:site">
+    <copy toDir="${basedir}/target/docs/download.cgi" 
+       file="${basedir}/xdocs/download.cgi"/>
+    <copy toDir="${basedir}/target/docs/download.html" 
+       file="${basedir}/xdocs/download.html"/>
+    <copy toDir="${basedir}/target/docs/.htaccess" 
+       file="${basedir}/xdocs/.htaccess"/>
+  </preGoal>
+
+  <!-- default maven.xml file -->
+
+   <!-- generate avalon meta-data and include any needed jars -->
+   <preGoal name="jar:jar">
+    <attainGoal name="avalon:meta"/>
+
+    <j:forEach var="dep" items="${pom.dependencies}">
+     <j:if test="${dep.getProperty('jar.include')=='true'}">
+     <ant:unjar
+      dest="${maven.build.dest}"
+      src="${maven.repo.local}/${dep.artifactDirectory}/jars/${dep.artifact}"/>
+     </j:if>
+    </j:forEach>
+  
+  </preGoal>
+
+  <!-- create an 'uberjar' -->
+  <goal name="jar:complete">
+    <attainGoal name="jar:jar"/>
+    <ant:delete dir="${maven.build.dir}/complete_tmp"/>
+    <ant:mkdir dir="${maven.build.dir}/complete_tmp"/>
+    <ant:unjar
+       dest="${maven.build.dir}/complete_tmp"
+       src="${maven.build.dir}/${maven.final.name}.jar"/>
+    <j:forEach var="dep" items="${pom.dependencies}">
+      <ant:unjar
+       dest="${maven.build.dir}/complete_tmp"
+       src="${maven.repo.local}/${dep.artifactDirectory}/jars/${dep.artifact}"/>
+    </j:forEach>
+    <ant:jar
+      jarfile="${maven.build.dir}/${pom.artifactId}-complete-${pom.currentVersion}.jar"
+      basedir="${maven.build.dir}/complete_tmp"
+      index="true"/>
+    <ant:delete dir="${maven.build.dir}/complete_tmp/"/>
+  </goal>
+
+</project>

Added: incubator/directory/sitedocs/trunk/sitedocs/project.properties
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/project.properties	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,5 @@
+maven.xdoc.date=left
+maven.ui.banner.background=#FFFFFF
+maven.xdoc.includeProjectDocumentation=no
+maven.xdoc.poweredby.image=
+maven.xdoc.jsl = file:/${basedir}/src/etc/site.jsl

Added: incubator/directory/sitedocs/trunk/sitedocs/project.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/project.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project>
+  <pomVersion>3</pomVersion>
+  <groupId>directory</groupId>
+  <id>directory-sitedocs</id>
+  <name>Apache Directory</name>
+  
+  <organization>
+      <name>The Apache Directory Project</name>
+      <url>http://www.apache.org/~akarasulu/directory</url>
+      <logo>/images/apache-avalon-logo.png</logo>
+  </organization>
+  
+  <inceptionYear>2003</inceptionYear>
+  <package>org.apache.directory.sitedocs</package>
+  <url>http://www.apache.org/~akarasulu/directory</url>
+
+  <issueTrackingUrl>
+    http://nagoya.apache.org/jira/secure/BrowseProject.jspa?id=10400
+  </issueTrackingUrl>
+  <siteAddress>cvs.apache.org</siteAddress>
+  <siteDirectory>/home/akarasulu/public_html/directory</siteDirectory>
+  <distributionDirectory>
+      /home/akarasulu/public_html/directory/dist
+  </distributionDirectory>
+  
+  <shortDescription>Apache Directory Project</shortDescription>
+  
+  <description>
+    Long Directory Project description from inside POM.
+  </description>
+  
+  <mailingLists>
+    <mailingList>
+      <name>Directory Developer List</name>
+      <subscribe>
+            directory-dev-subscribe@incubator.apache.org
+      </subscribe>
+      <unsubscribe>
+            directory-dev-unsubscribe@incubator.apache.org
+      </unsubscribe>
+      <archive>
+            http://nagoya.apache.org/eyebrowse/SummarizeList?listId=181
+      </archive>
+    </mailingList>
+  </mailingLists>
+  
+  <developers/>
+  
+  <licenses>
+    <license>
+      <name>Apache 1.1 License</name>
+      <url>
+http://cvs.apache.org/viewcvs.cgi/incubator/directory/LICENSE.txt?rev=1369&amp;root=Apache-SVN&amp;view=markup
+        </url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>
+  <dependencies/>
+  <reports></reports>
+</project>

Added: incubator/directory/sitedocs/trunk/sitedocs/src/etc/site.jsl
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/src/etc/site.jsl	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,631 @@
+<?xml version="1.0"?>
+<!-- stylesheet to be used -->
+<jsl:stylesheet select="$doc"
+  xmlns:define="jelly:define"
+  xmlns:j="jelly:core"
+  xmlns:jsl="jelly:jsl"
+  xmlns:log="jelly:log"
+  xmlns:util="jelly:util"
+  xmlns:x="jelly:xml"
+  xmlns:doc="doc"
+  xmlns="dummy" trim="false">
+  <jsl:template match="document" trim="false">
+    <j:useBean var="navbean" class="org.apache.maven.NavBean"/>
+	<j:set var="location" value="${outFile.substring(destdir.length())}"/>
+	<util:replace var="location" oldChar="\" newChar="/" value="${location}"/>
+
+    <!-- Stores location for publish date / version -->
+    <j:set var="date">${maven.xdoc.date}</j:set>
+      
+	<j:setProperties 
+		object="${navbean}"
+  		document="${doc}"
+  		location="${location}"/>
+	
+	<x:doctype name="html"
+      publicId="-//W3C//DTD XHTML 1.0 Transitional//EN"
+      systemId="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
+
+    <html>
+      <head>
+        <j:set var="docTitle">
+          <x:expr select="./properties/title"/>
+        </j:set>
+        <x:if select="$nav/title">
+          <title>
+            <x:expr select="$nav/title"/> - ${docTitle}
+          </title>
+        </x:if>
+        <x:if select="not($nav/title)">
+          <title>${pom.name} - ${docTitle}</title>
+        </x:if>
+        
+        <style type="text/css"><![CDATA[
+          @import url("${relativePath}/style/tigris.css");
+          @import url("${relativePath}/style/maven.css");
+        ]]></style>
+        
+        <util:file var="projectCssFile" name="${maven.docs.src}/style/project.css"/>
+        <j:if test="${projectCssFile.exists()}">
+          <style type="text/css"><![CDATA[
+            @import url("${relativePath}/style/project.css");
+          ]]></style>
+        </j:if>
+        
+        <!-- FIXME: once someone works out how to stop this breaking
+        <x:element name="script"><x:attribute name="type">text/javascript</x:attribute>
+          if (document.layers) {
+                document.writeln(''+
+                '<link rel="stylesheet" type="text/css" href="${relativePath}/style/ns4_only.css" media="screen" /><link rel="stylesheet" type="text/css" href="${relativePath}/style/maven_ns4_only.css" media="screen"/>');
+              }
+            </x:element>
+        -->
+        <link rel="stylesheet" type="text/css" href="${relativePath}/style/print.css" media="print"/>
+        <meta http-equiv="Content-Type" content="text/html; charset=${outputencoding}"></meta>
+        <x:forEach var="author" select="./properties/author">
+          <meta name="author" content="${author.text}"/>
+          <meta name="email" content="${author.attribute('email').value}"/>
+        </x:forEach>
+        
+        <jsl:applyTemplates select="$doc/document/head/*"/>
+        
+      </head>
+
+      <x:element name="body"><j:whitespace trim="true">
+        <x:attribute name="class">composite</x:attribute>
+        <x:forEach var="attr" select="$doc/document/body/@*">
+          <x:attribute name="${attr.name}">${attr.value}</x:attribute>
+        </x:forEach>
+        </j:whitespace>
+
+        <div id="banner">
+          <table border="0" cellspacing="0" cellpadding="8" width="100%" height="103">
+            <tr>
+              <!-- organization logo -->
+              <td>
+                <j:set var="logo" value="${pom.organization.logo}"/>
+                <j:if test="${!empty(logo)}">
+                  <!-- set url to org or project url -->
+                  <j:set var="url" value="${pom.organization.url}"/>
+                  <j:if test="${!empty(url)}">
+                    <j:set var="home" value="${pom.organization.url}"/>
+                  </j:if>
+                  <j:if test="${empty(url)}">
+                    <j:set var="home" value="${pom.url}"/>
+                  </j:if>
+                  <!-- set image to relative or complete -->
+                  <j:set var="image" value="${pom.organization.logo}"/>
+                  <j:if test="${!image.startsWith('http://')}">
+                    <j:set var="image" value="${relativePath}${image}"/>
+                  </j:if>
+                  <a href="${home}">
+                    <img src="${image}" align="left" alt="${pom.organization.name}" border="0"/>
+                  </a>
+                </j:if>
+              </td>
+
+              <td></td>
+              <!--
+              <td>
+                <div align="right" id="login">
+                  <j:set var="logo" value="${pom.logo}"/>
+                  <j:if test="${logo != null and logo != ''}">
+                    <j:set var="image" value="${pom.logo}"/>
+                    <j:if test="${!image.startsWith('http://')}">
+                      <j:set var="image" value="${relativePath}${image}"/>
+                    </j:if>
+                    <a href="${pom.url}">
+                      <img src="${image}" align="right" alt="${pom.name}" border="0"/>
+                    </a>
+                  </j:if>
+                </div>
+              </td>
+              -->
+
+            </tr>
+          </table>
+        </div>
+        <div id="breadcrumbs">
+          <table border="0" cellspacing="0" cellpadding="4" width="100%">
+            <tr>
+              <j:if test="${date == 'left'}">
+                <j:set var="version" value="${maven.xdoc.version}"/>
+                <td>Last published: ${build.date}
+                  <j:if test="${!empty(version)}">| Doc for ${version}</j:if>
+                </td>
+              </j:if>
+              <td>
+                <div align="right">
+                  <j:if test="${date == 'right'}">
+                    Last published: ${build.date}
+                    <x:if select="$nav/body/links">|</x:if>
+                  </j:if>
+                  <!-- render links -->
+                  <x:if select="$nav/body/links">
+                    <jsl:applyTemplates select="$nav/body/links"/>
+                  </x:if>
+                  <x:if select="not($nav/body/links)">
+                    <!-- FIXME &nbsp; -->
+                  </x:if>
+                </div>
+              </td>
+            </tr>
+          </table>
+        </div>
+        <!-- Body of the page -->
+        <table border="0" cellspacing="0" cellpadding="8" width="100%"> <!--id="main" -->
+          <tr valign="top">
+            <td id="leftcol" width="20%">
+              <div id="navcolumn">
+                <j:if test="${date == 'navigation-top'}">
+                  <div>
+                    <small>Last published: ${build.date}</small>
+                  </div>
+                </j:if>
+
+                <x:if select="$nav">
+                  <jsl:applyTemplates select="$nav/body/menu[not(@type) | @type='header'] | $nav/body/search"/>
+                </x:if>
+                
+                <!-- Standard Maven Navigation -->
+                <j:set var="fileName">${file}</j:set>
+
+                <!-- 
+                 ! Check to see if the user wishes to include the
+                 ! maven-generated docs on their site.
+                 !-->
+                <j:if test="${includeProjectDocumentation.equals('yes')}">
+                <div>
+                  <strong>Project Documentation</strong>
+                  <!--
+                  <div>
+                    <small>
+                      <a href="${relativePath}/index.html">About ${pom.name}</a>
+                    </small>
+                  </div>
+                  -->
+                  <div>
+                    <small>
+                      <a href="${relativePath}/project-info.html">Project Info</a>
+                    </small>
+                    <util:tokenize var="projectInfoFiles" delim=",">${maven.xdoc.projectInfo}</util:tokenize>
+                    <j:forEach var="infoFile" items="${projectInfoFiles}">
+                      <j:if test="${relativePath == '.' and fileName.endsWith(infoFile)}">
+                        <div>
+                          <small>
+                            <a href="${relativePath}/mail-lists.html">Mailing Lists</a>
+                          </small>
+                        </div>
+                        <div>
+                          <small>
+                            <a href="${relativePath}/team-list.html">Project Team</a>
+                          </small>
+                        </div>
+                        <div>
+                          <small>
+                            <a href="${relativePath}/dependencies.html">Dependencies</a>
+                          </small>
+                        </div>
+                        <j:if test="${!empty(pom.repository.url)}">
+                          <div>
+                            <small>
+                              <a href="${relativePath}/cvs-usage.html">Source Repository</a>
+                            </small>
+                          </div>
+                        </j:if>
+                        <j:if test="${!empty(pom.issueTrackingUrl)}">
+                          <div>
+                            <small>
+                              <a href="${relativePath}/issue-tracking.html">Issue Tracking</a>
+                            </small>
+                          </div>
+                        </j:if>
+                      </j:if>
+                    </j:forEach>
+                  </div>
+                  <div>
+                    <small>
+                      <a href="${relativePath}/maven-reports.html">Project Reports</a>
+                    </small>
+                    
+					<!--
+                     | Check to see if we need to include the report
+                     | links in this document.  The only time we
+                     | need to do this is when the current document
+                     | either the maven-reports.xml doc (the page
+                     | is displayed when clicking on Project
+                     | Reports) or when the current document is one
+                     | of the actual reports (in which case we want
+                     | to leave the project report links expanded.
+                     |-->
+                    <j:set var="includeReportLinks" value="false"/>
+                    <j:forEach var="report" items="${reports}">
+                      <j:set var="linkWithXmlExt" value="${report.link}.xml"/>
+                      <j:if test="${relativePath == '.' and (fileName.endsWith('maven-reports.xml') or fileName.endsWith(linkWithXmlExt))}">
+                      <j:set var="includeReportLinks" value="true"/>
+                      </j:if>
+                    </j:forEach>
+                    
+                    <!--
+                     | If we need to include the report links, then
+                     | do so.  This is determined by the above
+                     | block.
+                     |-->
+                    <j:if test="${includeReportLinks == 'true'}">
+                      <j:forEach var="report" items="${reports}">
+                        <div>
+                          <small>
+                            <a href="${relativePath}/${report.link}.html">
+                              ${report.name}
+                            </a>
+                          </small>
+                        </div>
+                      </j:forEach>
+                    </j:if>
+                  </div>
+                  <j:if test="${pom.reports.isEmpty()}">
+                    <j:if test="${sourcesPresent}">
+                      <div>
+                        <small>
+                          <a href="${relativePath}/apidocs/index.html">JavaDocs</a>
+                        </small>
+                      </div>
+                      <div>
+                        <small>
+                          <a href="${relativePath}/xref/index.html">Source XReference</a>
+                        </small>
+                      </div>
+                      <j:if test="${unitTestSourcesPresent == 'true'}">
+                        <div>
+                          <small>
+                            <a href="${relativePath}/xref-test/index.html">Test XReference</a>
+                          </small>
+                        </div>
+                      </j:if>
+                    </j:if>
+                  </j:if>
+                  <!--
+                  <j:set var="devProcess" value="false"/>
+                  <util:available file="${maven.docs.src}/development-process.xml">
+                    <j:set var="devProcess" value="true"/>
+                  </util:available>
+                  <j:if test="${devProcess}">
+                    <div>
+                      <small>
+                        <a href="${relativePath}/development-process.html">Development Process</a>
+                      </small>
+                    </div>
+                  </j:if>
+                  <j:if test="${!devProcess}">
+                    <div>
+                      <small>
+                        <j:set var="devProcess">${maven.xdoc.developmentProcessUrl}</j:set>
+                        <a href="${devProcess}">Development Process</a>
+                      </small>
+                    </div>
+                  </j:if>
+                  -->
+                </div>
+              </j:if>
+              
+                <j:set var="poweredbyimage">${maven.xdoc.poweredby.image}</j:set>
+                <j:set var="poweredbytitle">${maven.xdoc.poweredby.title}</j:set>
+                <j:set var="poweredbyurl">${maven.xdoc.poweredby.url}</j:set>
+                <j:if test="${!empty(poweredbyimage)}">
+                	<div style="margin-top: 20px; width: 100%; text-align: center;">
+                		<a href="${poweredbyurl}" title="${poweredbytitle}"><img alt="${maven.xdoc.poweredby.title}" style="border: 1px solid black" src="${relativePath}/images/logos/${poweredbyimage}"/></a>
+                	</div>
+                </j:if>
+              
+                <j:if test="${date == 'navigation-bottom'}">
+                  <div>
+                    <small>Last published: ${build.date}</small>
+                  </div>
+                </j:if>
+              </div>
+            </td>
+            <td rowspan="2">
+              <div id="bodycol">
+                <!-- Insert MAIN body here -->
+                <div class="app">
+                  <!-- FIXME really shouldn't use $doc, but jelly loses it's context again -->
+                  <jsl:applyTemplates select="$doc/document/body/section"/>
+                  <jsl:applyTemplates select="$doc/document/body/glossary" />
+                  <jsl:applyTemplates select="$doc/document/body/release" />
+                  <jsl:applyTemplates select="$doc/document/body/changelog" />
+                  <jsl:applyTemplates select="$doc/document/body/taskList" />
+                  <jsl:applyTemplates select="$doc/document/body/goals" />
+                </div>
+              </div>
+            </td>
+          </tr>
+        </table>
+        <div id="footer">
+          <table style='width:100%' border="0" cellspacing="0" cellpadding="4">
+            <jsl:applyTemplates select="$nav/body/footer"/>
+            <tr>
+              <td>
+                <j:if test="${!empty(pom.organization.name)}">
+                  <j:if test="${!empty(pom.inceptionYear)}">
+                    <j:if test="${pom.inceptionYear == mavenCurrentYear}">
+                      &#169; ${mavenCurrentYear}, ${pom.organization.name}
+                    </j:if>
+                    <j:if test="${pom.inceptionYear != mavenCurrentYear}">
+                      &#169; ${pom.inceptionYear}-${mavenCurrentYear}, ${pom.organization.name}
+                    </j:if>
+                  </j:if>
+                  <j:if test="${empty(pom.inceptionYear)}">
+                    &#169; ${mavenCurrentYear}, ${pom.organization.name}
+                  </j:if>
+                </j:if>
+
+                <j:if test="${date == 'bottom'}">
+                  - Last published: ${build.date}
+                </j:if>
+              </td>
+              <j:if test="${date == 'bottom-right'}">
+                <td style='width: auto; text-align:right'>Last published: ${build.date}</td>
+              </j:if>
+            </tr>
+          </table>
+        </div>
+      </x:element>
+    </html>
+  </jsl:template>
+
+  <!-- process the properties of the doc -->
+  <jsl:template match="properties" trim="false">
+    <!-- stick head block here later -->
+  </jsl:template>
+
+  <!-- Process a menu for the navigation bar -->
+  <jsl:template match="menu" trim="false">
+    <div>
+      <strong><x:expr select="@name"/></strong>
+      <jsl:applyTemplates select="item"/>
+    </div>
+  </jsl:template>
+
+  <jsl:template match="item" trim="false">
+    <x:set var="item" select="."/>
+    <x:set var="_name" select="string(@name)"/>
+    <x:set var="_link" select="string(@href)"/>
+    <x:set var="_img" select="string(@img)"/>
+
+    <div>
+      <small>
+      	<j:if test="${navbean.isSelected(item.get(0))}">
+      		<b><doc:itemLink name="${_name}" link="${_link}" img="${_img}"/></b>
+      	</j:if>
+      	<j:if test="${!navbean.isSelected(item.get(0))}">
+      		<doc:itemLink name="${_name}" link="${_link}" img="${_img}"/>
+      	</j:if>
+      </small>
+	  <j:if test="${!navbean.isCollapsed(item.get(0))}">
+        <jsl:applyTemplates select="item"/>
+      </j:if>
+    </div>
+  </jsl:template>
+
+  <!-- Process the breadcrumb navbar -->
+  <jsl:template match="links" trim="false">
+    <j:set var="linkCount" value="1"/>
+    <x:forEach var="link" select="item">
+      <j:if test="${linkCount != 1}">|</j:if>
+      <j:set var="_name"><x:expr select="@name"/></j:set>
+      <j:set var="_link"><x:expr select="@href"/></j:set>
+      <doc:itemLink name="${_name}" link="${_link}"/>
+      <j:set var="linkCount" value="${1+linkCount}"/>
+    </x:forEach>
+  </jsl:template>
+
+  <!-- Google site search -->
+  <jsl:template match="search" trim="false">
+    <!-- Search code: http://www.google.com/searchcode.html -->
+    <!-- Google logos: http://www.google.com/stickers.html -->
+    <!-- Terms: http://www.google.com./services/terms_free.html -->
+    <div>
+      <strong>Search ${pom.name}</strong>
+      <form method="get" action="http://www.google.com/search">
+        <a class="navlink" href="http://www.google.com">
+          <img src="http://www.google.com/logos/Logo_25wht.gif" 
+               alt="Google" border="0" />
+        </a><p/>
+        <j:set var="siteURL" value="${pom.url}"/>
+        <!-- google fails on urls that end with / -->
+        <j:if test="${siteURL.endsWith('/')}">
+          <j:set var="URLLength" value="${siteURL.length() - 1}"/>
+          <j:set var="siteURL" value="${siteURL.substring(0, URLLength.intValue())}"/>
+        </j:if>
+        <input type="text" size="15" name="q" maxlength="255" value=""/>
+        <input type="submit" value="Go" name="btnG"/>
+        <input type="hidden" name="domains" value="${siteURL}"/>
+        <input type="hidden" id="search" name="sitesearch" value="${siteURL}"/>
+      </form>
+    </div>
+  </jsl:template>
+
+  <!-- process a documentation section -->
+  <jsl:template match="section" trim="false">
+    <div class="h3">
+      <j:set var="_sectionName"><x:expr select="@name"/></j:set>
+      <j:if test="${!empty(_sectionName)}">
+        <h3>
+          <a name="${_sectionName}">${_sectionName}</a>
+        </h3>
+      </j:if>
+      <jsl:applyTemplates select="*"/>
+    </div>
+  </jsl:template>
+
+  <jsl:template match="subsection" trim="false">
+    <div class="h4">
+      <j:set var="_sectionName"><x:expr select="@name"/></j:set>
+      <j:if test="${!empty(_sectionName)}">
+        <h4>
+          <a name="${_sectionName}">${_sectionName}</a>
+        </h4>
+      </j:if>
+      <jsl:applyTemplates select="*"/>
+    </div>
+  </jsl:template>
+
+  <jsl:template match="source" trim="false">
+    <div id="source">
+      <pre><x:expr select="."/></pre>
+    </div>
+  </jsl:template>
+
+  <jsl:template match="footer" trim="false">
+    <tr>
+      <td>
+        <jsl:applyTemplates select="*"/>
+      </td>
+    </tr>
+  </jsl:template>
+
+  <jsl:template match="table" trim="false">
+    <j:set var="rowcount" value="0"/>
+    <table cellpadding="3" cellspacing="2" border="1" width="100%">
+      <jsl:applyTemplates select="*"/>
+    </table>
+  </jsl:template>
+
+  <jsl:template match="tr" trim="false">
+    <j:choose>
+      <j:when test="${rowMode == 'a'}">
+        <j:set var="rowMode" value="b"/>
+      </j:when>
+      <j:otherwise>
+        <j:set var="rowMode" value="a"/>
+      </j:otherwise>
+    </j:choose>
+
+    <!-- copy attributes FIXME: Shouldn't this only be colspan|rowspan? -->
+    <x:element name="tr"><j:whitespace trim="true">
+      <x:attribute name="class">${rowMode}</x:attribute>
+      <x:forEach var="attr" select="@*">
+        <x:attribute name="${attr.name}">${attr.value}</x:attribute>
+      </x:forEach>
+      <jsl:applyTemplates select="*"/>
+</j:whitespace></x:element>
+  </jsl:template>
+
+  <!--************************-->
+  <!-- glossary documentation -->
+  <!--************************-->
+  <jsl:template match="glossary" trim="false">
+    <jsl:applyTemplates select="glossary-entries/glossary-entry" />
+  </jsl:template>
+      
+  <jsl:template match="glossary-entry" trim="false">
+    <strong><x:expr select="name" /></strong>
+    <br/>
+    <x:expr select="definition" />
+    <p/>
+  </jsl:template>
+
+      <!--************************-->
+      <!-- goals documentation    -->
+      <!--************************-->
+      <jsl:template match="goals" trim="false">
+        <!-- reset row alternation -->
+        <j:set var="rowMode" value="" />
+        <div class="h3">
+          <h3><a name="Goals">Goals</a></h3>
+          <table>
+            <tr width='100%'><th>Goal</th><th>Description</th></tr>
+            <jsl:applyTemplates select="goal"/>
+          </table>
+        </div>
+      </jsl:template>
+      
+      <!-- a goal -->
+        <!-- FIXME: this is copied from tr - there must be a way of
+             calling templates in jsl? -->
+      <jsl:template match="goal" trim="false">
+        <j:choose>
+          <j:when test="${rowMode == 'a'}">
+            <j:set var="rowMode" value="b"/>
+          </j:when>
+          <j:otherwise>
+            <j:set var="rowMode" value="a"/>
+          </j:otherwise>
+        </j:choose>
+        
+        <x:element name="tr"><j:whitespace trim="true">
+          <x:attribute name="class">${rowMode}</x:attribute>
+          <j:set var="_goalName"><x:expr select="./name" /></j:set>
+          <td width='20%'><a name="${_goalName}">${_goalName}</a></td>
+          <td width='80%'><jsl:applyTemplates select="description" /></td>
+</j:whitespace></x:element>
+      </jsl:template>   
+      
+      <jsl:template match="description">
+        <jsl:copy trim="false">
+          <jsl:applyTemplates trim="false"/>
+        </jsl:copy>
+      </jsl:template>
+
+      <!--************************-->
+      <!-- changelog documentation-->
+      <!--************************-->
+      <jsl:template match="changelog" trim="false">
+        <j:set var="rowMode" value="" />
+        <table width="100%">
+          <tr>
+            <th>Date</th><th>Author</th><th>Files/Message</th>
+          </tr>
+          <jsl:applyTemplates select="changelog-entry" />
+        </table>
+      </jsl:template>
+
+      <!-- transform a changelog entry -->
+      <!-- FIXME: tr code copied from above -->
+      <jsl:template match="changelog-entry" trim="false">
+        <j:choose>
+          <j:when test="${rowMode == 'a'}">
+            <j:set var="rowMode" value="b"/>
+          </j:when>
+          <j:otherwise>
+            <j:set var="rowMode" value="a"/>
+          </j:otherwise>
+        </j:choose>
+        
+        <x:element name="tr"><j:whitespace trim="true">
+          <x:attribute name="class">${rowMode}</x:attribute>
+          
+          <td><x:expr select="date" /> <x:expr select="time" /></td>
+          <td><x:expr select="author"/></td>
+          <td><jsl:applyTemplates select="*" />
+            <pre><x:expr select="msg"/></pre>
+          </td>
+</j:whitespace></x:element>
+      </jsl:template>
+
+      <jsl:template match="file">
+        <j:set var="url">${pom.repository.url}<x:expr select="name"/></j:set>
+        <j:set var="revUrl">${url}?<x:expr select="revision"/>&amp;content-type=text/vnd.viewcvs-markup</j:set>
+        <a href="${url}"><x:expr select="name"/></a> - 
+        <a href="${revUrl}">v<x:expr select="revision"/></a>
+        <br/>
+      </jsl:template>
+
+  <!-- remove the space at the end of parsed "a" anchors -->
+  <jsl:template match="a" trim="false">
+    <jsl:copy trim="true">
+      <jsl:applyTemplates trim="true"/>
+    </jsl:copy>
+  </jsl:template>
+
+  <!-- copy any other elements through -->
+  <jsl:template match="*" trim="false">
+    <jsl:copy trim="false">
+      <jsl:applyTemplates trim="false"/>
+    </jsl:copy>
+   </jsl:template>
+
+   <!-- element values don't pass through as text -->
+   <jsl:template match="@*"/>
+
+</jsl:stylesheet>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/.htaccess
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/.htaccess	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,7 @@
+RedirectMatch ^/apps(.*) http://avalon.apache.org/phoenix/applications.html
+RedirectMatch ^/sandbox/meta(.*) http://avalon.apache.org/meta
+RedirectMatch ^/sandbox/merlin(.*) http://avalon.apache.org/merlin
+RedirectMatch ^/sandbox/api(.*) http://avalon.apache.org/merlin/api
+RedirectMatch ^/cornerstone(.*) http://avalon.apache.org/components
+RedirectMatch ^/merlin/starting/installation/3.0(.*) http://avalon.apache.org/merlin/starting/installation
+RedirectMatch ^/merlin/starting/installation/3.2(.*) http://avalon.apache.org/merlin/starting/installation

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/.navigation.xml.swp
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/history/changes.txt
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/history/changes.txt	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE changes PUBLIC "-//APACHE//DTD Changes V1.1//EN" "changes-v11.dtd">
+<changes>
+    <title>Avalon History of Changes</title>
+    <devs>
+        <person name="Federico Barbieri" email="fede@apache.org" id="FB"/>
+        <person name="Berin Loritsch" email="bloritsch@apache.org" id="BL"/>
+        <person name="Peter Donald" email="peter at apache.org" id="PD"/>
+    </devs>
+    <release version="3.1a1" date="29th January 2001">
+        <action dev="BL" type="add">
+            Added in DataSource implementation for use with J2EE style apps.
+        </action>
+        <action dev="PD" type="add">
+            Added the notion of ServerApplication to replace the concept of .bar as a server.
+            A ServerApplication is a isolated environment that manages it's own threads,
+            security, logging, classloading etc. It has a specific layout as documented
+            in Assembly guide. The kernel was refactored to contain ServerApplications
+            rather than Blocks and a lot of support was refactored to support safe separation
+            of ServerApplications. The archives are in .sar format and are similar in many
+            aspects to .war of servlet fame.
+        </action>
+        <action dev="PD" type="add">
+            Refactored thread management so specific thread pools can assigned to specific
+            threads/thread groups in a manner similar to how ContextClassLoader is associated
+            with threads. Thread management was also moved to a new package
+            (org.apache.avalon.util.threads).
+        </action>
+        <action dev="PD" type="update">
+            Modify the packaging of all kernel related files into org.apache.phoenix.
+        </action>
+        <action dev="PD" type="update">
+            Modify the packaging of all blocks/services/demos into package hierarchy
+            org.apache.cornerstone.
+        </action>
+        <action dev="PD" type="add">
+            Added two new services/blocks by refactoring code from tomcat and old SocketServer.
+            There is now a SocketManager and a ConnectionManager. The TLS code is now much improved
+            and there is the beginning of client socket factory. This provides for future client
+            socket code factories for SSL/TLS or SSH1/2 etc. Also adapted SimpleServer to use
+            these methods.
+        </action>
+        <action dev="PD" type="update">
+            Changed config file from per .bar to per .sar and changed name from BAR-INF/&lt;
+            barname&gt;.conf.xml to conf/assembly.xml. It still contains configuration data as
+            well as assembly data but this will be removed in a future revision.
+        </action>
+        <action dev="PD" type="add">
+            Added an extra config file to .sar (conf/server.xml) that is responsible for
+            configuring .sar wide variables. Some examples include security, logging and thread loading.
+        </action>
+        <action dev="PD" type="update">
+            Refactored most of the code to use AbstractLoggable and the corresponding getLogger()
+            method. Also removed the remaining static access to LogKit.
+        </action>
+        <action dev="PD" type="update">
+            Continued to refine the Camelot API.
+        </action>
+        <action dev="PD" type="add">
+            Removed blockdefs.properties in favour of adding attributes to manifest entries of jars.
+            This should enable future GUI tools to easily assemble blocks.
+        </action>
+        <action dev="PD" type="add">
+            Re-Added the sub-classed context BlockContext to allow blocks full access to important
+            environmental information.
+        </action>
+        <action dev="PD" type="update">
+            Many of the lifecycle methods now have a chance to fail by throwing an exception.
+        </action>
+        <action dev="PD" type="remove">
+            Removed all notion of kernel configurability.
+        </action>
+        <action dev="PD" type="update">
+            Enabled securityManager by default and now ServerApplications have to specify a security
+            policy.
+        </action>
+        <action dev="PD" type="update">
+            Removed classloader hack in ObjectStorageRepository as it is no longer required with
+            new .sar format.
+        </action>
+        <action dev="PD" type="update">
+            Homogenized the remaining code to follow one style.
+        </action>
+        <action dev="PD" type="update">
+            Configuration temporarily will create new Configuration objects on getChild() if they
+            don't exist until Berin's work is finalized.
+        </action>
+        <action dev="PD" type="update">
+            Altered Compose so that it threw ComponentManagerException of which the previous two
+            exceptions thrown are now subclasses.
+        </action>
+        <action dev="PD" type="update">
+            Made loading of jars relative to avalon-loader.jar rather than via current working
+            directory so that some tools (ie VAJava) would not complain.
+        </action>
+        <action dev="PD" type="update">
+            Separated out tools directory/jars from main jars that avalon uses.
+        </action>
+        <action dev="BL" type="update">
+            A number of bug fixes and more descriptive exceptions for Configuration and Parameters
+            objects.
+        </action>
+    </release>
+
+    <release version="3.0a3" date="11th October 2000">
+        <action dev="PD" type="update">
+            Made SocketManager accept arbitrary SocketServer.Listener objects.
+        </action>
+        <action dev="FB" type="update">
+            Updated all blocks to use new system level logging.
+        </action>
+        <action dev="FB" type="update">
+            Changed Threads so that it is now a system level service.
+        </action>
+        <action dev="PD" type="add">
+            Added new LogManager that manages arbitrary log categories.
+        </action>
+        <action dev="PD" type="add">
+            Added the BlockInfo requirement. Thus blocks need to have an XML file that describe the
+            services it offers, the services it depends upon and other meta information.
+        </action>
+        <action dev="PD" type="add">
+            Added support for Blocks to implement BlockContextualizable. If they do this the kernel
+            will pass them Context information. Currently the context information is limited to
+            a handle to kernel instance and the name they were configured under.
+        </action>
+        <action dev="PD" type="add">
+            Changed SimpleContext and SimpleComponentManager to DefaultComponent and
+            DefaultComponentManager to match better with other Avalon design patterns.
+        </action>
+        <action dev="PD" type="add">
+            Added functionality that allowed you to listen to BlockEvents generated by kernel.
+            Events indicate when a Block is being created, initialized, composed, destroyed, ran and
+            stopped.
+        </action>
+        <action dev="PD" type="add">
+            Updated Logger interface so arbitrary integer levels are not allowed to be passed. The user
+            is forced to use defined enumerants. This was done to increase safety.
+        </action>
+        <action dev="PD" type="add">
+            Updated kernel so that is now delegates to AvalonKernelConfigurator to configure itself.
+        </action>
+        <action dev="PD" type="update">
+            Updated kernel so that it is now pluggable. Any kernel can be loaded via the code in main.
+            Kernel configuration files are loaded from default configuration directory in a file
+            with same name as class with a .conf.xml appended.
+        </action>
+        <action dev="PD" type="update">
+            Removed getDescription method from Block as it is to become part of BlockInfo
+        </action>
+        <action dev="PD" type="update">
+            Change methods in Configure/Reconfigure to throw ConfigurationExceptions.
+        </action>
+        <action dev="PD" type="update">
+            Change methods in Configure/Reconfigure to match Java standards.
+        </action>
+        <action dev="FB" type="add">
+            Add to the Logger log level support.
+        </action>
+        <action dev="BL" type="add">
+            JNDI for the lookup of blocks and components.  Still keep the
+            Composer interface for those lightweight blocks that don't
+            need the extra features of the Context.  JNDI should be the
+            ComponentManager of choice.
+        </action>
+        <action dev="BL" type="update">
+            Synchronized Avalon with Cocoon 2 enhancements.  Uses SAX 2 for
+            configuration, incorporated abstract and base classes for fundamental
+            types, and incorporated the NamedComponent interface.
+        </action>
+        <action dev="BL" type="update">
+            Upgraded Loader architecture and the AvalonClassLoader to provide
+            better detail, as well as new ways of configuring the loader at the
+            beginning.  It does not require any extra libraries to load.
+        </action>
+    </release>
+
+    <release version="2.1" date="2000">
+        <action dev="FB" type="update">
+            Changed the Acceptor pattern to a more flexible event provider.
+        </action>
+        <action dev="FB" type="add">
+            Added a TimeServer to easily manage time events.
+        </action>
+        <action dev="FB" type="update">
+            Make Store implementation more pluggable.
+        </action>
+    </release>
+
+    <release version="2.0" date="2000">
+        <action dev="FB" type="update">
+            Updated Context pattern to Configurable-Composer pattern.
+        </action>
+    </release>
+
+    <release version="1.0-dev" date="Can't remember">
+        <action dev="FB" type="update">
+            First Avalon implementation.
+        </action>
+    </release>
+
+</changes>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/history/index.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/history/index.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="akarasulu@apache.org">Alex Karasulu</author>
+    <title>Apache Directory Project: Community History</title>
+  </properties>
+
+<body>
+
+<section name="History">
+
+<p>
+    This document tracks the history of the Directory project. The
+    Directory project was originally started with the need for a
+    Java LDAP Server.  Explain more history.
+</p>
+
+<p>
+    Over time the Java ...
+</p>
+<p>
+    Project changes are documented <a href="changes.txt">here</a>.
+</p>
+
+</section>
+
+</body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/history/navigation.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/history/navigation.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project>
+
+ <title>Apache Avalon</title>
+
+ <body>
+
+    <links>
+      <item name="Apache" href="http://apache.org/"/>
+      <item name="Directory" href="/index.html"/>
+      <item name="LDAP" href="/subprojects/ldap/index.html"/>
+      <item name="Naming" href="/subprojects/naming/index.html"/>
+      <item name="Janus" href="/subprojects/janus/index.html"/>
+      <item name="Snickers" href="/subprojects/snickers/index.html"/>
+    </links>
+
+    <menu name="About Avalon">
+      <item name="Overview" href="/index.html"/>
+      <item name="Latest News" href="/news.html"/>
+      <item name="Community" href="/community/index.html">
+        <item name="Who We Are" href="/community/who/index.html"/>
+        <item name="Process" href="/community/process/index.html"/>
+        <item name="History" href="/community/history/index.html">
+	  <item name="Java and LDAP" href="/community/history/java-ldap.html"/>
+          <item name="The LDAPd Group" href="/community/history/ldapd-group.html"/>
+	  <item name="Naming Commons" href="/community/history/naming-commons.html"/>
+        </item>
+      </item>
+      <item name="Sub-Projects" href="/subprojects/index.html"/>
+      <item name="Documentation" href="/doc/index.html"/>
+    </menu>
+
+    <menu name="Resources">
+      <item name="License" href="/license.html"/>
+      <item name="Downloads" href="/download.cgi"/>
+      <item name="CVS" href="/cvs.html"/>
+      <item name="WIKI" href="http://wiki.apache.org/directory"/>
+      <item name="Sandbox" href="/sandbox/index.html"/>
+      <item name="Mailing Lists" href="/mailing-lists.html"/>
+      <item name="Bug Database"  href="http://nagoya.apache.org/jira/secure/BrowseProject.jspa?id=10400"/>
+      <item name="Related Projects" href="/related/index.html"/>
+    </menu>
+
+    <menu name="Related">
+      <item name="Snickers" href="http://directory.apache.org/snickers"/>
+      <item name="Eve" href="http://directory.apache.org/ldap/eve"/>
+      <item name="Utilities" href="http://directory.apache.org/util"/>
+      <item name="LDAP Commons" href="http://directory.apache.org/ldap/common"/>
+      <item name="Naming Commons" href="http://directory.apache.org/naming"/>
+    </menu>
+ </body>
+
+</project>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/index.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/index.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="akarasulu@apache.org">Alex Karasulu</author>
+    <title>Apache Directory: Community</title>
+  </properties>
+
+  <body>
+    <section name="The Directory Community">
+      <subsection name="Index">
+        <table>
+          <tr><th>Topic</th><th>Description</th></tr>
+          <tr>
+            <td><a href="who/index.html">Who We Are</a></td>
+            <td>
+              <p>
+      These pages list many of the contributors to directory. They
+      have worked and are working long and hard to make quality
+      software for the rest of the world to use.  Contributors to the
+      Directory Project should be extremely proud of themselves!  If you
+      would like to become a contributor, please see the Get Involved
+      document to figure out how. If you are a contributor but are not
+      listed, submit a patch!
+              </p>
+            </td>
+          </tr>
+          <tr>
+            <td><a href="process/index.html">Process</a></td>
+            <td>
+              <p>
+      The Apache Directory Project, like all other projects at Apache, is a
+      <em>meritocracy</em> and follows the <em>Apache Way</em> of
+      community and project management.  This page contains a bunch of 
+      references to the structure, operation and process aspects that
+      help us maintain project oversight.
+              </p>
+            </td>
+          </tr>
+          <tr>
+            <td><a href="history/index.html">Historical</a></td>
+            <td><p>Background content - how Apache Directory came to be.<br/></p></td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/navigation.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/navigation.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project>
+
+ <title>Apache Avalon</title>
+
+ <body>
+
+    <links>
+      <item name="Apache" href="http://apache.org/"/>
+      <item name="Directory" href="/index.html"/>
+      <item name="LDAP" href="/subprojects/ldap/index.html"/>
+      <item name="Naming" href="/subprojects/naming/index.html"/>
+      <item name="Janus" href="/subprojects/janus/index.html"/>
+      <item name="Snickers" href="/subprojects/snickers/index.html"/>
+    </links>
+
+    <menu name="About Avalon">
+      <item name="Overview" href="/index.html"/>
+      <item name="Latest News" href="/news.html"/>
+      <item name="Community" href="/community/index.html">
+        <item name="Who We Are" href="/community/who/index.html"/>
+        <item name="Process" href="/community/process/index.html"/>
+        <item name="History" href="/community/history/index.html"/>
+      </item>
+      <item name="Products" href="/product/index.html"/>
+      <item name="Documentation" href="/doc/index.html"/>
+    </menu>
+
+    <menu name="Resources">
+      <item name="License" href="/license.html"/>
+      <item name="Downloads" href="/download.cgi"/>
+      <item name="CVS" href="/cvs.html"/>
+      <item name="WIKI" href="http://wiki.apache.org/directory"/>
+      <item name="Sandbox" href="/sandbox/index.html"/>
+      <item name="Mailing Lists" href="/mailing-lists.html"/>
+      <item name="Bug Database"  href="http://nagoya.apache.org/jira/secure/BrowseProject.jspa?id=10400"/>
+      <item name="Related Projects" href="/related/index.html"/>
+    </menu>
+
+    <menu name="Related">
+      <item name="Snickers" href="http://directory.apache.org/snickers"/>
+      <item name="Eve" href="http://directory.apache.org/ldap/eve"/>
+      <item name="Utilities" href="http://directory.apache.org/util"/>
+      <item name="LDAP Commons" href="http://directory.apache.org/ldap/common"/>
+      <item name="Naming Commons" href="http://directory.apache.org/naming"/>
+    </menu>
+ </body>
+
+</project>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/code-standards.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/code-standards.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="akarasulu@apache.org">Alex Karasulu</author>
+    <title>Apache Directory Project: Coding Standards</title>
+  </properties> 
+<body>
+<section name="Coding Standards">
+ <p>This document describes a list of coding conventions that are required
+ for code submissions to the project. By default, the coding conventions
+ for most Open Source projects should follow the existing coding conventions
+ in the code that you are working on. For example, if the bracket is on
+ the same line as the if statement, then you should write all your code
+ to follow that convention.</p>
+
+<p><strong>Please follow these conventions closely. It makes life so much
+easier.</strong></p>
+
+<p>Brackets should begin and end on a new line. Examples:</p>
+<source>
+
+if( foo )
+{
+    // code here
+}
+
+try
+{
+    // code here
+}
+catch( final Exception bar )
+{
+    // code here
+}
+finally
+{
+    // code here
+}
+
+while( true )
+{
+    // code here
+}
+
+</source>
+
+<p>The preference is to include extra spaces between parenthesis and expression.
+For example;
+</p>
+<source>
+
+if( foo )
+
+</source>
+<p>4 spaces. <strong>NO</strong> tabs. Period. We understand that a lot of you like
+to use tabs, but the fact of the matter is that in a distributed development
+environment, when the cvs commit messages get sent to a mailing list, they
+are almost impossible to read if you use tabs.</p>
+
+<p>In Emacs-speak, this translates to the following command:</p>
+
+<source>(setq-default tab-width 4 indent-tabs-mode nil)</source>
+
+<p>In vim, having the following in your .vimrc will help:</p>
+<source>
+set tabstop=4
+set expandtab
+set list
+set listchars=tab:&gt;.
+</source>
+
+<p>Unix linefeeds for all .java source code files. Other platform specific
+files should have the platform specific linefeeds.</p>
+
+<p>Javadoc <strong>SHOULD</strong> exist on all your methods. Also, if you are working
+on existing code and there currently isn't a javadoc for that method/class/variable
+or whatever, then you should contribute and add it. This will improve the
+project as a whole.</p>
+
+<p>The Jakarta Apache/Avalon License <strong>MUST</strong> be placed at the top
+of each and every file.</p>
+
+<p>If you contribute to a file (code or documentation), add yourself to the
+top of the file. For .java files the preferred Javadoc format is:</p>
+
+<source>
+@author &lt;a href="mailto:user@domain.com"&gt;John Doe&lt;/a&gt;
+</source>
+
+ <p>Indent comments on an 80 column basis and the code on a
+ 100 column basis, using two more indents when a line must be wrapped.</p>
+
+<p>We focus on readability over performance, at least initially. Source code
+optimization is the last thing to be done to increase performance.
+If the code is not performing then it is better to re-engineer it rather
+than to expand loops, take out variable declarations etc. When the code
+is stable and has a well defined purpose and interface it may be appropriate
+to do source code optimization.</p>
+
+<p>Try to javadoc all methods and variables, especially public, protected
+and default access methods and member variables. Also add code comments
+when you think it's necessary (like assumptions).</p>
+
+<p>Variables are declared in the inner scope.</p>
+
+<source>
+while( myListIterator.hasNext() )
+{
+    final String myString = (String)myListIterator.next();
+}
+</source>
+
+<p>Variables should be descriptive and ideally English words. The exceptions
+being loop counters (usually use i, j and k), exceptions (use concatenation
+of word separating characters - i.e. SocketException is abbreviated as se) and
+other commonly used abbreviations (i.e. sb for StringBuffer).</p>
+<source>
+try
+{
+    for( int i = 0; i &lt; 10; i++ )
+    {
+        // some stuff
+    }
+}
+catch( final FileNotFoundException fnfe )
+{
+    // some stuff
+}
+catch( final IndexOutOfBoundsException ioobe )
+{
+    // some stuff
+}
+</source>
+<p>
+Use String concatenation except in extremely performance sensitive
+sections. This leaves StringBuffer optimization to the compiler.
+So use:</p>
+<source>
+final String myString = "test " + "for " + "performances";
+</source>
+<p>Try not to declare a method as 'synchronized'.  If a method accesses
+a shared resource then surround accesses to that resource with
+a synchronized block. Ideally the synchronized block should surround
+the smallest possible area. For example:</p>
+<source>
+public void sharedMethod()
+{
+    String display = null;
+
+    synchronized( this )
+    {
+        display = mySharedObject.getHelloWorld();
+    }
+
+    System.out.println( display );
+}
+</source>
+<p>If you are within a static method, then you may have to create
+a static object whose sole purpose in life is to provide the
+lock you need. Alternatively you could use the Class object for
+the class you are in. That is, if you're in class MyClass, use
+"MyClass.class".</p>
+<p>Have the names of all member instance fields start with the prefix "m_".
+Example:</p>
+
+<source>
+class MyClass
+{
+    Class m_class = MyClass.class;
+    int m_users;
+}
+</source>
+
+<p>Don't chain method calls. The below:</p>
+<source>
+Thing thing = (MyThing)myObject.doSomething().doSomethingElse().getMyThing();
+</source>
+<p>is considered bad practice because it hides problems relating to
+synchronization, resource management, etc. The example above might
+become:</p>
+<source>
+final MySomething something = myObject.doSomething();
+final MyElse somethingElse = something.doSomethingElse();
+Thing thing = somethingElse.getMyThing();
+</source>
+<p>The extra typing will help keep the code bug-free.</p>
+
+<p>Thanks for your cooperation.</p>
+
+<p>-The Avalon Team</p>
+
+</section>
+
+</body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/development.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/development.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="akarasulu@apache.org">Alex Karasulu</author>
+    <title>Apache Directory Project</title>
+  </properties> 
+
+  <body>
+    <section name="Directory Development Process">
+     <p>
+       The following documents describe the development practices in
+       use by the Directory community.  When contributing to the project,
+       please follow these guidelines.
+     </p>
+     <ul>
+       <li><a href="code-standards.html">Coding Standards</a></li>
+       <li><a href="release.html">Release Guidelines</a></li>
+       <li><a href="patches.html">Patch Policies</a></li>
+     </ul>
+    </section>
+  </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/index.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/index.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="akarasulu@apache.org">Alex Karasulu</author>
+    <title>Apache Directory Project: Process</title>
+  </properties>
+
+  <body>
+    <section name="The Directory Community">
+     <p>
+      Welcome to the Directory community!
+     </p>
+     <p>
+      The Apache Directory Project, like all other projects at Apache, 
+      is a <em>meritocracy</em> and follows the <em>Apache Way</em> of
+      community and project management.  The following documents
+      help define these terms and form the guidelines by which the 
+      Directory Project operates.
+     </p>
+     <ul>
+       <li><a href="http://jakarta.apache.org/site/decisions.html">
+         Meritocracy</a></li>
+       <li><a
+         href="http://nagoya.apache.org/wiki/apachewiki.cgi?ApacheWay">
+	 The Apache Way</a></li>
+       <li><a href="http://jakarta.apache.org/site/roles.html">Roles
+         and Responsibilities</a></li>
+       <li><a href="http://jakarta.apache.org/site/guidelines.html">
+         Jakarta Project Guidelines</a></li>
+       <li><a href="http://incubator.apache.org/index.html">
+         The Apache Incubator Project</a></li>
+       <li><a href="http://apache.org/foundation/">The Apache Software
+         Foundation</a> (ASF)</li>
+       <li><a
+     href="http://www.apache.org/licenses/cla.pdf">
+         Contributor license Agreement</a> [PDF]</li>
+       <li><a href="http://james.apache.org/contribute.html">Getting Involved</a></li>
+     </ul>
+    </section>
+    <section name="Opening up the Directory Project's Repositories">
+      <p>
+        The Directory Project continually looks at ways to cooperate 
+        better with other projects, especially here at Apache.
+        Code reuse by us and others using our APIs is one of our
+        primary goals.
+      </p>
+      <p>
+       If you are from another Apache project, and would like all the
+       committers from your project to have access to the Directory
+       Repositories, all you need to do is ask the Directory PMC
+      </p>
+       <p>
+         The PMC will let you know if your request is accepted or
+         not. If you are interested in commit privileges, but are not
+         part of one of the Apache projects, then you have to do it
+         the old fashioned way and participate on the mailing lists
+         and post patches, etc. We are taking advantage of the Apache
+         infrastructure to make this happen.
+       </p>
+    </section>
+  </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/mission.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/mission.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="akarasulu@apache.org">Alex Karasulu</author>
+    <title>Apache Directory Project: Mission</title>
+  </properties> 
+
+  <body>
+    <section name="Apache Directory Project Mission">
+    <source>
+Apache Directory is a collaborative software development project dedicated
+to providing a high-quality freely available set of directory servers and
+APIs used for accessing naming and directory systems via JNDI 
+according to the principles of the Apache Software Foundation [ASF].
+
+This charter briefly describes the mission, history, organization, and
+processes of the Apache Directory project.
+
+MISSION
+=======
+
+[here's what Avalon's Mission is: we need our own]
+
+Apache Directory exists to promote and facilitate Component Based Design.
+Component Based Design is a proven practice that helps create systems
+that are loosely coupled and easy to maintain. Component Based Design
+requires a rigid software framework to function properly.
+
+Apache Avalon provides a specification for such a framework, an
+implementation of that specification and a compliance testing suite,
+and tools and components to facilate development using that framework.
+
+The software developed by the Apache Avalon project must be high
+performance, reliable, secure, and easy to use.  The individual software
+components must be part of an underlying architectural orchestration
+that will allow them to work together without major negotiations or
+breakage.
+
+The process followed for the development of Apache Avalon software is
+the same as the process followed by other ASF projects: individuals and
+corporations collaborate on the best possible infrastructure, APIs,
+code, testing, and release cycles.
+
+In order to achieve a coherent architecture between Apache Avalon
+components and other components and applications, standards (formal or
+de facto) will be used as much as possible for both protocols and APIs.
+We will also allow the innovation of new protocols, APIs, and components
+in order to seed new concepts not yet defined by standards.
+
+HISTORY
+=======
+
+[here's what Avalon's is: we need our own]
+
+This project was established under the direction of the Apache Software
+Foundation in November 2002 to facilitate joint open-source development.
+
+Prior to November 2002, Apache Avalon has been a part of the Apache Java
+project and the Apache Jakarta project.
+
+THE PROJECT MANAGEMENT COMMITTEE
+================================
+
+[here's what Avalon's is: we need our own]
+
+The Apache Avalon project is managed by a small, core group of
+contributors known as the Project Management Committee [PMC].  The PMC
+must have at least one ASF Officer, who will also be the PMC Chairperson
+and who will report to the ASF Board.  See
+http://www.apache.org/foundation/bylaws.html for reference.
+
+The PMC has the following responsibilities:
+
+o Facilitating code or other donations by individuals or companies.
+o Resolving license issues and other legal issues.
+o Approving new committers.
+o Ensuring that administrative and infrastructure work is completed.
+o Overseeing Apache Avalon to ensure that the mission defined in
+  this document is being fulfilled.
+o Resolving conflicts within the project.
+
+To become a member of the PMC, an individual must be nominated by a
+contributor, unanimously approved by all PMC members, and approved by a
+two-thirds majority of committers. In most cases, developers will have
+actively contributed to development for at least six months before being
+considered for membership on the PMC.
+
+The PMC is responsible for maintaining and updating this charter.
+Development must follow the process outlined in this charter, so any
+change to the development process necessitates a change to the charter.
+Changes must be unanimously approved by all members of the PMC. A
+contributor may challenge a change to the charter at any time and ask
+for a vote of all committers, in which case a two-thirds majority must
+approve the change.
+
+COMMITTERS
+==========
+
+[here's what Avalon's is: we need our own]
+
+Committers are developers who have read/write access priviledges to the
+source code repository. New committers are added when a developer is 
+nominated by a committer and approved by at least 50 percent of the
+existing committers with no opposing votes.  In most cases, new
+committers will already be participating in the development process by
+submitting suggestions and/or fixes via the bug report page or mailing
+lists.
+
+CONTRIBUTORS
+============
+
+[here's what Avalon's is: we need our own]
+
+Anyone is allowed and encouraged to participate in the development of
+the Apache Avalon software products. Occasional contributors will be
+able to report bugs, participate in the mailing lists, and submit
+patches.
+
+Specific changes to a product proposed for discussion or voting on the
+appropriate development mailing list should be presented in the form of
+patches. When sent to the mailing list, the message should contain a
+subject beginning with [PATCH] and include a clear summary that
+describes the effect of that patch.
+
+Like all Apache projects, the Avalon project is a meritocracy -- the 
+more work you do, the more you are allowed to do.  Developers who make
+regular and substantial contributions may become committers as described
+above.
+
+LICENSING
+=========
+
+[here's what Avalon's is: we need our own]
+
+All contributions to the Apache Avalon project adhere to the "ASF Source
+Code License." All contributions must be made under those terms. All
+contributions must contain the following copyright notice and license:
+
+ ============================================================================
+                   The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1997-2003 The Apache Software Foundation.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of  source code must  retain the above copyright  notice,
+    this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+    include  the following  acknowledgment:  "This product includes  software
+    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
+    Alternately, this  acknowledgment may  appear in the software itself,  if
+    and wherever such third-party acknowledgments normally appear.
+
+ 4. The  names   "Apache",   "Avalon",  "Excalibur",  "Fortress",  "Phoenix",
+    "Merlin" and "Apache Software Foundation" must not be used  to endorse or
+    promote  products  derived  from  this  software  without  prior  written
+    permission.  For written permission, please contact apache@apache.org.
+
+ 5. Products  derived from this software may not  be called "Apache", nor may
+    "Apache" appear  in their name,  without prior written permission  of the
+    Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
+ APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
+ ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
+ (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software  consists of voluntary contributions made  by many individuals
+ on  behalf of the Apache Software  Foundation. For more  information on the
+ Apache Software Foundation, please see http://www.apache.org/.
+
+THE DEVELOPMENT PROCESS
+=======================
+
+[here's what Avalon's is: we need our own]
+
+The development process is intentionally lightweight and follows the
+same guidelines as other ASF projects. The project committers decide
+which changes may be committed to the repository. Three +1 ('yes' votes)
+with no -1 ('no' votes or vetoes) are needed to approve a code change.
+For efficiency, some code changes from some contributors (e.g. feature
+additions, bug fixes) may be approved in advance, in which case they may
+be committed first and changed as needed, with conflicts resolved by
+majority vote of the committers.
+
+PRODUCT REQUIREMENTS
+====================
+
+[here's what Avalon's is: we need our own]
+
+All software products developed by Apache Avalon must have a set of
+requirments as well as an up-to-date release plan and architecture
+design. All software products developed by Apache Avalon must have a
+test system to verify their correct functioning and are ideally subject
+to continous integration testing, regression testing and unit testing.
+
+RELATIONSHIP TO OTHER APACHE PROJECTS
+=====================================
+
+[here's what Avalon's is: we need our own]
+
+The Apache Avalon project should work closely with other Apache
+projects, such as Jakarta and Apache HTTP Server, to avoid redundancy
+and achieve a coherent architecture among Apache Avalon and these
+projects.      
+    </source>
+    </section>
+  </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/navigation.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/navigation.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project>
+
+ <title>Apache Avalon</title>
+
+ <body>
+
+    <links>
+      <item name="Apache" href="http://apache.org/"/>
+      <item name="Directory" href="/index.html"/>
+      <item name="LDAP" href="/subprojects/ldap/index.html"/>
+      <item name="Naming" href="/subprojects/naming/index.html"/>
+      <item name="Janus" href="/subprojects/janus/index.html"/>
+      <item name="Snickers" href="/subprojects/snickers/index.html"/>
+    </links>
+
+    <menu name="About Avalon">
+      <item name="Overview" href="/index.html"/>
+      <item name="Latest News" href="/news.html"/>
+      <item name="Community" href="/community/index.html">
+        <item name="Who We Are" href="/community/who/index.html"/>
+        <item name="Process" href="/community/process/index.html">
+          <item name="Project Charter" href="/community/process/mission.html"/>
+          <item name="Management Committee" href="/community/process/pmc.html"/>
+          <item name="PMC Procedures" href="/community/process/pmc-votes.html"/>
+          <item name="Coding Standards" href="/community/process/code-standards.html"/>
+	    <item name="Release Management" href="/community/process/release.html"/>
+	    <item name="Patches and Bugs" href="/community/process/patches.html"/>
+        </item>
+        <item name="History" href="/community/history/index.html"/>
+      </item>
+      <item name="Sub-Projects" href="/subprojects/index.html"/>
+      <item name="Documentation" href="/doc/index.html"/>
+    </menu>
+
+    <menu name="Resources">
+      <item name="License" href="/license.html"/>
+      <item name="Downloads" href="/download.cgi"/>
+      <item name="CVS" href="/cvs.html"/>
+      <item name="WIKI" href="http://wiki.apache.org/directory"/>
+      <item name="Sandbox" href="/sandbox/index.html"/>
+      <item name="Mailing Lists" href="/mailing-lists.html"/>
+      <item name="Bug Database"  href="http://nagoya.apache.org/jira/secure/BrowseProject.jspa?id=10400"/>
+      <item name="Related Projects" href="/related/index.html"/>
+    </menu>
+
+    <menu name="Related">
+      <item name="Snickers" href="http://directory.apache.org/snickers"/>
+      <item name="Eve" href="http://directory.apache.org/ldap/eve"/>
+      <item name="Utilities" href="http://directory.apache.org/util"/>
+      <item name="LDAP Commons" href="http://directory.apache.org/ldap/common"/>
+      <item name="Naming Commons" href="http://directory.apache.org/naming"/>
+    </menu>
+ </body>
+
+</project>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/patches.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/patches.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="akarasulu@apache.org">Alex Karasulu</author>
+    <title>Apache Directory Project: Patches</title>
+  </properties> 
+       <body>
+	  <section name="JIRA">
+	    <p>It's the issue tracking system we use, and
+	    we ask that you do, too.<br/>
+	    <br/>
+	    <a href="http://nagoya.apache.org/jira/secure/BrowseProject.jspa?id=10400"><strong>Enter a bug</strong></a><br/>
+	    <br/>
+	    but please make sure the bug you're reporting doesn't exist yet, you include
+	    all relevant information, etc. See
+	    <a href="http://nagoya.apache.org/wiki/apachewiki.cgi?HowDoISubmitUsefulBugReports">this page</a>
+	    for more on how to submit bug reports, or try Google.</p>
+	  </section>
+	  <section name="Submitting patches">
+	    <p>Generate patches using <code>cvs diff -u</code>, or <code>diff -u</code>.
+	    Please create your patches relative to the root of the cvs module the patch
+	    should be applied to. Please compile changes to multiple files
+	    in a single patch file. Make sure the patch adheres to the coding standards,
+	    and includes appropriate javadoc.</p>
+	    
+	    <p>When you've built the patch, file a new bug report in JIRA if one
+	    does not exist yet, explain the reason behind the patch, how the patch fixes
+	    the issues, and add the patch as an attachment.</p>
+	    
+	    <p>If your patch is not getting applied or there is no response, start nagging
+	    the developers (politely, please :D) on the developers mailing list.</p>
+	    
+	    <section name="Documentation patches">
+	      <p>Please submit documentation patches against the xml sourcefiles used
+	      for generating the documentation, and not against the documentation
+	      itself.</p>
+	    </section>
+	  </section>
+        </body>
+
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/pmc-votes.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/pmc-votes.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="akarasulu@apache.org">Alex Karasulu</author>
+    <title>Apache Directory Project: PMC Voting</title>
+  </properties> 
+
+
+    <body> 
+        <section name="Voting Procedures">
+            
+            <p>This document details how the Avalon PMC has agreed to handle voting.</p>
+            
+            <subsection name="People Involved in the Voting Process">
+                
+                <subsection name="The Proposer">
+                    
+                    <p>
+                     The proposer is the one who comes up with the
+                        discussion that needs to be addressed.  Any
+                        member of the Directory community may start the
+                        discussion. The proposer must follow the
+                        procedures listed under the heading "Prior to
+                        the Vote".</p>
+                    
+                </subsection>
+                
+                <subsection name="The Vote Administrator">
+                    
+                    <p>The vote administrator is the person who
+                        tallies the votes and reports the results.
+                        The person who actually puts a proposal up for
+                        vote is usually the vote administrator,
+                        although this task can be taken on by someone
+                        else.</p>
+                    
+                </subsection>
+                
+                <subsection name="The Voter">
+                    
+                    <p>A voter is someone who expresses support,
+                        opposition or abstention for the subject being
+                        voted on.  A voter must be a Directory PMC
+                        member. Input is appreciated from committers
+                        and all other members of the community, but
+                        only votes from PMC members are counted.</p>
+                    
+                </subsection>
+            </subsection>
+            
+            <subsection name="Prior to the Vote">
+                
+                <p>Before any vote can take place, the subject must be
+                    discussed. All such discussions take place on the
+                    Directory developer or PMC mailing list, and have the
+                    text "[PROPOSAL]" in the subject line.  That
+                    practice alerts members to the fact that you
+                    eventually intend to call a vote on the
+                    subject.</p>
+                
+            </subsection>
+            <subsection name="The Vote">
+                
+                <p>When the proposal is ready to be adopted by the
+                    community, the Proposer will call for a vote on
+                    the Directory developers or PMC mailing list. The
+                    call for vote must have the text "[PMC:VOTE]" in
+                    the subject line.  That practice alerts the
+                    members to the fact that the prior proposal is now
+                    ready to vote on, and discussion should stop for
+                    the proposal.</p>
+                
+                <subsection name="How to Vote">
+                    
+                    <p>The voter responds to the call for vote with an
+                        expression of support, opposition, or
+                        abstention.  The exact way to express the
+                        voter's position is listed below:</p>
+                    
+                    <ul>
+                        <li>+1  a vote supporting the subject</li>
+                        <li>+0  a vote abstaining from the subject (but showing some support).</li>
+                        <li> 0  a vote abstaining from the subject.</li>
+                        <li>-0  a vote abstaining from the subject (but showing disapproval).</li>
+                        <li>-1  a vote opposing the subject</li>
+                    </ul>
+                </subsection>
+                
+                <subsection name="Counting Votes">
+                    
+                    <p>The vote administrator will count only the last
+                        vote from each voter.  That means a voter may
+                        change their vote at any time during the
+                        duration of the vote. All votes (+1, -1, +0,
+                        -0 and 0) count toward quorum, but +0, -0 and
+                        0 do not count when determining majority.</p>
+                        </subsection>
+                
+                <subsection name="Types of Votes">
+                    
+                    <p>There are two classes of votes: a Qualified
+                        Majority Vote and a Normal Majority Vote. In
+                        both types of votes, only +1 and -1 votes
+                        count toward majority.</p>
+                    
+                    <subsection name="Qualified Majority Vote">
+                        
+                        <p>Any vote that affects the texts "Directory PMC
+                            Charter" or "Directory PMC Policies and
+                            Procedures" is a Qualified Majority
+                            Vote. For this type of vote to pass, it
+                            requires that there are more than twice as
+                            many +1 votes as -1 votes.</p> </subsection>
+                    
+                    <subsection name="Normal Majority Vote">
+                        
+                        <p>All votes that do not fall under the
+                            heading of Qualified Majority Vote are
+                            handled as a Normal Majority Vote. If
+                            there are more +1 votes than -1 votes,
+                            then the vote has passed.</p> </subsection>
+                            </subsection>
+                
+                <subsection name="Voting Qualifications">
+                    
+                    <p>In order for any vote to be considered binding
+                        it must have quorum, and be held for the
+                        proper amount of time.</p>
+                    
+                </subsection>
+                
+                <subsection name="Quorum">
+                    
+                    <p>For all votes, there must be at least three (3)
+                        voters and half (1/2) of the PMC must cast a
+                        vote. When determining quorum, all votes (+1,
+                        -1, +0, -0 and 0) count.</p> </subsection>
+                
+                <subsection name="Duration">
+                    
+                    <p>All votes will be open for an initial period of
+                        one week.  The Vote Administrator may close
+                        the vote at any time after that period if
+                        quorum has been achieved.  If quorum could not
+                        be reached within the initial one-week period,
+                        the vote will remain open for one additional
+                        week.  If the vote still has not achieved
+                        quorum, then it is considered failed.  The
+                        proposer can choose to bring it up later when
+                        quorum can be reached.</p> </subsection>
+                        </subsection>
+            
+            <subsection name="After the Vote">
+                
+                <p>When the vote is closed, the results of the vote
+                    are summarized by the Vote Administrator.  The
+                    vote administrator will send an email to the
+                    Directory developers or PMC list with the text
+                    "[PMC:VOTE-RESULT]" in the subject that has the
+                    summary.  The summary will include the count of
+                    all +1, +0, 0, -0, and -1 responses, and the final
+                    verdict of whether the subject passed.</p>
+                    </subsection>
+            
+            <subsection name="Disagreements">
+                
+                <p>Disagreements concerning voting may be directed to
+                    the Chair. The Chair's opinion shall be final and
+                    binding upon the PMC.</p>
+                
+            </subsection>
+        </section>
+    </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/pmc.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/pmc.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="akarasulu@apache.org">Alex Karasulu</author>
+    <title>Apache Directory Project: PMC</title>
+  </properties> 
+
+  <body>
+	  <section name="Informative material only">
+	    <p>These pages exist only to provide some down-to-earth insight
+	    in how things work at the ASF. They're informative only, not
+	    normative. They may contain errors or inadequacies. IANAL.</p>
+	  </section>
+          <section name="So what is this PMC thing?">
+            <p>Apache is a legal entity, i.e. a real non-profit organisation,
+	    with a charter, members, a board, a president, etc. You can
+	    read all about that
+	    <a href="http://www.apache.org/foundation/">here</a></p>
+	    
+	    <p>A PMC, Project Management Committee, is a group of people
+	    appointed with the task of managing something that fits with the
+	    Apache Software Foundation goals. The Avalon PMC, for example,
+	    is tasked with managing the Apache Directory Project.</p>
+	  </section>
+	  <section name="What, management?! We've already got plenty of those at work!">
+	    <p>We're all programmers, and that is what we want to occupy us
+	    with. We like to share and work on our software together, which
+	    is why we make it free software. However, there is always some
+	    stuff which still requires management.</p>
+	    
+	    <p>For example, in order to protect ourselves and our users, all
+	    software hosted at Apache must be properly copyrighted to the ASF,
+	    and licensed under the ASF license. This is something the PMC is
+	    responsible for.</p>
+	    
+	    <p>Also, remember that the PMC consists of the same people that do
+	    the development work. There's no "bossing around" here. The PMC
+	    exists only to facilitate free software developers in "doing their
+	    thing", just like the ASF exists "to provide organizational, legal,
+	    and financial support for the Apache Open Source software
+	    projects".</p>
+	  </section>
+	  <section name="The PMC Chair and Officer of the Foundation">
+	    <p>The position of Avalon PMC chair is an important one; the PMC
+	    chair has special responsibilities and privileges as detailed in
+	    the ASF bylaws.</p>
+	  </section>
+        <section name="Project Management Committee">
+        <p>The following people form the current Avalon PMC:</p>
+          <ul>
+            <li><a href="../who/mcconnell.html">Stephen McConnell</a></li>
+            <li><a href="../who/akarasulu.html">Alex Karasulu</a></li>
+          </ul>
+      </section>
+    </body> 
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/release.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/process/release.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="akarasulu@apache.org">Alex Karasulu</author>
+    <title>Apache Directory Project: Release Management</title>
+  </properties> 
+        <body>
+	  <section name="Not written yet....">
+	    <p>We haven't got our release process written down yet.</p>
+	  </section>
+	  <section name="Relevant links">
+	    <ul>
+<li><a href="http://jakarta.apache.org/site/decisions.html">Jakarta decision process</a></li>
+<li><a href="http://httpd.apache.org/dev/release.html">HTTPD release policy</a></li>
+<li><a href="http://cvs.apache.org/~bodewig/mirror.html">Distribution Mirroring HOWTO</a></li>
+<li><a href="http://cvs.apache.org/builds/">Nightly builds</a></li>
+<li><a href="http://gump.covalent.net/jars/latest/">Nightly builds: jars@covalent</a></li>
+<li><a href="http://freshmeat.net/articles/view/392/">Freshmeat on software builds</a></li>
+<li><a href="http://java.sun.com/docs/books/tutorial/jar/sign/signing.html">Java tutorial: jar signing</a></li>
+<li><a href="http://java.sun.com/j2se/1.4/docs/tooldocs/tools.html#security">JDK Security tool docs</a></li>
+<li><a href="http://cvs.apache.org/viewcvs.cgi/jakarta-tomcat-4.0/RELEASE-PLAN-4.1.txt">Tomcat 4 release plan</a></li>
+	    </ul>
+	  </section>
+	  <section name="Noel's thoughts">
+	    <p>Noel J. Bergman wrote to avalon-dev:</p>
+	    <source>
+[snip]
+Here are a few items to consider for the Release Plan:
+
+  1) Identify bugs and incompatibilities.
+  2) Decide which ones will be fixed.
+  3) Decide what other changes are necessary, e.g., packaging.
+  4) Make the code changes.
+  5) Test
+  6) Update the documentation and web site.
+
+[snip]
+Here are a few useful links:
+
+  Jakarta: http://jakarta.apache.org/site/decisions.html
+  Apache HTTPD release policies: http://httpd.apache.org/dev/release.html
+  Avalon bug summary:
+http://nagoya.apache.org/bugzilla/reports.cgi?product=Avalon&amp;output=most_doo
+med&amp;links=1&amp;banner=1&amp;quip=0
+  Mirroring: http://cvs.apache.org/~bodewig/mirror.html
+
+[snip]
+	--- Noel
+	    </source>
+	  </section>
+        </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/who/akarasulu.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/who/akarasulu.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document> 
+  <properties>
+    <author email="akarasulu@apache.org">Alex Karasulu</author>
+    <title>Apache Directory Project: Contributors</title>
+  </properties>
+  <body> 
+    <section name="Alex Karasulu">
+      <p>(akarasulu at apache dot org)</p>
+      <p>
+      Talk about Alex here.
+      </p>
+    </section>
+  </body>
+</document>
+

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/who/index.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/who/index.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="akarasulu@apache.org">Alex Karasulu</author>
+    <title>Apache Directory Project: Who we are</title>
+  </properties> 
+  <body>
+    <section name="Active Committers">
+      <p>
+      The current Directory committers are: akarasulu, jmachols, wesmckean,
+      rpenoyer, nburgman, smcconnell, hyandell, psteitz 
+      </p>
+    </section>
+    <section name="Inactive Committers">
+      <p>
+      The current inactive avalon committers (an inactive committer is
+      someone who hasn't done a cvs commit in three months, or hasn't
+      bothered to move himself from this list to the one above) are:
+      none yet.
+      </p>
+    </section>
+    <section name="Emeritus Committers">
+      <p>
+       The current emeritus committers (an emeritus committer is
+      someone who is not active within the avalon project anymore)
+      are: none yet.
+      </p>
+    </section>
+    <section name="Contributors">
+      <p>
+      Fill this in with time.
+      </p>
+    </section>
+  </body>
+
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/who/mcconnell.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/who/mcconnell.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document> 
+  <properties>
+    <author email="akarasulu@apache.org">Alex Karasulu</author>
+    <title>Apache Directory Project: Contributors</title>
+  </properties>
+  <body> 
+    <section name="Stephen McConnell">
+      <p>(mcconnell at apache dot org)</p>
+      <p>
+      Steve talk about yerself here.
+      </p>
+    </section>
+  </body>
+</document>
+

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/who/navigation.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/community/who/navigation.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project>
+
+ <title>Apache Avalon</title>
+
+ <body>
+
+    <links>
+      <item name="Apache" href="http://apache.org/"/>
+      <item name="Directory" href="/index.html"/>
+      <item name="LDAP" href="/subprojects/ldap/index.html"/>
+      <item name="Naming" href="/subprojects/naming/index.html"/>
+      <item name="Janus" href="/subprojects/janus/index.html"/>
+      <item name="Snickers" href="/subprojects/snickers/index.html"/>
+    </links>
+
+    <menu name="About Avalon">
+      <item name="Overview" href="/index.html"/>
+      <item name="Latest News" href="/news.html"/>
+      <item name="Community" href="/community/index.html">
+        <item name="Who We Are" href="/community/who/index.html">
+	    <item name="Stephen McConnell" href="/community/who/mcconnell.html"/>
+	    <item name="Alex Karasulu" href="/community/who/akarasulu.html"/>
+        </item>
+        <item name="Process" href="/community/process/index.html"/>
+        <item name="History" href="/community/history/index.html"/>
+      </item>
+      <item name="Sub-Projects" href="/subprojects/index.html"/>
+      <item name="Documentation" href="/doc/index.html"/>
+    </menu>
+
+    <menu name="Resources">
+      <item name="License" href="/license.html"/>
+      <item name="Downloads" href="/download.cgi"/>
+      <item name="CVS" href="/cvs.html"/>
+      <item name="WIKI" href="http://wiki.apache.org/directory"/>
+      <item name="Sandbox" href="/sandbox/index.html"/>
+      <item name="Mailing Lists" href="/mailing-lists.html"/>
+      <item name="Bug Database"  href="http://nagoya.apache.org/jira/secure/BrowseProject.jspa?id=10400"/>
+      <item name="Related Projects" href="/related/index.html"/>
+    </menu>
+
+    <menu name="Related">
+      <item name="Snickers" href="http://directory.apache.org/snickers"/>
+      <item name="Eve" href="http://directory.apache.org/ldap/eve"/>
+      <item name="Utilities" href="http://directory.apache.org/util"/>
+      <item name="LDAP Commons" href="http://directory.apache.org/ldap/common"/>
+      <item name="Naming Commons" href="http://directory.apache.org/naming"/>
+    </menu>
+
+ </body>
+
+</project>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/cvs.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/cvs.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="dev@avalon.apache.org">Avalon Documentation Team</author>
+    <title>CVS</title>
+  </properties> 
+
+
+<body>
+
+<section name="Bleeding-edge only">
+	<p>If you are looking to download the source code for stable versions of the Avalon
+	projects, you're in the wrong place. You should download a source release from
+    <a href="http://avalon.apache.org/srcdownload.cgi">the source download page</a>.</p>
+</section>
+<section name="About CVS">
+	<p>CVS, the Concurrent Versions System is a revision control system useful for
+	management of source code, and is the predominant version control system used at
+	Apache. See <a href="http://www.cvshome.org/">The CVS Homepage</a> for
+	more about CVS.</p>
+</section>
+<section name="CVS data">
+	<p>If you know what you're doing, all you need to know:</p>
+	<p>viewcvs: <a href="http://cvs.apache.org/viewcvs.cgi/">http://cvs.apache.org/viewcvs.cgi/</a></p>
+	<source>
+anonymous CVSROOT: :pserver:anoncvs@cvs.apache.org:/home/cvspublic
+modules:
+      avalon                  # framework, containers and documentation
+      avalon-components       # component repository
+      avalon-excalibur        # utility repository
+	avalon-logkit           # cool logging toolkit
+	avalon-phoenix          # the phoenix container and related libraries
+      avalon-sandbox          # alpha &amp; pre-alpha code
+	avalon-site             # this website
+	</source>
+</section>
+<section name="Getting the sources from CVS under Windows">
+	<p>There's a few options for you:</p>
+	
+	<subsection name="Use cygwin">
+		
+		<p><a href="http://www.cygwin.com/">Cygwin</a> is a free software suite
+		of ports of popular Linux tools and utilities to run natively under windows.
+		Among it is a port of the cvs application. If you use cygwin, follow the Linux
+		instructions.</p>
+	</subsection>
+	<subsection name="Use the command-line tools">
+		
+		<p>The CVS utilities are available as native Windows binaries. Get them from
+		<a href="http://www.cvshome.org/">the CVS homepage</a>. To use these
+		tools, open a command window (click Start > Run..., then type 'cmd'), then
+		enter the following commands:</p>
+		
+		<source>
+rem you can use any directory in place of C:\cvs
+rem replace $CVSUTILS with where you installed the cvs binary, or with
+rem nothing if you added the utility to your PATH
+mkdir C:\cvs
+cd C:\cvs
+$CVSUTILS\cvs.exe -d :pserver:anoncvs@cvs.apache.org login
+rem enter anoncvs when prompted for a password, then hit enter
+rem the below command should be on one line
+$CVSUTILS\cvs.exe -z3 -d ^
+      :pserver:anoncvs@cvs.apache.org:/home/cvspublic checkout ^
+      avalon avalon-excalibur avalon-components ^
+      avalon-phoenix avalon-logkit avalon-site ^
+      avalon-sandbox xml-forrest ^
+		</source>
+		
+		<p>This will take a while, depending on your connection. Go ahead and grab
+		yourself a coffee or ten. When done, you should have checked out all Avalon
+		sources and the most important utility libraries you need to build it (save
+            for <a href="http://maven.apache.org/">Apache Maven</a>, which you should
+            go install right now if you haven't already). For further building instructions 
+            run:</p>
+<source>
+maven avalon:info              
+</source>
+	</subsection>
+	<subsection name="Use TortoiseCVS">
+		
+		<p><a href="http://www.tortoisecvs.org/">TortoiseCVS</a> is a neat extension
+		for the Windows Explorer which integrates CVS. Using it is real simple:</p>
+		
+		<p>After you've created a folder where you want to check out the sources to,
+		right-click and select CVS Checkout...:<br/>
+		<img src="images/tortoisecvs-checkout.jpg" alt="screenshot of CVS settings"/></p>
+		
+		<p>Then, fill out the settings like in the screenshot below, and then click ok.<br/>
+		<img src="images/tortoisecvs-settings.jpg" alt="screenshot of CVS settings"/></p>
+		
+		<p>This checks out the avalon CVS module. Repeat this procedure for all
+		the modules you wish to check out. See above under "CVS data" for the list of Avalon modules, or use the
+		<a href="http://cvs.apache.org/viewcvs.cgi/">ViewCVS Webpage</a> for a full
+		list of ASF-hosted CVS modules.</p> 
+	</subsection>
+	<subsection name="Use WinCVS">
+		
+		<p><a href="http://www.wincvs.org/">WinCVS</a> is a standalone windows
+		application for working with CVS. It has more features than TortoiseCVS, and
+		hence more buttons a novice is not likely to use.</p>
+		
+		<p>After you've created a folder where you want to check out the sources to,
+		select the Checkout module... option from the Create menu:<br/>
+		<img src="images/wincvs-checkout.jpg" alt="screenshot of CVS settings"/></p>
+		
+		<p>Then, select the "general tab" and fill out the settings like in the
+		screenshot below:<br/>
+		<img src="images/wincvs-preferences.jpg" alt="screenshot of CVS settings"/>.</p>
+		
+		<p>Now, switch back to the first tab and fill out the settings like in the
+		screenshot below, and then click ok.<br/>
+		<img src="images/wincvs-checkout.jpg" alt="screenshot of CVS settings"/>.</p>
+		
+		<p>This checks out the avalon CVS module. Repeat this procedure for all
+		the modules you wish to check out. See above under "CVS data" for the list of Avalon modules, or use the
+		<a href="http://cvs.apache.org/viewcvs.cgi/">ViewCVS webpage</a> for a full
+		list of ASF-hosted CVS modules.</p> 
+	</subsection>
+</section>
+<section name="Getting the sources from CVS under Linux">
+	
+	<subsection name="Use the command-line tools">
+		
+		<p>The CVS utilities are available as native linux binaries. Chances are
+		you already have them installed. Try it by opening a console and typing 'cvs'.
+		If you get an error along the lines of "bash: cvs: command not found", then
+		you need to install them first. Under Debian, you can do so by opening a console
+		window and entering the commands:</p>
+		
+		<source>
+su -
+# enter the root password when prompted
+apt-get update
+apt-get install cvs
+exit
+		</source>
+		
+		<p>Under Red Hat, the commands are a little different:</p>
+		
+		<source>
+su -
+# enter the root password when prompted
+rpm -i ftp://ftp.redhat.com/pub/redhat/linux/8.0/en/os/i386/RedHat/RPMS/cvs-1.11.2-5.i386.rpm
+exit
+		</source>
+
+		<p>The procedure is similar for other Linux distributions. Once you have
+		these tools installed, open a command window, then enter the following
+		commands:</p>
+		
+		<source>
+# you can use any directory in place of ~/cvs
+mkdir ~/cvs
+cd ~/cvs
+cvs -d :pserver:anoncvs@cvs.apache.org login
+# enter anoncvs when prompted for a password, then hit enter
+cvs -z3 -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic \
+      checkout avalon \
+      avalon-excalibur avalon-cornerstone \
+      avalon-phoenix avalon-logkit avalon-site \
+      avalon-sandbox jakarta-site xml-forrest
+		</source>
+		
+		<p>This will take a while, depending on your connection. Go ahead and grab
+		yourself a coffee or ten. When done, you should have checked out all avalon
+		sources and the most important utility libraries you need to build it (save
+		for <a href="http://ant.apache.org/">Apache Ant</a>, which you should
+		go install right now if you haven't already).</p>
+	</subsection>
+	
+	<subsection name="Using Cervisia">
+		
+		<p>KDE's Konqueror browser has CVS support built-in. I've never used it so I
+		can't comment on it. See
+		<a href="http://cervisia.sourceforge.net/">the Cervisia website</a> for
+		more information.</p>
+	</subsection>
+</section>
+<section name="Platform-independent: jCVS">
+	
+	<p><a href="http://www.jcvs.org/">jCVS</a> is a 100% java CVS package that I've
+	never used.</p>
+</section>
+<section name="Using an IDE for CVS access">
+	
+	<p>Most decent IDEs these days provide CVS integration. Apache's Jakarta Project has
+  an excellent section on how to configure your IDE: 
+	<a href="http://jakarta.apache.org/site/idedevelopers.html">IDE Developer's Guide</a>
+  .  It applies equally well to Avalon.
+  </p>
+</section>
+
+</body>
+
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/authors.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/authors.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<document>
+
+  <properties>
+    <author email="hammant@apache.org">Paul Hammant</author>
+    <author email="bloritsch@apache.org">Berin Loritsch</author>
+    <title>Developing With Apache Avalon Authors</title>
+  </properties>
+
+<body>
+  <section name="Authors">
+    <subsection name="Berin Loritsch">
+    <p>
+      Berin has helped define and document the Avalon projects since 2000.
+      He has been involved in Apache Avalon and Apache Cocoon.  He is the
+      author of the current thread-safe pool implementations as well as
+      the DataSourceComponent.  Berin and Giacomo Pati were the architects
+      of Excalibur's Component Management infrastructure.
+    </p>
+    <p>
+      Outside of the public view of the Apache Software Foundation, Berin
+      has developed workflow based web applications as well as data
+      manipulation services.  He has nine years of experience developing
+      database backed applications, and eight years experience with
+      technical writing.  Berin has only been developing Java since 1999,
+      but his background in other Object Oriented Languages and architectures
+      like C++ and CORBA helped him get a jump start.
+    </p>
+   </subsection>
+   <subsection name="Paul Hammant">
+    <p>
+       Paul is most interested in applications that run on top of Phoenix.  As such he constantly
+       trawls the internet look for suitable server applications for Phoenix.  He tries to persuade
+       the authors to rebase to Phoenix or make their apps phoenix compatible.
+    </p>
+    <p>
+       Paul wrote some of blocks for Cornerstone and some of the apps in Avalon apps.
+       He also started <a href="http://avalon.apache.org/apps/apps/db/index.html">AvalonDB</a>,
+       <a href="http://www.jesktop.com">Jesktop</a>,
+       <a href="http://incubator.apache.org/projects/altrmi/">AltRMI</a>,
+       <a href="http://www.enterpriseobjectbroker.org">Enterprise Object Broker</a>, and
+       <a href="http://www.picocontainer.org">Picocontainer</a>.
+    </p>
+   </subsection>
+  </section>
+ </body>
+</document>
+

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/compatiblity.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/compatiblity.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+<document>
+
+  <properties>
+    <author email="hammant@apache.org">Paul Hammant</author>
+    <author email="bloritsch@apache.org">Berin Loritsch</author>
+    <title>Compatibility with Avalon Project Containers</title>
+  </properties>
+
+<body>
+  <section name="Compatibility with Avalon Project Containers">
+  <p>
+    There are many applications, utility or tools written in Java that you
+    wish you could use in an Avalon container.  It may be that you are
+    writing such an app/utility/tool that you intend to additionally be
+    usable by Avalon components in Avalon containers.  This document
+    gives some advice on the subject.  We will refer to applications,
+    utilities and tools as just 'tools' from her on in.  We'll assume
+    the classes for which are in a single Jar.
+  </p>
+  <p>
+    This advise is applicable to all
+    <a href="http://avalon.apache.org/framework/principals/containment.html">
+    reference containers</a>
+  </p>
+  </section>
+  <section name="Making a Jar for a tool">
+    <p>
+      The tool's Jar should only contain the classes in question and
+      directly associated resources. It should not contain the classes
+      or resources from other projects.  For example it is a bad habit
+      to include the org.apache.xerces.* jars in another jar.  It would
+      be correct for the notes accompanying the tools to list xerces.jar
+      as a dependency.
+    </p>
+    <p>
+      It is best that packages for the tool are well defined.  Sun
+      recommend a package structure that honors the internet domain of
+      the hosted proejct.  For example org.apache prefixes all the packages
+      of projects hosted at Apache.  Sometimes a project thinks it is
+      significant enough to avoid the domain name based naming, but still
+      have a package.  JUnit is an example of this, as it uses junit as its
+      top level package.  Tools that have no package or a package name
+      that a non unique word are not good design.
+    </p>
+  </section>
+  <section name="Wrapping third party tools">
+    <p>
+      There are many tools written in Java as beans that you wish you could
+      use in an Avalon container as a component.  If they are not
+      dependent on Avalon packages and classes already it is likely that
+      some wrapper concept is appropriate.  The normal form is to have
+      a separate package with a class that is dependent on Avalon Framework
+      methods.  That wrapper class would be Configurable, Initializable etc,
+      and would map its configuration to setZYZ() methods in the original bean.
+    </p>
+    <p>
+      It is also a good idea to understand the
+      <a href="http://avalon.apache.org/framework/cop/guide-patterns-soii.html">
+      separation of interface and implementation</a> when designing components.
+    </p>
+  </section>
+  <section name="Dynamic Classloading">
+    <p>
+      Many Java tools internally use
+      <em>Class.forName(String).newInstance()</em>
+      to instantiate some part of its internal functionality.  This
+      works if the class's Jar is mounted at the top-level system
+      classloader.  In the case of many Avalon containers, the Jar in
+      question will actually be mounted in a classloader at some other point
+      in a tree of classloaders.  Thus <em>Class.forName()</em>
+      will fail with ClassNotFoundException if running in a container.
+    </p>
+    <p>
+      A better thing to do would be to use
+      <em>this.getClass().getClassLoader().loadClass(String)</em>.
+      This means that the class will always be loaded from classloader
+      that hosts the rest of the classes for the tool.  It can run at any
+      point in a tree of classloaders without problem.
+    </p>
+  </section>
+  <section name="Use of Static">
+    <p>
+      It is common amongst novice developers to use much static
+      functionality.  This could be methods or class variables.  Given
+      that Avalon's containers may mount multiple instances of a component
+      potentially in multiple classloaders, the use of static may lead to
+      unpredicted behavior.  If the static var or method is mounted in a
+      classloader that is visible to multiple components, then it will
+      behave as expected.  For this reason, static should be used with care
+      - you cannot guarantee where someone might try to run your tool.
+    </p>
+    <p>
+      Static also makes Unit Testing quite difficult.  If you can at all
+      avoid it, please do so.
+    </p>
+  </section>
+ </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/conclusion.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/conclusion.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,113 @@
+<?xml version="1.0"?>
+<document>
+
+  <properties>
+    <author email="hammant@apache.org">Paul Hammant</author>
+    <author email="bloritsch@apache.org">Berin Loritsch</author>
+    <title>Conclusion</title>
+  </properties>
+
+<body>
+  <section name="Conclusion">
+  <p>
+    Maybe you are already convinced, but need some help convincing
+    your colleagues that Avalon is right for you.  Maybe you need
+    some convincing yourself.  Either way, this chapter will help
+    wrap everything up, and provide you with some convincing arguments.
+    We all need to fight Fear, Uncertainty, and Doubt (FUD) with the
+    Open Source model.  For arguments on the validity of Open Source,
+    I will direct you to Eric S. Raymond's excellent treaties on the subject.
+    Regardless of your opinions on his politics, the
+    papers he wrote and compiled into the book 
+    <a href="http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/">
+    The Cathedral and the Bazaar</a> will give you the information you need to
+    be convinced about the open source model as a whole.
+  </p>
+  </section>
+  <section name="Avalon Works">
+    <p>
+      The bottom line is that Avalon accomplishes the goal it was
+      originally designed to fulfill.  Avalon does not introduce new
+      concepts and ideas, but rather uses and formalizes several concepts
+      that have stood the test of time.  The newest concept that influenced
+      the design of Avalon is the Separation of Concerns pattern introduced
+      sometime around 1995.  Even then, Separation of Concerns is a
+      formalization of System Analysis techniques.
+    </p>
+    <p>
+      Avalon's user base is measured in the hundreds.  Several projects
+      like Apache Cocoon, Apache JAMES, and Jesktop are all built on Avalon.
+      Developers for those projects are users of Avalon Framework.  Because of
+      the number of users Avalon has, it is very well tested.
+    </p>
+    <subsection name="Designed by the Best Minds">3
+      <p>
+        The authors of Avalon recognize that we are not the sole experts
+        on server side programming.  We use concepts and ideas from other
+        people's research.  We respond to feedback from our users.  Avalon
+        is not just designed by the five developers mentioned in the
+        introduction -- the people who came up with the concepts of Inversion
+        of Control, Separation of Concerns, and Component Oriented
+        Programming designed it.
+      </p>
+      <p>
+        The beauty of Open Source projects is that the result is an
+        amalgamation of the best ideas and the best code.  Avalon has gone
+        through periods of testing ideas and rejecting them because there
+        was a better solution.  You can take the knowledge gained by the
+        Avalon team and use it in your own systems.  You can take the
+        predefined components in Excalibur and use them in your own
+        projects -- they have been tested to work under heavy load without
+        errors.
+      </p>
+    </subsection>
+    <subsection name="Compatible License">
+      <p>
+        The <em>Apache Software License</em> (ASL) is compatible
+        with just about every other license known.  The biggest known
+        exceptions are the <em>GNU Public License</em> (GPL)
+        and the <em>Lesser GNU Public License</em> (LGPL).  The
+        important thing is that the ASL is friendly to corporate development,
+        and does not force you to release your source code if you don't want
+        to.  It is the same license used for the Apache Software Foundation's
+        venerable HTTP server.
+      </p>
+    </subsection>
+    <subsection name="Pooled Research">
+      <p>
+        Most of Avalon's users contribute back to the project in some way.
+        This spreads the cost of developing, debugging, and documenting the
+        framework across several users.  It also means that Avalon's code
+        has gone through a more extensive peer review than would ever be
+        possible in one company.  In addition, users of Avalon support
+        Avalon.  While it is true open source projects do not typically have
+        a help desk or telephone support line, we do have a mailing list.
+        Many times your questions can be answered in less time on the list
+        than it would take on some support lines.
+      </p>
+    </subsection>
+    <subsection name="Simplified Analysis and Design">
+      <p>
+        Developing on Avalon helps the developer to get into a mindset.
+        That mindset focuses the efforts on how to discover Components and
+        Services.  Since many of the details regarding the life of the
+        Components and Services in the system are already analyzed and
+        designed, the developer only has to choose which ones they need.
+      </p>
+      <p>
+        It is important to state that Avalon development does not replace
+        traditional Object Oriented Analysis and Design, but enhances it.
+        You are still using the same techniques you did before, only now
+        you have a tool set you can use to achieve your design faster.
+      </p>
+    </subsection>
+  </section>
+  <section name="Avalon is Ready">
+    <p>
+      Avalon Framework, Avalon Excalibur, Avalon Phoenix and Avalon LogKit
+      are ready for you to use now.  They are mature, powerful products and
+      they are only getting better!
+    </p>
+  </section>
+ </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/decomposing.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/decomposing.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,398 @@
+<?xml version="1.0"?>
+<document>
+
+  <properties>
+    <author email="hammant@apache.org">Paul Hammant</author>
+    <author email="bloritsch@apache.org">Berin Loritsch</author>
+    <title>Decomposing A System</title>
+  </properties>
+
+<body>
+  <section name="Decomposing A System">
+  <p>
+    We will use a hypothetical business server to demonstrate
+    how to identify services and Components.  After we define some
+    services that are used in the system, we will take one of those
+    services and define the different components needed by the
+    service.  My goal is to pass on some concepts that will help
+    you define your system in manageable pieces.
+  </p>
+  </section>
+  <section name="System Analysis -- Identifying Components">
+    <p>
+      While it is beyond the scope of this presentation to provide
+      a full-blown methodology, I do want to provide some pointers.
+      We will start with the implementation oriented definition of
+      Components and Services, and then provide a practical definition.
+    </p>
+    <table>
+      <tr><th>Component</th></tr>
+      <tr><td>
+        A Component is the combination of a work interface, and the
+        implementation of that interface.  Its use provides a looser
+        coupling between objects, allowing the implementation to
+        change independently of its clients.
+      </td></tr>
+    </table>
+    <table>
+      <tr><th>Service</th></tr>
+      <tr><td>
+        A Service is a group of one or more Components that provide
+        a complete solution.  Examples of a Service are protocol
+        handlers, job schedulers, and authentication and authorization
+        services.
+      </td></tr>
+    </table>
+    <p>
+      While these definitions provide a starting place, they don't
+      give the whole picture.  In order to decompose a system (defined
+      as a group of facilities that comprise a project) into the
+      necessary parts, I advocate a top-down approach.  That way you
+      will avoid being bogged down in details before you know what the
+      different facilities are.
+    </p>
+    <subsection name="Determining the Scope of Your Project">
+      <p>
+        You always have to start out with a general idea of what your
+        project is supposed to accomplish.  In the commercial world, the
+        initial statement of work accomplishes this.  In the open source
+        world, this is usually accomplished by an idea or brainstorming
+        session.  I can't stress enough the importance of having a high
+        level view of the project.
+      </p>
+      <p>
+        Obviously, a large project will be comprised of many different
+        services, and a small project will only have one or two.  If you
+        start to feel a bit overwhelmed, just remind yourself that a large
+        project is really an umbrella for a bunch of smaller projects.
+        Eventually, you will get to the point where you will be able to
+        comprehend the big picture.
+      </p>
+    </subsection>
+  </section>
+  <section name="Statement of Work: Business Server">
+    <p>
+      The Business Server is a hypothetical project.  For the purpose
+      of our discussion, its function is to handle sales orders,
+      automatically bill customers, and manage the inventory control.
+      Sales orders have to be processed as they come in, using some
+      kind of transaction system.  The server automatically bills the
+      customers 30 days after the sales order is filled.  The inventory
+      is managed by both the server and by the current inventory counted
+      at the factory or warehouse.  The business server will be a
+      distributed system, and each server will communicate with others
+      via a messaging service.
+    </p>
+  </section>
+  <section name="Finding the Services">
+    <p>
+      We will use the Business Server Project to discover the services.
+      Considering the overly broad statement of work, we can immediately
+      begin to see some services defined in the description of the
+      project.  The list of services will be split into explicit ones
+      (services that can immediately be derived from the statement of
+      work) and implicit ones (services that are discovered due to similar
+      work or as supporting the explicit services).  Please note that the
+      implementing company will develop not all of the services-some will
+      be purchased as commercial solutions.  In those cases, we will
+      probably put a wrapper so that we still have a specific way of
+      interacting with the commercial product.  The implementing company
+      will build the majority of the services.
+    </p>
+    <subsection name="Explicit Services">
+      <p>
+        We can quickly derive a number of services from the statement
+        of work.  Our work is not done after this initial analysis,
+        because the definition of some services requires the existence
+        of other services.
+      </p>
+      <subsection name="Transaction Processing Service">
+        <p>
+          The statement of work specifies that "Sales orders have to be
+          processed as they come in".  This means we need to have a
+          mechanism of receiving sales requests and automatically process
+          them.  This is similar to the way web servers work.  They
+          receive a request for a resource, process it, and return a
+          result (e.g. the HTML page).  This is known as Transaction
+          Processing.
+        </p>
+        <p>
+          To be fair, there are different types of transactions.  The
+          generic transaction service will most likely have to be broken
+          down into something more specific like a "Sales Order Processor".
+          The approach has to do with how generic you make your service.
+          There is a balance between usability and reusability.  The more
+          generic a service is, the more reusable it is.  Usually it is
+          also more difficult to comprehend.
+        </p>
+      </subsection>
+      <subsection name="Scheduling Service">
+        <p>
+          There are a couple of instances where an event must be scheduled
+          for a specified amount of time after a transaction.  In addition,
+          the inventory control processes need to kick off supply orders on
+          a periodic basis.  Because the statement of work states "server
+          automatically bills the customers 30 days after the sales order
+          is filled" we need a scheduling service.  The good news is that
+          Avalon Cornerstone provides one for us so we don't have to create
+          our own.
+        </p>
+      </subsection>
+      <subsection name="Messaging Service">
+        <p>
+          The statement of work specifies that "each server will
+          communicate via a messaging service" in our distributed system.
+          Let's face it, sometimes customers want a specific product or
+          method they want to use.  The messaging service is a prime
+          example of using another company's product.  Most likely, we
+          would use Java Messaging Service (JMS) to interface with the
+          Messaging Service.  Since JMS is a standard, it is unlikely
+          that the interface will change any time soon.
+        </p>
+        <p>
+          In practical experience, a well-designed message oriented system
+          will scale better than object oriented systems (like EJB).  One
+          reason for better scalability is that messaging tends to have
+          lower concurrent overhead memory.  Another reason for this is that
+          it is easier to spread the load of message processing across all
+          servers instead of concentrating all the processing in a small
+          cluster of servers (or even just one server).
+        </p>
+      </subsection>
+      <subsection name="Inventory Control Service">
+        <p>
+          While this is not a classic server piece in textbooks, it is a
+          requirement of this system.  The inventory control service
+          routinely monitors the records for what the factory or warehouse
+          has in stock, and triggers events when stock starts running out.
+        </p>
+      </subsection>
+    </subsection>
+    <subsection name="Implied Services">
+      <p>
+        Using experience with past systems, and further breaking down
+        other services will yield a number of services that the system
+        needs that wasn't specified.  Due to space limitations, we will
+        avoid doing a full decomposition.
+      </p>
+      <subsection name="Authentication and Authorization Service">
+        <p>
+          The authentication and authorization service is not necessarily
+          specified in the statement of work -- but all business systems
+          must take security seriously.  That means all clients of the system
+          must be authenticated, and every action of the user must be
+          authorized.
+        </p>
+      </subsection>
+      <subsection name="Workflow Automation Service">
+        <p>
+          Workflow automation is a hot development area in enterprise
+          systems.  If you don't use a third party workflow management
+          server, you will have to invent your own.  Workflow automation
+          is generally the act of using a software system to route tasks
+          through a Company's business process.  For more information,
+          view the Workflow Management Council's web page at
+          <a href="http://www.wfmc.org">http://www.wfmc.org</a>.
+        </p>
+      </subsection>
+      <subsection name="Document Repository Service">
+        <p>
+          This definition of a "document repository" is very loosely
+          defined as the current state of information in a task.  In
+          other words, when the company receives a purchase order, our
+          system needs to store and recall the purchase order information.
+          The same goes for billing and any other process in the system
+          from inventory to new customer requests.
+        </p>
+      </subsection>
+    </subsection>
+    <subsection name="Summary">
+      <p>
+        I hope that the examples of services for the Business Server
+        project will help you discover more.  You will find that as you
+        go from higher levels of abstraction down to lower levels, you
+        will find more types of services required like Connection Management
+        to handle requests on open ports.  Some of the services we defined
+        will be implemented by third party systems such as the Messaging
+        Service and the Workflow Management Service.  It is in your best
+        interest to use a standard interface for these services so that
+        you can change vendors later.  Some services are actually multiple
+        services acting as one larger service.  Some are already available
+        within Avalon Excalibur or Avalon Cornerstone.
+      </p>
+      <p>
+        One thing to keep in mind while discovering the services in a
+        system is that a service should be a high level sub-system.  This
+        will help you define components using teams of analysts.  Because
+        we have already identified the main services, you can have more
+        than one person (or team) decompose each of the services in parallel.
+        The boundaries are well defined, so there is little chance for
+        overlap.  If you decide to do the parallel analysis, you should
+        come back together to identify common Components so that you can
+        reuse as much code as possible.
+      </p>
+      <img src="../images/deployment.gif"/>
+    </subsection>
+  </section>
+  <section name="Finding Components">
+    <p>
+      We will use the Document Repository Service mentioned already for the
+      process of identifying the proper Components.  For the sake of our
+      conversation, we will now state the requirements of the Document
+      Repository Service.  The repository will use a database for persistent
+      storage, identify and authorize clients, and cache documents in memory.
+    </p>
+    <subsection name="Practical Definition of Components">
+      <p>
+        When we talk about components, you have to think in terms of "What
+        facilities does my service need to operate?"  Avalon was conceived
+        with the concept of <em>casting</em> your system.  The
+        developer of the system        would come up with a list of responsibilities
+        for the Component known        as its <em>role</em>.
+      </p>
+      <subsection name="What is a Role?">
+        <p>
+          The concept of roles comes from the theater.  A play, musical, or
+          movie will have a certain number of roles that actors play.  Although
+          there never seems to be a shortage of actors, there are a finite
+          number of roles.  Its <em>script</em> defines the
+          function or action of a role.  Just like the theatrical version, the
+          script determines how you interact with the Component.  Think of the
+          different roles in your system, and you will have your
+          <em>cast</em> of Components so to speak.
+        </p>
+        <p>
+          A role is the contract for a type of component.  For example, our
+          Document Repository Service needs to interact with a database.
+          Avalon Excalibur defines a Component that satisfies the role "Data
+          Source".  Excalibur includes two different Components that satisfy
+          that role, depending on the setting our Service will be living in;
+          however, they both satisfy the same contracts.  The majority of
+          Avalon based systems will only use one active Component for each
+          role.  The script is the work interface: the interface with which
+          other components interact.
+        </p>
+        <p>
+          There are specific contracts that you must define and keep in mind
+          when you specify interfaces for your Components.  The contracts
+          specify what users of the Component must provide, and what the
+          Component produces.  Sometimes you must include usage semantics in
+          the contract.  An example is the difference between a temporary
+          storage Component and a permanent storage Component.  When the
+          interface and contract are defined, you can work on your
+          implementation.
+        </p>
+      </subsection>
+    </subsection>
+    <subsection name="What is a good candidate for a Component?">
+      <p>
+        We have already identified four possibilities for Components within
+        our Document Repository Service: DataSourceComponent (from Excalibur),
+        Cache, Repository, and Guardian.  You should look for roles with a high
+        likelihood of multiple implementations that need to inter-operate
+        seamlessly.
+      </p>
+      <p>
+        Using that example, you will discover several instances where you need
+        replaceable facilities.  Most of the time, you will only be using one
+        implementation of the facility, but you need the ability to upgrade it
+        independently of the rest of the system.  Other times, you will need
+        alternate implementations due to environmental issues.  For example,
+        the "Data Source" that Excalibur defined will usually handle all the
+        JDBC Connection pooling itself-but sometimes you want to take advantage
+        of that facility built into a Java 2 Enterprise Edition (J2EE) server.
+        Excalibur solves this by having a "Data Source" that directly pools and
+        manages the JDBC connections, and one that uses Java's Naming and
+        Directory Interface (JNDI) to get the specified connection.
+      </p>
+    </subsection>
+    <subsection name="What is not a good Component?">
+      <p>
+        People who are used to JavaBeans tend to implement everything as a
+        JavaBean.  This means everything from data modeling to transaction
+        processing.  If you used this approach with Components, you might end
+        up with an overly complex system.  Think of Components as modeling a
+        service or facility, and not data.  You could have a Component that
+        pulls data from another resource, but the data should remain distinct
+        as data.  An example of this philosophy in Avalon Excalibur is the
+        fact that the Connection is not a Component.
+      </p>
+      <p>
+        Another example could be the Guardian Component we specified earlier.
+        It could be argued that the logic involved in the Guardian is so
+        specific to the Document Repository Service that it could not be used
+        again for a completely different service.  While there are ways of
+        managing the complexity, and ways of making it flexible-sometimes the
+        extra work is not worth it.  You have to weigh your decisions in such
+        cases carefully.  If the logic performed in a potential Component is
+        going to be applied consistently then it might make sense to keep it a
+        Component.  There is room to have multiple instances of a Component in
+        a system, and they would be selected at run time.  If the logic for a
+        potential Component is specific to only one other Component, it might
+        be worth it to absorb the logic into the other Component.  Using the
+        example of the Guardian Component and the Repository Component, we
+        could argue that our Guardian is so specific to the Repository, that it
+        is not implemented as a Component.
+      </p>
+    </subsection>
+    <subsection name="Decomposing the Document Repository Service">
+      <p>
+        We will list the Components that we are going to implement with a
+        description of their roles, the rationale, and their origination (if
+        the component already exists).
+      </p>
+      <subsection name="DocumentRepository">
+        <p>
+          The DocumentRepository is the parent Component of the whole service.
+          In Avalon, services are implemented as Blocks, which are a specific
+          kind of Component.  The Block must have a work interface that extends
+          the Service marker interface.  The Block interface also extends
+          Avalon's Component interface.  Please note that Block and Service are
+          interfaces that are part of Avalon Phoenix.  In the end, a Service is
+          still technically just a specific type of Component.
+        </p>
+        <p>
+          The DocumentRepository is our method of getting Document objects from
+          persistent storage.  It interacts with the other Components in the
+          service to provide security, functionality, and speed.  This
+          particular DocumentRepository will connect to a database and employ
+          the logic to build the Document objects internally.
+        </p>
+      </subsection>
+      <subsection name="DataSourceComponent">
+        <p>
+          The DataSourceComponent is supplied by Avalon Excalibur.  It is our
+          method of retrieving valid JDBC Connection objects for our use.
+        </p>
+      </subsection>
+      <subsection name="Cache">
+        <p>
+          The Cache is a short-term memory-based storage facility.  The
+          DocumentRepository will use it to store Document objects referenced
+          by a hash algorithm.  In order to promote the reusability of the
+          Cache Component, the stored object must implement a Cacheable
+          interface.
+        </p>
+      </subsection>
+      <subsection name="Guardian">
+        <p>
+          The Guardian Component is used to manage permissions based on the
+          Principal.  The Guardian will load its permission sets from a
+          database.  The Guardian will use the standard Java security model to
+          enforce access to the specific Document objects.
+        </p>
+      </subsection>
+    </subsection>
+    <subsection name="Summary">
+      <p>
+        At this point, you should have an idea of what makes a good Component.
+        The examples describe all the Components that will be in the Document
+        Repository Service, with a brief summary of what they will do.  A quick
+        glance through the list supports the approach of only implementing
+        facilities as Components -- not data.  At this point, you should be able
+        to determine what components your services need to operate.
+      </p>
+    </subsection>
+  </section>
+ </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/framework.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/framework.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,785 @@
+<?xml version="1.0"?>
+<document>
+
+  <properties>
+    <author email="hammant@apache.org">Paul Hammant</author>
+    <author email="bloritsch@apache.org">Berin Loritsch</author>
+    <title>Framework and Foundations</title>
+  </properties>
+
+<body>
+  <section name="Framework and Foundations">
+  <p>
+    Avalon Framework is the central piece to the entire Avalon project.  If you
+    understand the contracts and constructs defined in the framework, you can
+    understand anything that uses it.  Remember the principles and patterns we
+    have already discussed so far.  In this section, we will expound on how the
+    Role concept works practically, the lifecycle of Components, and how the
+    interfaces work.
+  </p>
+  </section>
+  <section name="Defining the Component's Role">
+    <p>
+      In Avalon, all Components have a role.  The reason is that you retrieve
+      your Components by role.  At this stage, the only concern area we are
+      using is the signature of the role.  If you recall in the second section,
+      we defined a Component as "the combination of a work interface and the
+      implementation of the interface".  That work interface is your role.
+    </p>
+    <subsection name="Creating the Role's Interface">
+      <p>
+        Below you will find an example interface, followed by some best
+        practices along with their reasoning.
+      </p>
+      <source>
+<![CDATA[
+package org.apache.bizserver.docs;
+
+public interface DocumentRepository
+{
+    String ROLE = DocumentRepository.class.getName();
+
+    Document getDocument(Principal requestor, int refId);
+}
+]]>
+      </source>
+      <subsection name="Best Practices">
+        <ol>
+          <li>
+            <p>
+              Include a String called "ROLE" that has the role's official name.
+              That name is the same as the fully qualified name for the work
+              interface.  This helps later on when we need to get an instance
+              of the Component later.
+            </p>
+          </li>
+          <li>
+            <p>
+              Do extend the Component interface if possible.  This makes it easier
+              on you when it is time to release your Component.  If you are not
+              in control of the work interface, then you do not have this option.
+              It is not the end of the world, as you can recast the instance to
+              <code>Component</code> when it is time to release it.
+            </p>
+          </li>
+          <li>
+            <p>
+              Do one thing and do it well.  A Component should have the simplest
+              interface possible, When your work interface extends several other
+              interfaces, you muddy the contract for this Component.  An old
+              American acronym helps define this pattern: Keep It Simple, Stupid
+              (KISS).  It's not hard to outsmart yourself -- I've done it
+              a number of times myself.
+            </p>
+          </li>
+          <li>
+            <p>
+              Only specify the methods you need.  The client should have no
+              knowledge of implementation details, and too many alternative
+              methods only introduce unneeded complexity.  In other words pick
+              an approach and stick with it.
+            </p>
+          </li>
+          <li>
+            <p>
+              Don't let your Role's interface extend any lifecycle or lifestyle
+              interfaces.  By implementing any of those classes of interfaces, you
+              are tying an implementation to the specification.  This is a
+              bad pattern and this will only lead to debugging and implementation
+              problems later.
+            </p>
+          </li>
+        </ol>
+      </subsection>
+      <subsection name="Choosing the Role's Name">
+        <p>
+          In Avalon, every Role has a name. It is how you get references to
+          other Components in the system.  The Avalon team has outlined some
+          idioms to follow for the naming of your role.
+        </p>
+        <subsection name="Naming Idioms">
+          <ol>
+            <li>
+              <p>
+                The fully qualified name of the work interface is usually the
+                role name.  The exceptions are listed after this general rule.
+                Using this example, our theoretical Component's name would be
+                "org.apache.bizserver.docs.DocumentRepository".  This is the
+                name that would be included in your interface's "ROLE"
+                property.
+              </p>
+            </li>
+            <li>
+              <p>
+                If we obtain the reference to this Component through a
+                Component Selector, we usually take the role name derived from
+                the first rule and append the word "Selector" to the end.  The
+                result of this naming rule would be
+                "org.apache.bizserver.docs.DocumentRepositorySelector".  You
+                can use the shorthand
+                <parameter>DocumentRepository.ROLE + "Selector"</parameter>.
+              </p>
+            </li>
+            <li>
+              <p>
+                If we have multiple Components that implement the same work
+                interface, but are used for different purposes, we have
+                separate roles.  A Role is the Component's purpose in the
+                system.  Each role name will start with the original role
+                name, but the purpose name of the role will be appended
+                with a <parameter>/${purpose}</parameter>.  By example
+                we could have the following purposes for our
+                DocumentRepository: PurchaseOrder and Bill.  Our two roles
+                would be expressed as
+                <parameter>DocumentRepository.ROLE + "/PurchaseOrder"</parameter>
+                and <parameter>DocuementRepository.ROLE + "/Bill"</parameter>,
+                respectively.
+              </p>
+            </li>
+          </ol>
+        </subsection>
+      </subsection>
+    </subsection>
+  </section>
+  <section name="Overview of Framework Interfaces">
+    <p>
+      The entire Avalon Framework can be divided into seven main categories (as
+      is the API): Activity, Service, Configuration, Context, Logger,
+      Parameters, Thread, and Miscellany.  Each of those categories (except
+      Miscellany) represents a unique concern area.  It is common for a
+      Component to implement several interfaces to identify all the concern
+      areas that the Component is worried about.  This will allow the
+      Component's container to manage each Component in a consistent manner.
+    </p>
+    <subsection name="Lifecycle for Avalon Interfaces">
+      <p>
+        When a framework implements several interfaces to separate the concerns
+        of the Component, there is potential for confusion over the order of
+        method calls.  Avalon Framework realizes this, and so we developed the
+        contract for lifecycle ordering of events.  If your Component does not
+        implement the associated Interface, then simply skip to the next event
+        that will be called.  Because there is a correct way to create and
+        prepare Components, you can set up your Components as you receive
+        events.
+      </p>
+      <p>
+        The Lifecycle of a Component is split into three phases:
+        Initialization, Active Service, and Destruction.  Because these phases
+        are sequential, we will discuss the events in order.  In addition, the
+        act of Construction and Finalization is implicit due to the Java
+        language, so they will be skipped.  The steps will list the method
+        name, and the required interface.  Within each phase, there will be a
+        number of stages identified by method names.  Those stages are executed
+        if your Component extends the associated interface specified in
+        parenthesis.
+      </p>
+      <subsection name="Initialization">
+        <p>
+          This list of stages occurs in this specific order, and occurs only
+          once during the life of the Component.
+        </p>
+        <ul>
+          <li>
+            <p>
+              <code>enableLogging</code>
+              [<code>LogEnabled</code>]
+            </p>
+          </li>
+          <li>
+            <p>
+              <code>contextualize</code>
+              [<code>Contextualizable</code>]
+            </p>
+          </li>
+          <li>
+            <p>
+              <code>compose</code>
+              [<code>Composeable</code>]
+            </p>
+          </li>
+          <li>
+            <p>
+              <code>service</code>
+              [<code>Serviceable</code>]
+            </p>
+          </li>
+          <li>
+            <p>
+              <code>configure</code>
+             [<code>Configurable</code>]
+              <em>or</em>
+              <code>parameterize</code>
+             [<code>Parameterizable</code>]
+            </p>
+          </li>
+          <li>
+            <p>
+              <code>initialize</code>
+              [<code>Initializable</code>]
+            </p>
+          </li>
+          <li>
+            <p>
+              <code>start</code>
+              [<code>Startable</code>]
+            </p>
+          </li>
+        </ul>
+      </subsection>
+      <subsection name="Active Service">
+        <p>
+          This list of stages occurs in this specific order, but may occur
+          multiple times during the life of the Component.  Please note that
+          should you choose to not implement the Suspendable interface, it is
+          up to your Component to ensure proper functionality while executing
+          any of the Re* stages.
+        </p>
+        <ul>
+          <li>
+            <p>
+              <code>suspend</code>
+              [<code>Suspendable</code>]
+            </p>
+          </li>
+          <li>
+            <p>
+              <code>recontextualize</code>
+              [<code>Recontextualizable</code>]
+            </p>
+          </li>
+          <li>
+            <p>
+              <code>recompose</code>
+              [<code>Recomposable</code>]
+            </p>
+          </li>
+          <li>
+            <p>
+              <code>reconfigure</code>
+              [<code>Reconfigurable</code>]
+            </p>
+          </li>
+          <li>
+            <p>
+              <code>resume</code>
+              [<code>Suspendable</code>]
+            </p>
+          </li>
+        </ul>
+      </subsection>
+      <subsection name="Destruction">
+        <p>
+          This list of stages occurs in the order specified, and occurs only
+          once during the life of the Component.
+        </p>
+        <ul>
+          <li>
+            <p>
+              <code>stop</code>
+              [<code>Startable</code>]
+            </p>
+          </li>
+          <li>
+            <p>
+              <code>dispose</code>
+              [<code>Disposable</code>]
+            </p>
+          </li>
+        </ul>
+      </subsection>
+    </subsection>
+    <subsection name="Avalon Framework Contracts">
+      <p>
+        In this section, we will cover all the sections alphabetically with
+        the exception of the most important concern area: Component.
+      </p>
+      <table>
+        <tr><th>A Word About Containers</th></tr>
+        <tr><td>
+          When I use the word "container" or "contains" when describing
+          Components, I have a very specific meaning.  I am referring to child
+          Components that the parent Component has instantiated and controls.
+          I am not referring to Components obtained through a ServiceManager or
+	  ServiceSelector.  Furthermore, some Avalon stages
+	  received by a
+          container must be propagated to all of its children implementing the
+          appropriate interface.  The specific interfaces in question are
+          Initializable, Startable, Suspendable, and Disposable.  The reasoning
+          for this contract is that these particular interfaces have specific
+          execution contracts.
+        </td></tr>
+      </table>
+      <subsection name="Service">
+        <p>
+	  This is the core of Avalon Framework. Any interface defined in this concern
+	  area will throw ServiceException.
+        </p>
+        <subsection>
+          <title>Serviceable</title>
+          <p>
+            A Component that uses other Components needs to implement either this
+	    interface or the old Composable interface. The new interface is the
+	    preferred way of doing things.  The interface has only one method
+            <code>service</code> with a
+            <code>ServiceManager</code> passed in as the only
+            parameter.
+          </p>
+          <p>
+            The contract surrounding this interface is that the
+            <code>service</code> is called once and only once during
+            the lifetime of this Component.
+          </p>
+          <p>
+            This interface along with any other interface that has methods
+            specified uses the Inversion of Control pattern.  It is called by
+            the Component's container, and only the Components that this
+            Component needs should be present in the
+            <code>ServiceManager</code>.
+          </p>
+        </subsection>
+        <subsection name="Reserviceable?">
+          <p>
+            The Recomposable interface has no replacement in the Serviceable
+	    package. Use of Recomposable has been extremely rare, and many
+	    applications that use avalon do not provide support for it.
+          </p>
+        </subsection>
+      </subsection>
+
+      <subsection name="Activity">
+        <p>
+          This group of interfaces refers to contracts for the life cycle of
+          the Component.  If there is an error during any method call with this
+          group of interfaces, then you can throw a generic Exception.
+        </p>
+        <subsection name="Disposable">
+          <p>
+            The <code>Disposable</code> interface is used by any
+            Component that wants a structured way of knowing it is no longer
+            needed.  Once a Component is disposed of, it can no longer be used.
+            In fact, it should be awaiting garbage collection.  The interface
+            only has one method <code>dispose</code> that has no
+            parameters.
+          </p>
+          <p>
+            The contract surrounding this interface is that the
+            <code>dispose</code> method is called once and the method
+            is the last one called during the life of the Component.  Further
+            implications include that the Component will no longer be used,
+            and all resources held by this Component must be released.
+          </p>
+        </subsection>
+        <subsection name="Initializable">
+          <p>
+            The <code>Initializable</code> interface is used by any
+            Component that needs to create Components or perform
+            initializations that take information from other initialization
+            steps.  The interface only has one method
+            <code>initialize</code> that has no parameters.
+          </p>
+          <p>
+            The contract surrounding this interface is that the
+            <code>initialize</code> method is called once and the
+            method is the last one called during the initialization sequence.
+            Further implications include that the Component is now live, and it
+            can be used by other Components in the system.
+          </p>
+        </subsection>
+        <subsection name="Startable">
+          <p>
+            The <code>Startable</code> interface is used by any
+            Component that is constantly running for the duration of its life.
+            The interface defines two methods: <code>start</code> and
+            <code>stop</code>.  Neither method has any parameters.
+          </p>
+          <p>
+            The contract surrounding this interface is that the
+            <code>start</code> method is called once after the
+            Component is fully initialized, and the <code>stop</code>
+            method is called once before the Component is disposed of.  Neither
+            method will be called more than once, and <code>start</code>
+            will always be called before <code>stop</code>.
+            Implications of using this interface require that the
+            <code>start</code> and <code>stop</code> methods be
+            conducted safely (unlike the <code>Thread.stop</code>
+            method) and not render the system unstable.
+          </p>
+        </subsection>
+        <subsection name="Suspendable">
+          <p>
+            The <code>Suspendable</code> interface is used by any
+            Component that is running for the duration of its life that permits
+            itself to be suspended.  While it is most commonly used in
+            conjunction with the <code>Startable</code> interface, it
+            is not required to do so.  The interface defines two methods:
+            <code>suspend</code> and <code>resume</code>.
+            Neither method has any parameters.
+          </p>
+          <p>
+            The contract surrounding this interface is that
+            <code>suspend</code> and <code>resume</code> may be
+            called any number of times, but never before the Component is
+            initialized and started or after the Component is stopped and
+            disposed.  Calls to <code>suspend</code> when the system is
+            already suspended should have no effect as well as calls to
+            <code>resume</code> when the system is already running.
+          </p>
+        </subsection>
+      </subsection>
+      <subsection name="Configuration">
+        <p>
+          This group of interfaces describes the concern area of configuration.
+          If there are any problems, such as required
+          <code>Configuration</code> elements that are missing, then
+          you may throw a <code>ConfigurationException</code>.
+        </p>
+        <subsection name="Configurable">
+          <p>
+            Components that modify their exact behavior based on configurations
+            must implement this interface to obtain an instance of the
+            <code>Configuration</code> object.  There is one method
+            associated with this interface: <code>configure</code> with
+            a <code>Configuration</code> object as the only
+            parameter.
+          </p>
+          <p>
+            The contract surrounding this interface is that the
+            <code>configure</code> method is called once during the
+            life of the Component.  The <code>Configuration</code>
+            object passed in <em>must not be null</em>.
+          </p>
+        </subsection>
+        <subsection name="Configuration">
+          <p>
+            The <code>Configuration</code> object is a representation
+            of a tree of configuration elements that have attributes.  In a
+            way, you can view the configuration object as an overly simplified
+            DOM.  There are too many methods to cover in this document, so
+            please review the JavaDocs.  You can get the
+            <code>Configuration</code> object's value as a
+            <code>String</code>, <code>int</code>,
+            <code>long</code>, <code>float</code>, or
+            <code>boolean</code> -- all with default values.  You
+            can do the same for attribute values.  You may also get child
+            <code>Configuration</code> objects.
+          </p>
+          <p>
+            There is a contract that says that if a
+            <code>Configuration</code> object has a value that it
+            should not have any children, and the corollary is also
+            true -- if there are any children, there should be no value.
+          </p>
+          <p>
+            You will notice that you may not get parent
+            <code>Configuration</code> objects.  This is by design.
+            To reduce the complexity of the <code>Configuration</code>
+            system, containers will most likely pass child configuration
+            objects to child Components.  The child Components should not have
+            any access to parent configuration values.  This approach might
+            provide a little inconvenience, but the Avalon team opted for
+            security by design in every instance where there was a tradeoff.
+          </p>
+        </subsection>
+        <subsection name="Reconfigurable">
+          <p>
+            Components that implement this interface behave very similar to
+            <code>Recomposable</code> Components.  It's only method
+            is named <code>reconfigure</code>.  This design decision is
+            used to minimize the learning curve of the Re* interfaces.
+            <code>Reconfigurable</code> is to
+            <code>Configurable</code> as
+            <code>Recomposable</code> is to
+            <code>Composable</code>.
+          </p>
+        </subsection>
+      </subsection>
+      <subsection name="Context">
+        <p>
+          The concept of the <code>Context</code> in Avalon arose
+          from the need to provide a mechanism to pass simple objects from a
+          container to a Component.  The exact protocol and binding names are
+          purposely left undefined to provide the greatest flexibility to
+          developers.  The contracts surrounding the use of the
+          <code>Context</code> object are left for you to define in
+          your system, however the mechanism is the same.
+        </p>
+        <subsection name="Context">
+          <p>
+            The <code>Context</code> interface defines only the
+            method <code>get</code>.  It has an
+            <code>Object</code> for a parameter, and it returns an
+            object based on that key.  The <code>Context</code> is
+            populated by the container, and passed to the child Component who
+            only has access to <em>read</em> the
+            <code>Context</code>.
+          </p>
+          <p>
+            There is no set contract with the <code>Context</code>
+            other than it should always be <em>read-only</em> by
+            the child Component.  If you extend Avalon's
+            <code>Context</code>, please respect that contract.  It
+            is part of the Inversion of Control pattern as well as security by
+            design.  In addition, it is a bad idea to pass a reference to the
+            container in the Context for the same reason that the Context
+            should be <em>read-only</em>.
+          </p>
+        </subsection>
+        <subsection name="Contextualizable">
+          <p>
+            A Component that wishes to receive the container's
+            <code>Context</code> will implement this interface.  It
+            has one method named <code>contextualize</code> with the
+            parameter being the container's <code>Context</code>
+            object.
+          </p>
+          <p>
+            The contract surrounding this interface is that the
+            <code>contextualize</code> method is called once during the
+            life of a Component, after <code>LogEnabled</code> but
+            before any other initialization method.
+          </p>
+        </subsection>
+        <subsection name="Recontextualizable">
+          <p>
+            Components that implement this interface behave very similar to
+            <code>Recomposable</code> Components.  It's only method
+            is named <code>recontextualize</code>.  This design
+            decision is used to minimize the learning curve of the Re*
+            interfaces.  <code>Recontextualizable</code> is to
+            <code>Contextualizable</code> as
+            <code>Recomposable</code> is to
+            <code>Composable</code>.
+          </p>
+        </subsection>
+        <subsection name="Resolvable">
+          <p>
+            The Resolvable interface is used to mark objects that need to be
+            resolved in some particular context.  An example might be an object
+            that is shared by multiple <code>Context</code> objects,
+            and modifies its behavior based on a particular
+            <code>Context</code>.  The <code>resolve</code>
+            method is called by the <code>Context</code> before the
+            object is returned.
+          </p>
+        </subsection>
+      </subsection>
+      <subsection name="Logger">
+        <p>
+          Every system needs the ability to log events.  Avalon uses its
+          LogKit project internally.  While LogKit does have ways of accessing
+          a Logger instance statically, the Framework wishes to use the
+          Inversion of Control pattern.
+        </p>
+        <subsection name="LogEnabled">
+          <p>
+            Every Component that needs a Logger instance implements this
+            interface.  The interface has one method named
+            <code>enableLogging</code> and passes Avalon Framework's
+            <code>Logger</code> instance to the Component.
+          </p>
+          <p>
+            The contract surrounding this method is that it is called only
+            once during the Component's lifecycle before any other
+            initialization step.
+          </p>
+        </subsection>
+        <subsection name="Logger">
+          <p>
+            The <code>Logger</code> interface is used to abstract
+            away the differences in logging libraries.  It provides only a
+            client API.  Avalon Framework provides three wrapper classes that
+            implement this interface: <code>LogKitLogger</code> for
+            LogKit, <code>Log4jLogger</code> for Log4J, and
+            <code>Jdk14Logger</code> for JDK 1.4 logging.
+          </p>
+        </subsection>
+      </subsection>
+      <subsection name="Parameters">
+        <p>
+          Avalon realizes that the Configuration object hierarchy can be
+          heavy in many circumstances.  Therefore, we came up with a
+          <code>Parameters</code> object that captures the
+          convenience of <code>Configuration</code> objects with a
+          simple name and value pair.
+        </p>
+        <subsection name="Parameterizable">
+          <p>
+            Any Component that wants to use <code>Parameters</code>
+            instead of <code>Configuration</code> objects will
+            implement this interface.  <code>Parameterizable</code>
+            has one method named <code>parameterize</code> with the
+            parameter being the <code>Parameters</code> object.
+          </p>
+          <p>
+            The contract is that this is called once during the lifecycle of
+            the Component.  This interface is not compatible with the
+            <code>Configurable</code> interface.
+          </p>
+        </subsection>
+        <subsection name="Parameters">
+          <p>
+            The <code>Parameters</code> object provides a mechanism
+            to obtain a value based on a <code>String</code> name.
+            There are convenience methods that allow you to use defaults if the
+            value does not exist, as well as obtain the value in any of the
+            same formats that are in the <code>Configurable</code>
+            interface.
+          </p>
+          <p>
+            While there are similarities between the
+            <code>Parameters</code> object and the
+            <code>java.util.Property</code> object, there are some
+            important semantic differences.  First,
+            <code>Parameters</code> are
+            <em>read-only</em>. Second,
+            <code>Parameters</code> are easily derived from
+            <code>Configuration</code> objects.  Lastly, the
+            <code>Parameters</code> object is derived from XML
+            fragments that look like this:
+          </p>
+          <source>
+<![CDATA[
+<parameter name="param-name" value="param-value"/>
+]]>
+          </source>
+        </subsection>
+      </subsection>
+      <subsection name="Component">
+        <p>
+	  This used to be the core of Avalon Framework. The Component interface
+	  and it friends have been deprecated in favor of the Service package,
+	  which is exactly the same, except that the service package uses
+	  java.lang.Object in place of the Component interface.
+          Any interface defined in this
+          concern area will throw ComponentException.
+        </p>
+        <subsection name="Component">
+          <p>
+            Before the service package was put in place, every Avalon Component
+	    had to implement the Component interface. We have removed this restriction
+	    in the service package.
+	    The Component Manager and Component Selector only handle Components.
+	    There are no methods associated with this interface.  It is only used as
+	    a marker interface.
+          </p>
+	  <p>
+	    For maximum backward compatibility with existing applications, it can still
+	    be useful to implement the Component interface as older applications may
+	    depend on it being available.
+	  </p>
+          <p>
+            Any Component must use default no parameter constructors.  All
+            configurations are done with the
+            <code>Configurable</code> or
+            <code>Parameterizable</code> interfaces.
+          </p>
+        </subsection>
+        <subsection name="Composable">
+          <p>
+            A Component that uses other Components needs to implement either this
+	    interface or the new Serviceable interface. The new interface is the
+	    preferred way of doing things.  The interface has only one method
+            <code>compose</code> with a
+            <code>ComponentManager</code> passed in as the only
+            parameter.
+          </p>
+          <p>
+            The contract surrounding this interface is that the
+            <code>compose</code> is called once and only once during
+            the lifetime of this Component.
+          </p>
+          <p>
+            This interface along with any other interface that has methods
+            specified uses the Inversion of Control pattern.  It is called by
+            the Component's container, and only the Components that this
+            Component needs should be present in the
+            <code>ComponentManager</code>.
+          </p>
+        </subsection>
+        <subsection name="Recomposable">
+          <p>
+            On rare occasions, a Component will need a new
+            <code>ComponentManager</code> with new Component role
+            mappings.  For those occasions, implement the recomposable
+            interface.  It has a separate method from Composable called
+            <code>recompose</code>.
+          </p>
+          <p>
+            The contract surrounding the interface states that the
+            <code>recompose</code> method can be called any number of
+            times, but never before the Component is fully initialized.  When
+            this method is called, the Component must update itself in a safe
+            and consistent manner.  Usually this means all processing that the
+            Component is performing must stop before the update and resume
+            after the update.
+          </p>
+        </subsection>
+      </subsection>
+      <subsection name="Thread">
+        <p>
+          The thread marker interfaces are used to signal to the container
+          essential semantic information regarding the Component use.  They
+          mark a component implementation in regards to thread safety.  It is
+          a best practice to delay implementing these interfaces until the
+          final Component implementation class.  This avoids complications
+          when an implementation is marked <code>ThreadSafe</code>,
+          but a component that extends that implementation is not.  The
+          interfaces defined in this package comprise part of what I call
+          the <em>LifeStyle</em> interfaces.  There is one more
+          <em>LifeStyle</em> interface that is part of the
+          Excalibur package -- so it is an extension to this core
+          set -- <code>Poolable</code> that is defined in
+          Excalibur's pool implementations.
+        </p>
+        <subsection name="Single Threaded">
+         <p>
+            is that the interface or the implementation precludes this
+            Component being accessed by several threads simultaneously.  Each
+            thread needs its own instance of the Component.  Alternatively, you
+            may use Component pooling instead of creating a new instance for
+            every request for the Component.  In order to use pooling, you will
+            need to implement Avalon Excalibur's <code>Poolable</code>
+            interface instead of this one.
+          </p>
+        </subsection>
+        <subsection name="ThreadSafe">
+          <p>
+            The contract with <code>ThreadSafe</code> Components is
+            that both their interface and their implementation function
+            correctly no matter how many threads access the Component
+            simultaneously.  While this is generally a lofty design goal,
+            sometimes it is simply not possible due to the technologies you are
+            using.  A Component that implements this interface will generally
+            only have one instance available in the system, and other
+            Components will use that one instance.
+          </p>
+        </subsection>
+      </subsection>
+      <subsection name="Miscellany">
+        <p>
+          The classes and interfaces in the root package for Avalon Framework
+          incorporates Cascading Exceptions, and a couple of generic utilities.
+          However, one class deserves mention beyond the others.
+        </p>
+        <subsection name="Version">
+          <p>
+            Java versioning techniques are entries in
+            the manifest file in a jar.  The problem is, when the jar is
+            unpacked you lose the versioning information, and the versioning
+            is in an easily modified text file.  When you couple this with a
+            higher learning curve, detecting Component or Interface versions
+            is difficult.
+          </p>
+          <p>
+            The Avalon team came up with the Version object to allow you to
+            have easily determined versions, and to compare versions.  You may
+            implement the <code>Version</code> object in your
+            Components and your tests for the proper Component or minimum
+            version level will be much easier.
+          </p>
+        </subsection>
+      </subsection>
+    </subsection>
+  </section>
+ </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/implementing.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/implementing.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,1090 @@
+<?xml version="1.0"?>
+<document>
+
+  <properties>
+    <author email="hammant@apache.org">Paul Hammant</author>
+    <author email="bloritsch@apache.org">Berin Loritsch</author>
+    <title>Using Avalon Frameowork</title>
+  </properties>
+
+<body>
+  <section name="Using Avalon Framework">
+  <p>
+    After your analysis is complete, you need to create the Components and
+    Services that make up your system.  Avalon would be of little use if it
+    only described some idioms for you to use.  Even then, the use of those
+    idioms and patterns would still help in understanding the overall system.
+    Avalon Excalibur provides some useful Components and utilities that you can
+    incorporate into your own system that will make your life much easier.  For
+    our demonstration, we will go through the process of defining a Component
+    that retrieves a document instance from a repository.  If you recall our
+    discussion about the theoretical Business Server, we identified this
+    Component as a Service.  In practical situations, a Service is a Component
+    that has a larger scope.
+  </p>
+  </section>
+  <section name="Implementing the Component">
+    <p>
+      At this point, we define how to implement our Component.  We will go
+      through the process of implementing the DocumentRepository Component
+      previously mentioned.  The first things we need to figure out are the
+      concern areas for our Component.  Then we have to figure out how our
+      Component will be created and managed.
+    </p>
+    <section name="Choosing the Concern Areas">
+      <p>
+        We have already defined the Role and the Interface for our
+        DocumentRepository Component in the last chapter, we are ready to
+        create the implementation.  Because the interface for the
+        DocumentRepository only defines one method, we have an opportunity to
+        create a thread-safe Component.  This is the most desired type of
+        component because it allows for the least amount of resource
+        utilization.  In order for our implementation to be thread-safe, we do
+        need to be careful about how we implement the Component.  Since all of
+        our documents are stored in a database, and we desire to use an
+        external Guardian Component, we will need access to other Components.
+        As responsible developers, we will want to log messages that will help
+        us debug our component, and track down what is going on internally.
+        The beauty of the Avalon Framework is that you only implement the
+        interfaces you need, and ignore the ones you don't.  This is where
+        Separation of Concerns pays off.  As you find you need a new concern
+        area addressed, you merely implement the associated interface, and
+        incorporate the new functionality.  To the client of your Component,
+        there is no difference.
+      </p>
+      <p>
+        Since it is a design goal to be thread-safe, we already know that we
+        need to implement the ThreadSafe interface.  The DocumentRepository
+        interface only has one method, so the use of the Component's work
+        interface is compatible with that requirement.  Furthermore, we know
+        that a Component will not be used before it is fully initialized, nor
+        will it be used once it is destroyed.
+      </p>
+      <p>
+        There are a couple of implicit interfaces that we need to implement to
+        accomplish the design.  We want our solution to be as secure as
+        possible and explicitly track whether the Component is fully
+        initialized or not.  To accomplish this goal, we will implement the
+        Initializable and Disposable interfaces.  Since specific information
+        about our environment may change, or may need to be customized, we need
+        to make our DocumentRepository Configurable.  Our Component makes use
+        of other Components, and the method that Avalon provides to get
+        instances of the required Component is by using a ServiceManager.  We
+        will need to implement the Serviceable interface to get an instance of
+        the ServiceManager.
+      </p>
+      <p>
+        Because the DocumentRepository accesses the documents in the database,
+        we need to make a decision.  Do we want to take advantage of the Avalon
+        Excalibur DataSourceComponent, or do we want to implement our own
+        Connection management code.  For the sake of this paper, we will use
+        the DataSourceComponent.
+      </p>
+      <p>
+        At this point, our skeleton class looks like this:
+      </p>
+      <source>
+<![CDATA[
+public class DatabaseDocumentRepository
+extends AbstractLogEnabled
+implements DocumentRepository , Configurable, Serviceable, Initializable,
+           Disposable, ThreadSafe
+{
+    private boolean initialized = false;
+    private boolean disposed = false;
+    private ServiceManager manager = null;
+    private String dbResource = null;
+
+    /**
+     * Constructor.  All Components need a public no argument constructor
+     * to be a legal Component.
+     */
+    public DatabaseDocumentRepository() {}
+
+    /**
+     * Configuration.  Notice that I check to see if the Component has
+     * already been configured?  This is done to enforce the policy of
+     * only calling Configure once.
+     */
+    public final void configure(Configuration conf)
+        throws ConfigurationException
+    {
+        if (initialized || disposed)
+        {
+            throw new IllegalStateException ("Illegal call");
+        }
+
+        if (null == this.dbResource)
+        {
+            this.dbResource = conf.getChild("dbpool").getValue();
+            getLogger().debug("Using database pool: " + this.dbResource);
+            // Notice the getLogger()?  This is from AbstractLogEnabled
+            // which I extend for just about all my components.
+        }
+    }
+
+    /**
+     * Composition.  Notice that I check to see if the Component has
+     * already been initialized or disposed?  This is done to enforce
+     * the policy of proper lifecycle management.
+     */
+    public final void service(ServiceManager smanager)
+        throws ServiceException
+    {
+        if (initialized || disposed)
+        {
+            throw new IllegalStateException ("Illegal call");
+        }
+
+        if (null == this.manager)
+        {
+            this.manager = smanager;
+        }
+    }
+
+    public final void initialize()
+        throws Exception
+    {
+        if (null == this.manager)
+        {
+            throw new IllegalStateException("Not Composed");
+        }
+
+        if (null == this.dbResource)
+        {
+            throw new IllegalStateException("Not Configured");
+        }
+
+        if (disposed)
+        {
+            throw new IllegalStateException("Already disposed");
+        }
+
+        this.initialized = true;
+    }
+
+    public final void dispose()
+    {
+        this.disposed = true;
+        this.manager = null;
+        this.dbResource = null;
+    }
+
+    public final Document getDocument(Principal requestor, int refId)
+    {
+        if (!initialized || disposed)
+        {
+            throw new IllegalStateException("Illegal call");
+        }
+
+        // TODO: FILL IN LOGIC
+    }
+}
+]]>
+      </source>
+      <p>
+        You will notice some constructs in the above code.  When you are
+        designing with security in mind, you should explicitly enforce every
+        contract on your Component.  Security is only as strong as the weakest
+        link.  You should only use a Component when you are certain it is fully
+        initialized, and never use it when it is disposed of.  I placed the
+        logic that you would need in this skeleton class because that way you
+        can adopt the same practices in classes that you write.
+      </p>
+    </section>
+    <section name="Instantiating and Managing Components">
+      <p>
+        In order for you to understand how the Container/Component relationship
+        works, we will first discuss the manual method of managing Components.
+        Next, we will discuss how Avalon's Excalibur Component infrastructure
+        hides the complexity from you.  You will still find times when you
+        would rather manage components yourself.  Most of the time the power
+        and flexibility of Excalibur is just what you need.
+      </p>
+      <section name="The Manual Method">
+        <p>
+          All of Avalon's Components are created somewhere.  The code that
+          creates the Component is that Component's Container.  The Container
+          is responsible for managing the Component's lifecycle from
+          construction through destruction.  A Container can be the static
+          "main" method called from a command line, or it can be another
+          Component.  Remember the Inversion of Control pattern when you
+          design your Containers.  Information and method calls should only
+          flow from the Container to the Component.
+        </p>
+        <warning>
+          <title>Subversion of Control</title>
+          <p>
+            Subversion of Control is the anti-pattern to Inversion of Control.
+            Subversion of control is done when you pass a reference to a
+            Component's Container to the Component.  It is also done when you
+            have a Component manage it's own lifecycle.  Code that operates in
+            this manner should be considered defective.  The interactions that
+            happen when you confuse the Container/Component relationship make
+            the system harder to debug and security harder to audit.
+          </p>
+        </warning>
+        <p>
+          In order to manage the child Components, you need to keep a reference
+          to them for their entire lifetime.  Before the Container or any other
+          Component can use the child Component, it must go through the
+          initialization phase of its lifecycle.  For our DocumentRepository,
+          the code will look something like the following:
+        </p>
+        <source>
+<![CDATA[
+class ContainerComponent implements Initializable, Disposable
+{
+    DocumentRepository docs = new DatabaseDocumentRepository();
+    GuardianComponent guard = new DocumentGuardianComponent();
+    DefaultComponentManager manager = new DefaultComponentManager();
+
+    public void initialize()
+        throws Exception
+    {
+        Logger docLogger = new LogKitLogger( Hierarchy.defaultHierarchy()
+                                             .getLoggerFor( "document" ) );
+
+        this.docs.enableLogging( docLogger.childLogger( "repository" ) );
+        this.guard.enableLogging( docLogger.childLogger( "security" ) );
+
+        DefaultConfiguration pool = new DefaultConfiguration("dbpool");
+        pool.setValue("main-pool");
+        DefaultConfiguration conf = new DefaultConfiguration("");
+        conf.addChild(pool);
+
+        this.manager.addComponent( DocumentRepository.ROLE, this.docs );
+        this.manager.addComponent( GuardianComponent.ROLE, this.guard );
+        this.docs.compose( this.manager );
+        this.guard.compose( this.manager );
+
+        this.docs.configure(conf);
+
+        this.guard.initialize();
+        this.docs.initialize();
+    }
+
+    public void dispose()
+    {
+        this.docs.dispose();
+        this.guard.dispose();
+    }
+}
+]]>
+        </source>
+        <p>
+          For the sake of brevity, I removed all the explicit checking from the
+          above code.  You can see that manually creating and managing
+          Components is very detailed.  If you forget to do one step in the
+          life of a Component, you will see bugs.  This also requires intimate
+          knowledge of the Components you are instantiating.  An alternate
+          approach would be to add a couple methods to the above
+          <code>ContainerComponent</code> that handles the
+          initialization of the components dynamically.
+        </p>
+      </section>
+      <section name="Automated Autonomy">
+        <p>
+          Developer's are naturally lazy, so they would spend the time to write
+          a specialized ComponentManager that became the Container for all of
+          their Components in the system.  That way they would not have to be
+          bothered with intimately knowing the interfaces of all the Components
+          in a system.  That can be a daunting task.  The Avalon developers
+          have created just such a beast.  Avalon Excalibur's Component
+          architecture includes a ComponentManager that is controlled by
+          configuration files written in XML.
+        </p>
+        <p>
+          There is a tradeoff when you relinquish the responsibility of
+          managing a Component to Excalibur's ComponentManager.  You relinquish
+          the fine control over what Components are included in the
+          ComponentManager.  However, if you have a large system, you will find
+          that manual control is a daunting task.  In that case, it is better
+          for the stability of the system for one entity to centrally manage
+          all the Components in a system.
+        </p>
+        <p>
+          Since there are varying levels of integration you want to achieve
+          with Excalibur's Component Architecture, we will start with the
+          lowest level.  Excalibur has a group of ComponentHandler objects that
+          act as individual Containers for one type of Component.  They manage
+          the complete life of your Component.  Let me introduce the concept of
+          lifestyle interfaces.  A lifestyle interface describes how the system
+          treats a Component.  Since the lifestyle of a component has impact on
+          the running of a system, we need to discuss the implications of the
+          current lifestyle interfaces:
+        </p>
+        <ol>
+          <li>
+            <p>org.apache.avalon.framework.thread.SingleThreaded</p>
+            <ol>
+              <li>
+                <p>
+                  Not thread-safe or reusable.
+                </p>
+              </li>
+              <li>
+                <p>
+                  When no lifestyle interface is supplied, this is assumed.
+                </p>
+              </li>
+              <li>
+                <p>
+                  A brand new instance is created every time the Component is
+                  requested.
+                </p>
+              </li>
+              <li>
+                <p>
+                  Creation and initialization is delayed until you request the
+                  Component.
+                </p>
+              </li>
+            </ol>
+          </li>
+          <li>
+            <p>org.apache.avalon.framework.thread.Threadsafe</p>
+            <ol>
+              <li>
+                <p>
+                  Component is fully reentrant, and complies with all
+                  principles of thread safety.
+                </p>
+              </li>
+              <li>
+                <p>
+                  One instance is created and shared with all Composables that
+                  request it.
+                </p>
+              </li>
+              <li>
+                <p>
+                  Creation and initialization is done when ComponentHandler is
+                  created.
+                </p>
+              </li>
+            </ol>
+          </li>
+          <li>
+            <p>org.apache.avalon.excalibur.pool.Poolable</p>
+            <ol>
+              <li>
+                <p>
+                  Not thread-safe, but is fully reusable.
+                </p>
+              </li>
+              <li>
+                <p>
+                  A pool of instances is created and the free instances are
+                  returned to Composables that request it.
+                </p>
+              </li>
+              <li>
+                <p>
+                  Creation and initialization is done when ComponentHandler is
+                  created.
+                </p>
+              </li>
+            </ol>
+          </li>
+        </ol>
+        <p>
+          The ComponentHandler interface is very simple to deal with.  You
+          initialize the Constructor with the Java class, the Configuration
+          object, the ComponentManager, a Context object, and a RoleManager.
+          If you know that your Component will not need any of the
+          aforementioned items, you can pass a null in its place.  After
+          that, when you need a reference to the Component, you call the "get"
+          method.  After you are done with it, you call the "put" method and
+          pass the Component back to the ComponentHandler.  The following code
+          will make it easier to understand.
+        </p>
+        <source>
+<![CDATA[
+class ContainerComponent implements Initializable, Disposable
+{
+    ComponentHandler docs = null;
+    ComponentHandler guard = null;
+    DefaultComponentManager manager = new DefaultComponentManager();
+
+    public void initialize()
+        throws Exception
+    {
+        DefaultConfiguration pool = new DefaultConfiguration("dbpool");
+        pool.setValue("main-pool");
+        DefaultConfiguration conf = new DefaultConfiguration("");
+        conf.addChild(pool);
+        this.docs.configure(conf);
+
+        this.docs = ComponentHandler.getComponentHandler(
+                                        DatabaseDocumentRepository.class,
+                                        conf, this.manager, null, null);
+        this.guard = ComponentHandler.getComponentHandler(
+                                        DocumentGuardianComponent.class,
+                                        null, this.manager, null, null);
+
+        Logger docLogger = new LogKitLogger( Hierarchy.defaultHierarchy()
+                                             .getLoggerFor( "document" ) );
+
+        this.docs.enableLogging( docLogger.childLogger( "repository" ) );
+        this.guard.enableLogging( docLogger.childLogger( "security" ) );
+
+        this.manager.addComponent(DocumentRepository.ROLE, this.docs);
+        this.manager.addComponent(GuardianComponent.ROLE, this.guard);
+
+        this.guard.initialize();
+        this.docs.initialize();
+    }
+
+    public void dispose()
+    {
+        this.docs.dispose();
+        this.guard.dispose();
+    }
+}
+]]>
+        </source>
+        <p>
+          At this point, we only saved ourselves a few lines of code.  We still
+          manually created our Configuration object, we still had to set the
+          Logger, and we still had to initialize and dispose of the
+          ComponentHandler objects.  What we did at this point is simply protect
+          ourselves from changing interfaces.  You may find it better for your
+          code to use this approach.  Excalibur went further though.  Most
+          complex systems have configuration files, and they allow an
+          administrator to alter vital Configuration information.  Excalibur
+          can read a configuration file in the following format, and build the
+          Components in a system from it.
+        </p>
+        <source>
+<![CDATA[
+<my-system>
+  <component
+    role="org.apache.avalon.excalibur.datasource.DataSourceComponentSelector"
+    class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector">
+     <component-instance name="documents"
+       class="org.apache.avalon.excalibur.datasource.JdbcDataSource">
+         <pool-controller min="5" max="10"/>
+         <auto-commit>false</auto-commit>
+         <driver>org.gjt.mm.mysql.Driver</driver>
+         <dburl>jdbc:mysql:localhost/mydb</dburl>
+         <user>test</user>
+         <password>test</password>
+      </component-instance>
+      <component-instance name="security"
+        class="org.apache.avalon.excalibur.datasource.JdbcDataSource">
+         <pool-controller min="5" max="10"/>
+         <auto-commit>false</auto-commit>
+         <driver>org.gjt.mm.mysql.Driver</driver>
+         <dburl>jdbc:mysql:localhost/myotherdb</dburl>
+         <user>test</user>
+         <password>test</password>
+      </component-instance>
+  </component>
+  <component
+    role="org.apache.bizserver.docs.DocumentRepository"
+    class="org.apache.bizserver.docs.DatabaseDocumentRepository">
+      <dbpool>documents</dbpool>
+  </component>
+  <component
+    role="org.apache.bizserver.docs.GuardianComponent"
+    class="org.apache.bizserver.docs.DocumentGuardianComponent">
+      <dbpool>security</dbpool>
+      <policy file="/home/system/document.policy"/>
+  </component>
+</my-system>
+]]>
+        </source>
+        <p>
+          The root element can be anything you want.  You will notice that we
+          now have several Components defined.  We have our familiar
+          DocumentRepository class and GuardianComponent class, as well as a
+          couple of Excalibur DataSourceComponent classes.  In addition, now we
+          have some specific configuration information for our Guardian
+          Component.  In order to read that information into your system,
+          Avalon Framework provides some conveniences for you:
+        </p>
+        <source>
+<![CDATA[
+DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
+Configuration systemConf = builder.buildFromFile("/path/to/file.xconf");
+]]>
+        </source>
+        <p>
+          This does simplify all the code we had for hand-building the
+          Configuration element earlier, and it limits the amount of
+          information we need to explicitly know right away.  We will take one
+          last look at our Container class and see if we really have some
+          savings.  Keep in mind that we have five components specified (a
+          ComponentSelector counts as a Component), and configurations for
+          each of them.
+        </p>
+        <source>
+<![CDATA[
+class ContainerComponent implements Initializable, Disposable {
+    ExcaliburComponentManager manager = new ExcaliburComponentManager();
+
+    public void initialize()
+        throws Exception
+    {
+        DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
+        Configuration sysConfig = builder.buildFromFile("./conf/system.xconf");
+
+        this.manager.setLogger(  Hierarchy.getDefaultHierarchy()
+                                          .getLoggerFor("document") );
+        this.manager.contextualize( new DefaultContext() );
+        this.manager.configure( sysConfig );
+        this.manager.initialize();
+    }
+
+    public void dispose()
+    {
+        this.manager.dispose();
+    }
+}
+]]>
+        </source>
+        <p>
+          Isn't this amazing?  We have more than twice the number Components
+          initialized and ready for use with less than half the code (six lines
+          of code instead of thirteen lines of code).  There is the drawback of
+          the Configuration file looking somewhat crazy, but it minimizes the
+          amount of code you have to write.
+        </p>
+        <p>
+          There is a lot of activity happening under the hood of the
+          ExcaliburComponentManager.  For each "component" element in the
+          configuration file, Excalibur creates a ComponentHandler for each
+          class entry and maps it to the role entry.  The "component" element
+          and all it's child elements are used for the Configuration of the
+          Component.  When the Component is an ExcaliburComponentSelector, the
+          Excalibur reads each "component-instance" element and performs the
+          same type of operation as before-this time mapping to the hint entry.
+        </p>
+        <section>
+          <title>Making the Configuration Pretty</title>
+          <p>
+            We can manage the configuration file's appearance with the use of
+            aliases.  Excalibur uses a RoleManager to provide aliases for the
+            configuration system.  A RoleManager can either be a dedicated
+            class that you create, or you can use the DefaultRoleManager and
+            pass in a Configuration object.  If I use the DefaultRoleManager, I
+            will hide the role configuration file inside the jar with the rest
+            of the system.  This is because the role configuration file is only
+            going to be altered by developers.  Below is the interface for the
+            RoleManager:
+          </p>
+          <source>
+<![CDATA[
+interface RoleManager
+{
+    String getRoleForName( String shorthandName );
+    String getDefaultClassNameForRole( String role );
+    String getDefaultClassNameForHint( String hint, String shorthand );
+}
+]]>
+          </source>
+          <p>
+            Let's take a look at how Excalibur uses the RoleManager in our
+            scheme.  First, Excalibur will cycle through all the elements that
+            are direct children of the root element.  This includes all
+            "component" elements like before, but this time when Excalibur
+            doesn't recognize an element name, it asks the RoleManager which
+            role we should use for this Component.  If the RoleManager returns
+            null, the element and all it's child elements are ignored.  Next,
+            Excalibur derives the class name from the role name.  The last
+            method is to dynamically map a class name to a ComponentSelector's
+            child type.
+          </p>
+          <p>
+            Excalibur provides a default implementation of the RoleManager that
+            is configured with an XML configuration file.  The markup is very
+            simple, and it hides all the extra information you don't want your
+            administrator to see.
+          </p>
+          <source>
+<![CDATA[
+<role-list>
+  <role
+    name="org.apache.avalon.excalibur.datasource.DataSourceComponentSelector"
+    shorthand="datasources"
+    default-class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector">
+     <hint shorthand="jdbc"
+       class="org.apache.avalon.excalibur.datasource.JdbcDataSourceComponent"/>
+     <hint shorthand="j2ee"
+       class="org.apache.avalon.excalibur.datasource.J2eeDataSourceComponent"/>
+  </role>
+  <role
+    name="org.apache.bizserver.docs.DocumentRepository"
+    shorthand="repository"
+    default-class="org.apache.bizserver.docs.DatabaseDocumentRepository"/>
+  <role
+    name="org.apache.bizserver.docs.GuardianComponent"
+    shorthand="guardian"
+    default-class="org.apache.bizserver.docs.DocumentGuardianComponent"/>
+</role-list>
+]]>
+          </source>
+          <p>
+            In order to use the RoleManager, you do need to alter the
+            "initialize" method of our Container class.  You are using the
+            configuration builder to build a Configuration tree from this
+            file.  Please remember, if you are going to use a RoleManager, you
+            must call the "setRoleManager" method <em>before</em>
+            the "configure" method.  To demonstrate how you would retrieve this
+            XML file from the class loader, I will demonstrate the technique
+            below:
+          </p>
+          <source>
+<![CDATA[
+DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
+Configuration sysConfig = builder.buildFromFile("./conf/system.xconf");
+Configuration roleConfig = builder.build(
+            this.getClass().getClassLoader()
+            .getResourceAsStream("/org/apache/bizserver/docs/document.roles"));
+
+DefaultRoleManager roles = new DefaultRoleManager();
+roles.enableLogging(Hierarchy.getDefaultHierarchy().getLoggerFor("document.roles"));
+roles.configure(roleConfig);
+
+this.manager.setLogger( Hierarchy.getDefaultHierarchy()
+                           .getLoggerFor("document") );
+this.manager.contextualize( new DefaultContext() );
+this.manager.setRoleManager( roles );
+this.manager.configure( sysConfig );
+this.manager.initialize();
+]]>
+          </source>
+          <p>
+            Since we added six more lines of code, we need to see what it
+            bought us.  Our final configuration file can be written like this:
+          </p>
+          <source>
+<![CDATA[
+<my-system>
+  <datasources>
+     <jdbc name="documents">
+         <pool-controller min="5" max="10"/>
+         <auto-commit>false</auto-commit>
+         <driver>org.gjt.mm.mysql.Driver</driver>
+         <dburl>jdbc:mysql:localhost/mydb</dburl>
+         <user>test</user>
+         <password>test</password>
+      </jdbc>
+      <jdbc name="security">
+         <pool-controller min="5" max="10"/>
+         <auto-commit>false</auto-commit>
+         <driver>org.gjt.mm.mysql.Driver</driver>
+         <dburl>jdbc:mysql:localhost/myotherdb</dburl>
+         <user>test</user>
+         <password>test</password>
+      </jdbc>
+  </datasources>
+  <repository>
+      <dbpool>documents</dbpool>
+  </repository>
+  <guardian>
+      <dbpool>security</dbpool>
+      <policy file="/home/system/document.policy"/>
+  </guardian>
+</my-system>
+]]>
+          </source>
+          <p>
+            As you can see, this is much more readable than how we started.
+            Now we can add any number of components to our system, and we won't
+            have to write any more code to support them.
+          </p>
+        </section>
+      </section>
+    </section>
+  </section>
+  <section name="Using the Component">
+    <p>
+      Now that we have created our Components, we will want to use them.  You
+      access Components the same way regardless of how they were instantiated
+      or managed.  You must implement the Composable interface to get a
+      reference to the ComponentManager.   The ComponentManager holds all the
+      references to the Components you need.  For the sake of our discussion,
+      we will assume that the ComponentManager given to us is configured in the
+      same manner as the final Configuration file in the last section.  This
+      means that we have a Repository, a Guardian, and two DataSources.
+    </p>
+    <section name="Rules for Using the Component Management Infrastructure">
+      <p>
+        The Component management infrastructure requires that you release any
+        Component for which you have obtained a reference.  The reason for this
+        restriction is so that the Component's resources can be properly
+        managed.  A ComponentManager is designed for cases when you have
+        multiple types of Components with distinct roles.  A ComponentSelector
+        is designed for cases when you have multiple types of Components
+        with the same role.  Another unique aspect of the ComponentSelector is
+        that it is a Component by design.  This enables us to get a
+        ComponentSelector from a ComponentManager.
+      </p>
+      <p>
+        There are two valid approaches for handling references to external
+        Components.  You can obtain your references during initialization, and
+        release them during disposal.  You may also encapsulate the Component
+        handling in a try/catch/finally block.  Each has its advantages and
+        disadvantages.
+      </p>
+      <section name="Initialization and Disposal Approach">
+        <source>
+<![CDATA[
+class MyClass implements Serviceable, Disposable
+{
+    ServiceManager manager;
+    Guardian myGuard;
+
+    /**
+     * Obtain a reference to a guard and keep the reference to
+     * the ServiceManager.
+     */
+    public void service(ServiceManager manager)
+        throws ServiceException
+    {
+        if (this.manager == null)
+        {
+            this.manager = manager;
+            myGuard = (Guardian) this.manager.lookup(Guardian.ROLE);
+        }
+    }
+
+    /**
+     * This is the method that uses the Guardian.
+     */
+    public void myMethod()
+        throws SecurityException
+    {
+        this.myGuard.checkPermission(new BasicPermission("test"));
+    }
+
+    /**
+     * Get rid of our references
+     */
+    public void dispose()
+    {
+        this.manager.release(this.myGuard);
+        this.myGuard = null;
+        this.manager = null;
+    }
+}
+]]>
+        </source>
+        <p>
+          As you can see by the sample code, this is easy to follow.  The
+          object gets a reference to a Guardian Component when it first
+          receives the ComponentManager.  If you could be guaranteed that the
+          Guardian Component was ThreadSafe, then this is all that is
+          necessary.  Unfortunately, you cannot guarantee this for the long
+          term.  To properly manage resources, we must release the Component
+          when we are done with it.  That's why we kept a reference to the
+          ComponentManager.
+        </p>
+        <p>
+          The main disadvantage of this approach comes into play when you are
+          dealing with pooled Components.  The reference of the Component is
+          kept for the life of this object.  It might not be a problem if the
+          object had a short life span, but if it was a Component managed by
+          the Excalibur component management architecture, its life span is as
+          long as the Component whose reference it has.  What this means is
+          that we are essentially turning the Component's pool into a Factory.
+        </p>
+        <p>
+          The main advantage of this approach is that the code is very clear on
+          how a Component is obtained and released.  You don't have to have any
+          understanding of exception handling.
+        </p>
+        <p>
+          One other nuance is that you are tying the existence of the Guardian
+          to the ability to initialize this object.  Once an Exception is
+          thrown during the initialization phase of an object, you must assume
+          that the object is not valid.  Sometimes you want to fail if a
+          required Component does not exist so this is not a problem.  You do
+          need to be aware of this implication when you are designing your
+          Components though.
+        </p>
+      </section>
+      <section name="Exception Handling Approach">
+        <source>
+<![CDATA[
+class MyClass implements Serviceable, Disposable
+{
+    ServiceManager manager;
+
+    /**
+     * Obtain a reference to a guard and keep the reference to
+     * the ServiceManager.
+     */
+    public void service(ServiceManager manager)
+        throws ComponentException
+    {
+        if (this.manager == null)
+        {
+            this.manager = manager;
+        }
+    }
+
+    /**
+     * This is the method that gets the Guardian.
+     */
+    public void myMethod()
+        throws SecurityException
+    {
+        Guardian myGuard = null;
+        try
+        {
+            myGuard = (Guardian) this.manager.lookup(Guardian.ROLE);
+            this.criticalSection(myGuard);
+        }
+        catch (ComponentException ce)
+        {
+            throw new SecurityException(ce.getMessage());
+        }
+        catch (SecurityException se)
+        {
+            throw se;
+        }
+        finally
+        {
+            if (myGuard != null)
+            {
+                this.manager.release(myGuard);
+            }
+        }
+    }
+
+    /**
+     * Perform critical part of code.
+     */
+    public void criticalSection(Guardian myGuard)
+        throws SecurityException
+    {
+        myGuard.checkPermission(new BasicPermission("test"));
+    }
+}
+]]>
+        </source>
+        <p>
+          As you can see, the code is a bit more complex.  In order to
+          understand it, you have to understand Exception handling.  This is
+          not necessarily a problem, because most Java developers know how to
+          handle them.  You don't have to worry so much about the Component
+          life style with this approach, because we are releasing it as soon
+          as we no longer need it.
+        </p>
+        <p>
+          The main disadvantage of this approach is the added complexity of the
+          exception handling code.  In order to minimize the complexity and
+          make the code more maintainable, we extracted the working code into
+          another method.  Keep in mind that we can get the reference to as
+          many Components as we possibly want inside the try block.
+        </p>
+        <p>
+          The main advantage of this approach is that you are managing your
+          Component references more efficiently.  Again, there is no real
+          difference if you are using ThreadSafe Components, but it makes a
+          real difference when you have pooled Components.  There is a slight
+          overhead dealing with getting a new reference every time you use a
+          Component, but the likelihood of being forced to create a new
+          instance of the Component is minimized.
+        </p>
+        <p>
+          Just like the Initialization and Disposal Approach, you have to
+          understand a subtle nuance.  The Exception Handling Approach does not
+          fail on initialization if the Component is missing from the manager.
+          As mentioned before, this is not entirely bad.  Many times, you want
+          an object to exist, but it is not a failure if a desired Component
+          is missing.
+        </p>
+      </section>
+    </section>
+    <section name="Getting Components from a ServiceSelector">
+      <p>
+        For most operations, you will only need the ServiceManager.  Since we
+        decided that we needed multiple instances of the DataSourceComponent,
+        we need to know how to get the instance we want.  ServiceSelectors
+        are a little trickier than ServiceManagers because we are dealing
+        with hints to get the reference we need.  A Component has a specific
+        Role, and this contract is well documented.  However, sometimes we need
+        to select one of many Components for a Role.  A ServiceSelector uses
+        an arbitrary object for the hint.  Most of the time, the object is a
+        String, although you might want to use a Locale object to get a proper
+        internationalization Component.
+      </p>
+      <p>
+        In our system we have set up, we chose to use Strings to select the
+        correct instance of the DataSourceComponent.  We even gave ourselves a
+        Configuration element that references the exact string we need to get
+        the right Component.  This is a good practice to follow, as it makes it
+        easier on administrators of a system.  It is easier for an
+        administrator to see a reference to another Component than it is for
+        them to remember magic values for the configuration.
+      </p>
+      <p>
+        Conceptually, getting a Component from a ServiceSelector is no
+        different than getting a Component from a ServiceManager.  You just
+        have one more step.  Remember that a ServiceSelector is a Component.
+        The ServiceManager will be set up to return the ServiceSelector
+        when you lookup its role.  You then need to select the component from
+        the selector.  To demonstrate, I will extend the code from the
+        Exception Handling Approach discussed previously.
+      </p>
+      <source>
+<![CDATA[
+public void myMethod()
+    throws Exception
+{
+    ServiceSelector dbSelector = null;
+    DataSourceComponent datasource = null;
+    try
+    {
+        dbSelector = (ServiceSelector)
+                this.manager.lookup(DataSourceComponent.ROLE + "Selector");
+        datasource = (DataSourceComponent)
+                dbSelector.select(this.useDb);
+
+        this.process(datasource.getConnection());
+    }
+    catch (Exception e)
+    {
+        throw e;
+    }
+    finally
+    {
+        if (datasource != null)
+        {
+            dbSelector.release(datasource);
+        }
+
+        if (dbSelector != null)
+        {
+            this.manager.release(dbSelector);
+        }
+    }
+}
+]]>
+      </source>
+      <p>
+        As you can see, we got the reference to the ServiceSelector using the
+        Role specified for the Component.  We followed the Role naming
+        guidelines outlined in a previous chapter by adding the "Selector"
+        suffix to the Role name.  It is also perfectly acceptable to use a
+        static interface for all the Role names in your system to minimize the
+        number of String concatenation in your code.
+      </p>
+      <p>
+        Next, we obtained the reference to the DataSourceComponent from the
+        ServiceSelector.  Our sample code assumed that we had already pulled
+        the required information from the Configuration object and placed it in
+        a class variable named "useDb".
+      </p>
+    </section>
+  </section>
+  <section name="Excalibur's Utilities">
+    <p>
+      This last section is included to give you an idea of the types of
+      Components and utilities that are included with Apache Avalon Excalibur.
+      These utilities are robust, and fully usable in production systems.  We
+      do have an unofficial staging project called "Scratchpad" where we iron
+      out implementation details for potential new utilities.  Scratchpad
+      utilities are of varying quality, and their use is not guaranteed to
+      remain the same -- although you may have good experience with them.
+    </p>
+    <section name="Command Line Interface (CLI)">
+      <p>
+        The CLI utilities are used by a number of projects including Avalon
+        Phoenix and Apache Cocoon to process command line arguments.  It
+        provides facilities to print help responses, and to process options by
+        either a short name or a long name.
+      </p>
+    </section>
+    <section name="Collection Utilities">
+      <p>
+        The collection utilities provide some enhancements to the
+        Java Collections API.  Among them is the ability
+        to find the intersections between two lists and a
+        <code>PriorityQueue</code> that is an enhancement to
+        <code>Stack</code> to allow the priority of objects override
+        the simple first in/last out <code>Stack</code>
+        implementation.
+      </p>
+    </section>
+    <section name="Component Management">
+      <p>
+        We already discussed the use of this in the previous section.  This is
+        Excalibur's most complex beast, but it provides a lot of functionality
+        in just a few classes.  It will make one distinction more than simple
+        <code>SingleThreaded</code> or
+        <code>ThreadSafe</code> for managing a component type:
+        <code>Poolable</code>.  If a Component implements Excalibur's
+        <code>Poolable</code> interface instead of the
+        <code>SingleThreaded</code> interface, it will maintain a
+        pool of Components and reuse instances.  Most of the time this works
+        great.  For those last remaining times where a Component cannot be
+        reused, use the <code>SingleThreaded</code> interface.
+      </p>
+    </section>
+    <section name="LogKit Management">
+      <p>
+        The Avalon development team realized that many people wanted a simple
+        mechanism to build complex Logging target heirarchies.  In the same
+        spirit as the <code>RoleManager</code> the team developed
+        a <code>LogKitManager</code> that can be given to the
+        Excalibur Component Management system meantioned above.  Based on the
+        "logger" attribute it will give the proper <code>Logger</code>
+        object to the different Components.
+      </p>
+    </section>
+    <section name="Thread Utilities">
+      <p>
+        The <em>concurrent</em> package contains several classes
+        to assist in multithreaded programming: <code>Lock</code>
+        (a mutex implementation), <code>DjikstraSemaphore</code>,
+        <code>ConditionalEvent</code>, and
+        <code>ThreadBarrier</code>.
+      </p>
+    </section>
+    <section name="Datasources">
+      <p>
+        This is modeled after the <code>javax.sql.DataSource</code>
+        class, but simplified.  There are two implementations of the
+        <code>DataSourceComponent</code>: one that pools JDBC
+        connections explicitly, and one that uses a J2EE application server's
+        <code>javax.sql.DataSource</code> class.
+      </p>
+    </section>
+    <section name="Input/Output (IO) Utilities">
+      <p>
+        The IO utilties provide a number of <code>FileFilter</code>s
+        and other <code>File</code> and IO specific utilities.
+      </p>
+    </section>
+    <section name="Pool Implementations">
+      <p>
+        The Pool implementations provide a <code>Pool</code> for
+        every occasion.  You have an implementation that is blazingly fast, but
+        only usable in one thread -- which should be ok for implementing a
+        FlyWeight pattern.  You also have <code>DefaultPool</code>,
+        which does not manage the number of objects in its pool.
+        <code>SoftResourceManagingPool</code> decommissions objects
+        that exceed a threshold when they are returned.  Lastly,
+        <code>HardResourceManagingPool</code> throws an exception
+        when you have reached the maximum number of objects.  The last three
+        pools are all <code>ThreadSafe</code>.
+      </p>
+    </section>
+    <section name="Property Utilities">
+      <p>
+        The property utilities are used in conjunction with Context objects.
+        They give you the ability to expand "variables" in your
+        <code>Resolvable</code> object.  It works like this:
+        <parameter>"${resource}"</parameter> will look for a Context value
+        named <parameter>"resource"</parameter> and substitute its value
+        for the symbol.
+      </p>
+    </section>
+  </section>
+ </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/index.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/index.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,106 @@
+<?xml version="1.0"?>
+<document>
+
+  <properties>
+    <author email="hammant@apache.org">Paul Hammant</author>
+    <author email="bloritsch@apache.org">Berin Loritsch</author>
+    <title>Developing With Apache Avalon</title>
+  </properties>
+
+<body>
+  <section name="Developing With Apache Avalon">
+    <p>
+      <strong>Developing With Apache Avalon</strong>: Developer's Guide for the Avalon Framework
+    </p>
+    <p>
+      Published 2001.  Copyright 2001-2003 Apache Software Foundation.
+    </p>
+  <subsection name="Dedicatation">
+    <p>
+      This developer's guide is dedicated to the three people who's vision
+      started the Avalon project: Federico Barbieri, Stefano Mazzocchi, and
+      Pierpaolo Fumagalli.  Their concept for the Avalon project has stood
+      the test of time.
+    </p>
+  </subsection>
+    <subsection name="Legal Notice">
+      <p>
+        Redistribution and use in source and binary forms, with or
+        without modification, are permitted provided that the following
+        conditions are met:
+      </p>
+      <ul>
+        <li>
+          <p>
+            Redistributions of  source code must  retain the above
+            copyright  notice, this list of conditions and the following
+            disclaimer.
+          </p>
+        </li>
+        <li>
+          <p>
+            Redistributions in binary form must reproduce the above
+            copyright notice, this list of conditions and the following
+            disclaimer in the documentation and/or other materials
+            provided with the distribution.
+          </p>
+        </li>
+        <li>
+          <p>
+            The end-user documentation included with the redistribution,
+            if any, must include the following  acknowledgment:
+            "This product includes software developed by the Apache
+            Software Foundation  (http://www.apache.org/)."  Alternately,
+            this  acknowledgment may  appear in the software itself,  if
+            and wherever such third-party acknowledgments normally appear.
+          </p>
+        </li>
+        <li>
+          <p>
+            The names "Jakarta", "Apache Avalon", "Avalon Excalibur",
+            "Avalon Framework" and "Apache Software Foundation" must not
+            be used to endorse or promote products derived from this
+            software without prior written permission. For written
+            permission, please contact apache@apache.org.
+          </p>
+        </li>
+        <li>
+          <p>
+            Products  derived from this software may not be called
+            "Apache", nor may "Apache" appear in their name, without
+            prior written permission of the Apache Software Foundation.
+          </p>
+        </li>
+      </ul>
+      <p>
+        THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
+        WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+        OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+        DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE  FOUNDATION
+        OR ITS CONTRIBUTORS BE LIABLE FOR  ANY DIRECT, INDIRECT, INCIDENTAL,
+        SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLUDING, BUT NOT
+        LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
+        OF USE, DATA, OR  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+        CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+        LIABILITY, OR TORT (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN
+        ANY WAY OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+        POSSIBILITY OF SUCH DAMAGE.
+      </p>
+      <p>
+        This software  consists of voluntary contributions made by many
+        individuals on behalf of the Apache Software Foundation. For more
+        information on the Apache Software Foundation, please see
+        &lt;http://www.apache.org/&gt;.
+      </p>
+      <p>
+        Java and all Java-based
+        trademarks and logos are trademarks or registered trademarks
+        of Sun Microsystems, Inc., in the United States and other
+        countries.  The Apache Software Foundation is independant of
+        Sun Microsystems.
+      </p>
+    </subsection>
+   </section>
+</body>
+</document>
+

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/introduction.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/introduction.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,342 @@
+<?xml version="1.0"?>
+<document>
+
+  <properties>
+    <author email="hammant@apache.org">Paul Hammant</author>
+    <author email="bloritsch@apache.org">Berin Loritsch</author>
+    <title>Introduction and Overview</title>
+  </properties>
+
+<body>
+   <section name="Introduction and Overview">
+  <p>
+    In the beginning was Apache JServ.  Stefano Mazzocchi and others
+    helping develop Apache JServ realized that several patterns used
+    in that project were generic enough to create a Server Framework.
+    On Wednesday January 27, 1999 (roughly a month after release 1.0b
+    of JServ) Stefano put together a proposal to start a project
+    called the Java Apache Server Framework.  It was to be the basis
+    for all Java server code at Apache.  The idea was to provide a
+    framework to put together components and reuse code across a
+    number of projects.
+  </p>
+   </section>
+  <p>
+    Stefano Mazzocchi, Federico Barbieri, and Pierpaolo Fumagalli
+    created the initial version.  Later in 2000, Berin Loritsch and
+    Peter Donald joined the project.  By that time, Pierpaolo and
+    Stefano had moved on to other projects and Java Apache Server
+    Framework started to use the name Avalon.  Those five developers
+    are the main people responsible for the current design and
+    concepts used by the framework.  The current version is very
+    similar to the version that was released in June 2000.  In fact,
+    the major difference is the reorganization of the packages, and
+    splitting the project into subprojects.  The same design patterns
+    and interfaces exist today.
+  </p>
+  <section name="What is Avalon?">
+    <p>
+      Avalon is a parent project for five sub-projects: Framework,
+      Excalibur, LogKit, Phoenix, and Cornerstone.  Most
+      people think of the Framework when they hear the name Avalon,
+      but it is more than that.  Avalon began as the Java Apache
+      Server Framework that had the framework, utilities, components,
+      and a server's kernel implementation all in one project.
+    </p>
+    <p>
+      Since all the pieces of Avalon are of different maturity levels,
+      and have different release cycles, we have decided to break
+      Avalon into the smaller projects mentioned above.  That move also
+      enables new developers to understand and learn Avalon in distinct
+      chunks -- something that was almost impossible before.
+    </p>
+    <subsection name="Framework">
+      <p>
+        Avalon Framework is the basis for all the other projects under
+        the Avalon umbrella.  It defines the interfaces, contracts, and
+        default implementations for Avalon.  The Framework has the most
+        work put into it, and consequently is the most mature project.
+      </p>
+    </subsection>
+    <subsection name="Excalibur">
+      <p>
+        Avalon Excalibur is a collection of server side Components that
+        you can use in your own projects.  It includes pooling
+        implementations, database connection management, and Component
+        management implementations among others.
+      </p>
+    </subsection>
+    <subsection name="LogKit">
+      <p>
+        Avalon LogKit is a high speed logging toolkit that can be used by Framework,
+        Excalibur, Cornerstone, and Phoenix.  It is modeled on the same
+        principles as the JDK 1.4 Logging package but is compatible with
+        JDK 1.2+.
+      </p>
+    </subsection>
+    <subsection name="Phoenix">
+      <p>
+        Avalon Phoenix is a server kernel that manages the deployment
+        and execution of Services.
+      </p>
+    </subsection>
+    <subsection name="Cornerstone">
+      <p>
+        Avalon Cornerstone is a collection of services that you
+        can deploy in the Phoenix environment.  The Blocks include socket
+        management and job scheduling among others.
+      </p>
+    </subsection>
+    <subsection name="Scratchpad">
+      <p>
+        Scratchpad is not really an official project, but it is the
+        staging area for software package that are not ready for inclusion in
+        the other projects yet.  They are of varying quality, and their APIs are
+        not guaranteed to remain consistent until they are promoted.
+      </p>
+    </subsection>
+  </section>
+  <section name="Focus for this Overview">
+    <p>
+      We are focusing on Avalon Framework in this overview, but we will
+      cover enough of Avalon Excalibur and Avalon LogKit to get you
+      started.  We will use a hypothetical business server to demonstrate
+      how to practically use Avalon.  It is beyond the scope of this
+      overview to define a full-blown methodology, or to cover every
+      aspect of all the sub projects.
+    </p>
+    <p>
+      We decided to focus on Avalon Framework because it is the basis
+      for all of the other projects.  If you can comprehend the framework,
+      you can comprehend any Avalon based system.  You will also become
+      familiar with some of the programming idioms common in Avalon.
+      Another reason for focusing on the framework and touching on the
+      Avalon Excalibur and Avalon LogKit projects is that they are
+      officially released and supported.
+    </p>
+  </section>
+  <section name="What Can Avalon Be Used For?">
+    <p>
+      I have been asked on a couple of occasions to identify what Avalon
+      is good for, and what it is not good for.  Avalon's focus is server
+      side programming and easing the maintainability and design of server
+      focused projects.  Avalon can be described as a framework that
+      includes implementations of the framework.
+    </p>
+    <p>
+      While Avalon is focused on server side solutions, many people have
+      found it to be useful for regular applications.  The concepts used in
+      Framework, Excalibur, and LogKit are general enough to be used for
+      any project.  The two projects that are more squarely focused on
+      the server are Cornerstone and Phoenix.
+    </p>
+    <table>
+     <tr>
+      <th>Framework</th>
+     </tr>
+     <tr>
+      <td>
+       <ul>
+        <li>
+          <p>
+            A supporting or enclosing structure.
+          </p>
+        </li>
+        <li>
+          <p>
+            A basic system or arrangement as of ideas.
+          </p>
+        </li>
+      </ul>
+      </td>
+      </tr>
+     <tr>
+      <td>
+        <em>Webster's II New Riverside Dictionary</em>
+      </td>
+     </tr>
+    </table>
+    <p>
+      The word <em>framework</em> is broad in application.
+      Frameworks that focus on a single industry like medical systems
+      or communications are called vertical market frameworks.  The
+      reason being that the same framework will not work well in other
+      industries.  Frameworks that are generic enough to be used across
+      multiple industries are known as horizontal market frameworks.
+      Avalon is a horizontal market framework.  You would be able to
+      build vertical market frameworks using Avalon's Framework.
+    </p>
+    <p>
+      The most compelling example of a vertical market framework built
+      with Avalon is the publishing framework Apache Cocoon.  Apache
+      Cocoon version 2 is built using Avalon's Framework, Excalibur, and
+      LogKit projects.  It makes use of the interfaces and contracts in
+      the Framework to reduce the time it takes for a developer to learn
+      how Cocoon works.  It also leverages the data source management and
+      component management code in Excalibur so that it does not have to
+      reinvent the wheel.  Lastly, it uses the LogKit to handle all the
+      logging in the publishing framework.
+    </p>
+    <p>
+      Once you understand the principles behind Avalon Framework, you will
+      be able to comprehend any system built on Avalon.  Once you can
+      comprehend the system, you will be able to catch bugs more quickly
+      that are due to the misuse of the framework.
+    </p>
+    <subsection name="There is no Magic Formula">
+      <p>
+        It is important to state that trying to use any tool as a magic
+        formula for success is begging for trouble.  Avalon is no exception
+        to this rule.  Even though Avalon's Framework was designed to work for
+        server solutions, it is equally at home when using it to build
+        building a Graphical User Interface (GUI) applications.  Two examples
+        of this are
+        <a href="http://d-haven.org/guiapp">D-Haven.org's GUIApp</a>
+        and <a href="http://jesktop.sourceforge.net">Jesktop</a>
+      </p>
+      <p>
+        While you need to consider if Avalon is right for your project,
+        you can still learn from the principles and design that went into
+        it.  The question you need to ask yourself is, "Where is this
+        project going to be used?"  If the answer is that it will be run
+        in a server environment, then Avalon is a good choice whether you
+        are creating a Java Servlet, or creating a special purpose server.
+        If the answer is it will be run on a client's machine with no
+        interaction with a server, than chances are that Avalon might not
+        be a good fit.  Even then, the Component model is very flexible
+        and can help manage complexity in a large application.
+      </p>
+    </subsection>
+  </section>
+  <section name="Principles and Patterns">
+    <p>
+      All of Avalon is built with specific design principles.  The two
+      most important patterns are <em>Inversion of Control</em>
+      and <em>Separation of Concerns</em>.  Component Oriented
+      Programming, Aspect Oriented Programming, and Service Oriented
+      Programming also influence Avalon.  Volumes could be written about
+      each of the programming principles, however they are design mindsets.
+    </p>
+    <subsection name="Inversion of Control">
+      <p>
+        Inversion of Control (IOC) is the concept that a Component is
+        always externally managed.  This phrase was originally coined
+        by Brian Foote in one of his papers ( <a
+        href="http://www.laputan.org/drc/drc.html">http://www.laputan.org/drc/drc.html</a>
+        ) Everything a Component needs in the way of Contexts,
+        Configurations, and Loggers is given to the Component.  In
+        fact, every stage in the life of a Component is controlled by
+        the code that created that Component.  When you use this
+        pattern, you implement a secure method of Component
+        interaction in your system.
+      </p>
+      <table>
+       <tr><th>Warning!</th></tr>
+       <tr><td>
+      IOC is not equivalent to security!  IOC provides a mechanism
+      whereby you can implement a scalable security model.  In order
+      for a system to be truly secured, each Component must be secure,
+      no Component can modify the contents of objects that are passed
+      to them, and every interaction has to be with known entities.
+      Security is a major topic, and IOC is a tool in the programmer's
+      arsenal to achieve that goal.
+      </td></tr>
+      </table>
+    </subsection>
+    <subsection name="Separation of Concerns">
+      <p>
+        The idea that you should view your problem space from different
+        concern areas resulted in the Separation of Concerns (SOC) pattern (
+            <a href="http://www.research.ibm.com/hyperspace/MDSOC.htm">
+              http://www.research.ibm.com/hyperspace/MDSOC.htm
+            </a>).
+        An example would be viewing a web server from different viewpoints
+        of the same problem space.  A web server must be secure, stable,
+        manageable, configurable, and comply with the HTTP specifications.
+        Each of those attributes is a separate concern area.  Some of these
+        concerns are related to other concerns such as security and
+        stability (if a server is not stable it can't be secure).
+      </p>
+      <p>
+        The Separation of Concerns pattern in turn led to Aspect Oriented
+        Programming (AOP) (
+        <a href="http://eclipse.org/aspectj/">http://eclipse.org/aspectj/</a>).
+        Researchers discovered that many concerns
+        couldn't be addressed at class or even method granularity.  Those
+        concerns are called aspects.  Examples of aspects include managing
+        the lifecycle of objects, logging, handling exceptions and cleaning
+        up resources.  With the absence of a stable AOP implementation, the
+        Avalon team chose to implement Aspects or concerns by providing
+        small interfaces that a Component implements.
+      </p>
+    </subsection>
+    <subsection name="Component Oriented Programming">
+      <p>
+        Component Oriented Programming (COP) is the idea of breaking a
+        system down into components, or facilities within a system.  Each
+        facility has a work interface and contracts surrounding that
+        interface.  This approach allows easy replacement of Component
+        instances without affecting code in other parts of the systems.
+        The major distinction between Object Oriented Programming (OOP)
+        and COP is the level of integration.  The complexity of a COP
+        system is more easily managed due to fewer interdependencies
+        among classes, promoting the level of code reuse.
+      </p>
+      <p>
+        One of the chief benefits of COP is the ability to modify portions
+        of your project's code without breaking the entire system.  Another
+        benefit is the ability to have multiple implementations of the
+        Component that you can select at runtime.
+      </p>
+    </subsection>
+    <subsection name="Service Oriented Programming">
+      <p>
+        Service Oriented Programming (SOP) is the idea of breaking a
+        system down into services provided by the system.
+      </p>
+      <table>
+       <tr><th>Service</th></tr>
+       <tr><td>
+    <ul>
+      <li>
+        <p>
+          Work or duties performed for others.
+        </p>
+      </li>
+      <li>
+        <p>
+          A facility offering repair or maintenance.
+        </p>
+      </li>
+      <li>
+        <p>
+          A facility providing the public with a utility.
+        </p>
+      </li>
+    </ul>
+       </td></tr>
+       <tr><td><em>Webster's II New Riverside Dictionary</em></td></tr>
+      </table>
+      <p>
+        Avalon's Phoenix identifies a service as the interface and
+        contracts for a facility that Phoenix will provide.  The
+        implementation of the service is called a Block.  It is
+        important to realize that a server is made up of multiple
+        services.  To take the example of a Mail server, there are
+        the protocol handling services, the authentication and
+        authorization services, the administration service, and the
+        core mail handling service.
+      </p>
+      <p>
+        Avalon's Cornerstone provides a number of low-level services
+        that you can leverage for your own systems.  The services
+        provided are connection management, socket management,
+        principal/role management, and scheduling.  We touch on
+        services here because it is relevant to the process of
+        decomposing our hypothetical system down into the different
+        facilities.
+      </p>
+    </subsection>
+  </section>
+ </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/navigation.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/navigation.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <title>Apache Avalon</title>
+ <body>
+
+    <links>
+      <item name="Apache" href="http://apache.org/"/>
+      <item name="Avalon" href="/index.html"/>
+      <item name="Framework" href="/product/framework/index.html"/>
+      <item name="Containers" href="/product/containers/index.html"/>
+      <item name="Components" href="/product/components/index.html"/>
+    </links>
+
+  <menu name="Developing With Avalon">
+    <item name="Article Info" href="/developing/index.html"/>
+    <item name="Authors" href="/developing/authors.html"/>
+  </menu>
+
+  <menu name="Chapters">
+    <item name="Overview" href="/developing/introduction.html"/>
+    <item name="Decomposition" href="/developing/decomposing.html"/>
+    <item name="Avalon Framework" href="/developing/framework.html"/>
+    <item name="Using the framework" href="/developing/implementing.html"/>
+    <item name="Compatibility with Avalon" href="/developing/compatiblity.html"/>
+    <item name="Development Strategies" href="/developing/strategies.html"/>
+    <item name="Conclusion" href="/developing/conclusion.html"/>
+  </menu>
+
+    <menu name="Related">
+      <item name="Framework" href="http://avalon.apache.org/framework"/>
+      <item name="Meta" href="http://avalon.apache.org/meta"/>
+      <item name="Utilities" href="http://avalon.apache.org/util"/>
+      <item name="Repository" href="http://avalon.apache.org/repository"/>
+      <item name="Merlin" href="http://avalon.apache.org/merlin"/>
+    </menu>
+ 
+ </body>
+</project>
+
+

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/strategies.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/developing/strategies.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,140 @@
+<?xml version="1.0"?>
+<document>
+
+  <properties>
+    <author email="hammant@apache.org">Paul Hammant</author>
+    <author email="bloritsch@apache.org">Berin Loritsch</author>
+    <title>It's a Stragedy!</title>
+  </properties>
+
+<body>
+   <section name="It's a Stragedy!">
+   <p>No, it's not a typo. The title has a deliberate play on words
+   that implies that incorrect strategies can end up in tragedy. While
+   the word "tragedy" may be a bit strong, the thought process does
+   have a ring of truth to it. In this chapter we attempt to give you
+   helpful hints and tips to boost the performance of your code and
+   your development team. We will break the discussion into logging
+   strategies, development strategies, component strategies, testing
+   strategies, and finally some notes on security strategies.</p>
+   </section>
+   <section name="Logging Strategies">
+
+      <p>Logging is a necessary function in any system. The problem
+      arises when the logging is not implemented in an efficient
+      manner. Before we get into the nuts and bolts of <em>how</em>
+      to create an efficient logging implementation, we have to identify
+      <em>what</em>
+      logging efficiency is.</p>
+
+      <p>In the spirit of the Separation of Concerns pattern, there
+      are two problem domains to consider: log organization and log
+      writing. Log organization is primarily concerned with how the
+      log categories are organized, and how the log files are
+      organized. Log writing has to do with the mechanics of writing
+      log entries.</p>
+
+      <subsection name="Log Organization">
+
+         <p>The Avalon framework and team advocate a category based
+         approach to organizing loggers as opposed to a class name
+         based approach. There is a very good reason for this. First
+         is that categorization allows you to put information of like
+         kind in one location. Second, it allows you to turn on and
+         off an entire category of log messages.</p>
+
+         <p>The arguments for the class name based logging usually
+         fall under these assumptions:</p>
+
+         <ol>
+            <li>
+               <p>There is an implicit match between a class and a category.</p>
+            </li>
+
+            <li>
+               <p>It makes it easier to get debug information from a
+            specific class if we are having problems with it.</p>
+            </li>
+
+            <li>
+               <p>The configuration file can handle the actual mapping
+            of classname to log file.</p> </li>
+        </ol>
+
+         <p>While these arguments have their point, so does a strict
+         category based logging approach:</p>
+
+         <ol>
+            <li>
+               <p>You can narrow your log messages farther than simple
+            class granularity. This way you can get information from
+            the part of the class that really needs it.</p> </li>
+
+            <li>
+               <p>More often than not, a group of classes make up a
+            Component. In most cases, the Component is what you are
+            really interested in--not the individual classes.</p>
+            </li>
+
+            <li>
+               <p>It is easier to manage a configuration file with
+            only a few categories that are bound to Component
+            instances during runtime you can separate the log files by
+            who is concerned with their contents.</p> </li>
+          </ol>
+      </subsection>
+
+      <subsection name="Log Category Organization">
+
+         <p>I would argue that it is a mistake to use only one
+         category for all logging. The reason is that you will
+         inevitably need to turn on and off a whole class of
+         messages. Another reason is that you will need at least one
+         category for each log file you have. One effective approach
+         is to separate your logging needs into roles and
+         classifications.</p>
+
+         <p>If you have already decomposed your system into
+         Components, then you have one set of categories defined. I
+         would use a shorthand name for the category names for simple
+         reference (e.g. "resource" instead of
+         "org.apache.avalon.excalibur.resource.ResourceManager"). The
+         simplified names can be used for a broad set of
+         classes. Using the same example, the name "resource" implies
+         the Resource class, its manager, and anything that is
+         directly associated with the concept of a "resource".</p>
+
+         <p>You can also use classifications as a specialization of
+         the main role classification. For example, all
+         ComponentManager code would have a category name of
+         "component". This would allow you to have a Category manager
+         for the aforementioned "resource" infrastructure. Typically
+         classifications are sub-categories. In this case, the full
+         name of the "component" category would be
+         "resource.component". This means that we are referring to the
+         "component" classification for the "resource" role.</p>
+
+         <p>Most of your logging needs can be organized into this two
+      dimensional cross-section of Role and Classification. Roles are
+      best for main categories due to their logical
+      separation. Typical classifications are "component", "security",
+      and "pool". These same classifications can be used as standard
+      sub-categories of the different roles. This way your log entries
+      can have fine-grained control that is logically organized.</p>
+      </subsection>
+
+      <subsection name="Log Writing">
+         <p>
+The mechanics of log writing can vastly affect the
+performance of your code. For instance, if you concatenate several
+strings together in your log messages, the Java Virtual Machine
+converts the concatenation to a StringBuffer, and performs the
+expensive <code>toString</code> operation on the result. The
+<code>Logger</code> interface provides a mechanism to optimize away
+these conversions when they are not needed.</p>
+
+    </subsection>
+   </section>
+  </body>
+</document>
+

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/doc/articles.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/doc/articles.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="dev@avalon.apache.org">Avalon Documentation Team</author>
+    <title>Apache Avalon: Articles</title>
+  </properties> 
+
+  <body>
+    <section name="Avalon Articles">
+     <p>
+      Avalon need not be as mysterious as its Arthurian counterpart.
+      The following articles will help guide you on your own quest for
+      understanding.
+     </p>
+     <subsection name="General Documentation">
+      <ul>
+        <li>
+	 <a href="http://avalon.apache.org/developing/index.html">Developing With Avalon</a>:
+	 An excellent white paper on the Avalon framework.
+	 Recommended reading!
+        </li>
+	<li>
+	<a href="http://avalon.apache.org/framework/cop/index.html">An Introduction to COP</a>:
+	 An introduction to Component Oriented Programming and the
+	 core Avalon Framework.
+	</li>
+	<li>
+	<a href="http://avalon.apache.org/framework/principals/index.html">COP Development
+	 Principles</a>: A look at design principles to consider when
+	 developing in Avalon and COP in general.
+	</li>
+	<li>
+	 <a href="http://avalon.apache.org/framework/principals/lifecycle.html">The Avalon
+	 Lifecycle</a>: Introduces the standard Avalon lifecycle for components.
+	</li>
+	<li>
+	  <a href="../community/history/need-for-avalon.html">The Need For
+	  Avalon</a>:
+      In this document, Stefano introduces his vision for the Java Apache
+      Server Framework project. He explain why he believes that
+      open-source projects should invest more time in software
+      engineering and why this may be worth while even in very successful
+      and high quality software projects. [HISTOROICAL]
+	</li>
+	<li>
+	  <a href="../community/history/what-is-a-server.html">What Is A
+	  Server</a>: Pierpaolo Fumagalli explains how a
+	  server could be developed using the benefits offered by the 
+	  Java Apache Server Framework (Avalon) and introduces the
+	  reader to the concept of what a <code>Block</code>. [HISTORICAL]
+	</li>
+      </ul>
+     </subsection>
+    </section>
+  </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/doc/index.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/doc/index.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="dev@avalon.apache.org">Avalon Documentation Team</author>
+    <title>Apache Avalon: Documentation</title>
+  </properties> 
+
+  <body>
+    <section name="Avalon Documentation">
+     <p>
+      Avalon need not be as mysterious as its Arthurian counterpart. 
+      The following documentation will help guide you on your own quest for
+      understanding.
+     </p>
+     <table>
+       <tr>
+         <th>Resource</th>
+         <th>Description</th>
+       </tr>
+       <tr>
+         <td>
+    <a href="http://wiki.apache.org/avalon">
+           Wiki</a>
+         </td>
+         <td>
+          The Avalon Wiki contains a growing collection of information
+         about Avalon, random thoughts on component models and
+         container solutions, roadmaps, development discussions,
+         general ideas and other inspirational material.  Feel free to
+         contribute!
+         </td>
+       </tr>
+       <tr>
+         <td>
+          <a href="http://wiki.apache.org/avalon/AvalonFAQ">
+	   FAQ</a>
+	 </td>
+	 <td>
+	  A community-maintained Frequenty Asked Questions database
+          in our wiki.
+	 </td>
+       </tr>
+       <tr>
+         <td>
+         <a href="http://wiki.apache.org/avalon/AvalonGlossary">
+	   Glossary</a>
+         </td>
+	 <td>Glossary of terms for Avalon technology</td>
+       </tr>
+       <tr>
+         <td><a href="../product/index.html">Product Documentation</a></td>
+	 <td> Each individual product or sub-project has its own section which
+	 includes API documentation (javadocs), usage material, and
+	 often simple tutorials.</td>
+       </tr>
+       <tr>
+         <td><a href="../mailing-lists.html">Mailing Lists</a></td>
+	 <td>The mailing list archives are full of tips, examples,
+         solutions, and explanations about Avalon.</td> 
+       </tr>
+     </table>
+     <subsection name="Articles">
+       <table>
+         <tr>
+	  <th>Resource</th>
+	  <th>Description</th>
+	 </tr>
+         <tr>
+          <td>
+	   <a href="http://avalon.apache.org/developing/index.html">
+           Developing With Avalon</a>
+          </td>
+          <td> The Avalon Developers Guide. An excellent white paper
+           on the Avalon framework. Recommended reading! </td>
+	</tr>
+	<tr>
+          <td>
+	<a href="http://avalon.apache.org/framework/cop/index.html">An
+         Introduction to COP</a></td>
+           <td>
+	 An introduction to Component Oriented Programming and the
+	 core Avalon Framework.</td>
+	</tr>
+	<tr>
+          <td>
+	   <a href="http://avalon.apache.org/framework/principals/index.html">
+            COP Development Principles</a></td>
+	  <td>
+	   A look at design principles to consider when developing in
+           Avalon and COP in general.
+	 </td>
+	</tr>
+	<tr>
+          <td>
+	  <a href="http://avalon.apache.org/framework/principals/lifecycle.html">
+           The Avalon Lifecycle</a>
+           </td> 
+	   <td>Introduces the standard Avalon lifecycle for components.</td>
+	</tr>
+	<tr>
+	  <td>
+	  <a href="../community/history/need-for-avalon.html">
+	  The Need For Avalon</a>
+          </td>
+	  <td>
+      In this document, Stefano introduces his vision for the Java Apache
+      Server Framework project. He explain why he believes that
+      open-source projects should invest more time in software
+      engineering and why this may be worth while even in very successful
+      and high quality software projects. [HISTOROICAL]
+          </td>
+	</tr>
+	<tr>
+         <td>
+	  <a href="../community/history/what-is-a-server.html">What Is A
+	  Server</a></td>
+	 <td> Pierpaolo Fumagalli explains how a
+	  server could be developed using the benefits offered by the 
+	  Java Apache Server Framework (Avalon) and introduces the
+	  reader to the concept of what a
+         <code>Block</code>. [HISTORICAL]
+          </td>
+	</tr>
+       </table>
+     </subsection>
+    </section>
+  </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/doc/navigation.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/doc/navigation.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project>
+
+ <title>Apache Avalon</title>
+
+ <body>
+
+    <links>
+      <item name="Apache" href="http://apache.org/"/>
+      <item name="Avalon" href="/index.html"/>
+      <item name="Framework" href="/product/framework/index.html"/>
+      <item name="Containers" href="/product/containers/index.html"/>
+      <item name="Components" href="/product/components/index.html"/>
+    </links>
+
+    <menu name="About Avalon">
+      <item name="Overview" href="/index.html"/>
+      <item name="Latest News" href="/news.html"/>
+      <item name="Community" href="/community/index.html"/>
+      <item name="Products" href="/product/index.html"/>
+      <item name="Documentation" href="/doc/index.html"/>
+      <!--
+        <item name="Apache Wiki" href="/doc/wiki.html"/>
+        <item name="Articles" href="/doc/articles.html"/>
+      </item>
+      -->
+    </menu>
+
+    <menu name="Resources">
+      <item name="License" href="/license.html"/>
+      <item name="Downloads" href="/download.cgi"/>
+      <item name="CVS" href="/cvs.html"/>
+      <item name="WIKI" href="http://wiki.apache.org/avalon"/>
+      <item name="Sandbox" href="/sandbox/index.html"/>
+      <item name="Mailing Lists" href="/mailing-lists.html"/>
+      <item name="Bug Database"  href="http://nagoya.apache.org/bugzilla/reports.cgi?product=Avalon&amp;output=most_doomed&amp;links=1&amp;banner=1&amp;quip=0"/>
+      <item name="Related Projects" href="/related/index.html"/>
+    </menu>
+
+    <menu name="Related">
+      <item name="Framework" href="http://avalon.apache.org/framework"/>
+      <item name="Meta" href="http://avalon.apache.org/meta"/>
+      <item name="Utilities" href="http://avalon.apache.org/util"/>
+      <item name="Repository" href="http://avalon.apache.org/repository"/>
+      <item name="Merlin" href="http://avalon.apache.org/merlin"/>
+    </menu>
+
+ </body>
+
+</project>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/doc/wiki.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/doc/wiki.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="dev@avalon.apache.org">Avalon Documentation Team</author>
+    <title>Apache Avalon: Wiki</title>
+  </properties> 
+
+  <body>
+    <section name="Avalon Wiki">
+    <p>The <a href="http://nagoya.apache.org/wiki/apachewiki.cgi?AvalonProjectPages">Avalon Wiki</a> contains a growing collection of information about Avalon, random thoughts on component models and container solutions, roadmaps, development discussions, general ideas and other inspirational material.</p>
+    </section>
+  </body>
+</document>
+

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/download.cgi
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/download.cgi	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Wrapper script around mirrors.cgi script
+# (we must change to that directory in order for python to pick up the
+#  python includes correctly)
+cd /www/www.apache.org/dyn/mirrors
+/www/www.apache.org/dyn/mirrors/mirrors.cgi $*

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/download.html
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/download.html	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,276 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+    <html>
+      <head>
+          <title>Apache Avalon - Apache Avalon Downloads</title>
+        <style type="text/css">
+          @import url("./style/tigris.css");
+          @import url("./style/maven.css");
+          @import url("./style/osm.css");
+        </style>
+        <link rel="stylesheet" href="./style/print.css" type="text/css" media="print"></link>
+          <meta name="author" value="Avalon Documentation Team"></meta>
+          <meta name="email" value="dev@avalon.apache.org"></meta>
+      </head>
+
+      <body marginwidth="0" class="composite" marginheight="0">
+        <div id="banner">
+          <table height="103" border="0" width="100%" cellpadding="8" cellspacing="0">
+            <tr>
+              <td>
+                  <a href="http://avalon.apache.org/">
+                    <img border="0" alt="The Apache Avalon Project" src="./images/apache-avalon-logo.png" align="left"></img>
+                  </a>
+              </td>
+              <td>
+                <div id="login" align="right">
+                  <a href="http://apachecon.com/2003/US/index.html">
+                    <img border="0" src="http://www.apache.org/~ceki/ac2003/ac2003-150.gif"></img>
+                  </a>
+                </div>
+              </td>
+            </tr>
+          </table>
+        </div>
+        <div id="breadcrumbs">
+          <table border="0" width="100%" cellpadding="4" cellspacing="0">
+            <tr>
+              <td>
+                <div align="right">
+      <a href="http://apache.org/"> Apache </a> |
+      <a href="index.html"> Avalon </a> |
+      <a href="product/framework/index.html"> Framework </a> |
+      <a href="product/containers/index.html"> Containers </a> |
+      <a href="product/components/index.html"> Components </a>
+                </div>
+              </td>
+            </tr>
+          </table>
+        </div>
+
+        <table border="0" width="100%" cellpadding="8" cellspacing="0">
+          <tr valign="top">
+            <td width="200" id="leftcol">
+              <div id="navcolumn">
+    <div>
+      <strong>About Avalon</strong>
+    <div>
+      <small><a href="index.html">Overview</a></small>
+    </div>
+    <div>
+      <small><a href="news.html">Latest News</a></small>
+    </div>
+    <div>
+      <small><a href="community/index.html">Community</a></small>
+    </div>
+    <div>
+      <small><a href="product/index.html">Products</a></small>
+    </div>
+    <div>
+      <small><a href="doc/index.html">Documentation</a></small>
+    </div>
+    </div>
+    <div>
+      <strong>Resources</strong>
+    <div>
+      <small><a href="license.html">License</a></small>
+    </div>
+    <div>
+      <small><a href="download.cgi">Downloads</a></small>
+    </div>
+    <div>
+      <small><a href="cvs.html">CVS</a></small>
+    </div>
+    <div>
+      <small><a href="http://wiki.apache.org/avalon">WIKI</a></small>
+    </div>
+    <div>
+      <small><a href="sandbox/index.html">Sandbox</a></small>
+    </div>
+    <div>
+      <small><a href="mailing-lists.html">Mailing Lists</a></small>
+    </div>
+    <div>
+      <small><a href="http://nagoya.apache.org/bugzilla/reports.cgi?product=Avalon&amp;amp;output=most_doomed&amp;amp;links=1&amp;amp;banner=1&amp;amp;quip=0">Bug Database</a></small>
+    </div>
+    <div>
+      <small><a href="related/index.html">Related Projects</a></small>
+    </div>
+    </div>
+              </div>
+            </td>
+            <td>
+              <div id="bodycol">
+                <div class="app">
+    <div class="h3">
+        <h3>
+          <a name="download">Avalon Download Site</a>
+        </h3>
+
+    <div>
+     <!-- START DOWNLOAD PAGE CONTENT -->
+
+      <p>Use the links below to download a binary distribution of
+      Avalon from one of our mirrors.  It's a good idea to
+      <a href="[location]#Verify Releases">verify the integrity</a>
+      of the downloaded files using signatures downloaded from our
+      main distribution directory.</p>
+
+      <p>Avalon is distributed as <code>zip</code> and <code>tar.gz</code>
+      archives - the contents are the same. Please note that the <code>tar.gz</code>
+      archives contain file names longer than 100 characters and have been
+      created using GNU tar extensions.  They must be untarred with a GNU
+      compatible version of <code>tar</code>.</p>
+
+      <p>If you do not see the file you need in the links below, please
+      see the <a href="http://www.apache.org/dist/avalon/">master
+      distribution directory</a> or, preferably, its
+      <a href="[preferred]/avalon/">mirror</a>.</p>
+
+<a name="Mirror"></a><h4>Mirror</h4>
+      <p>You are currently using the <strong>[preferred]</strong>.
+      If you encounter a problem with this mirror, please select another
+      mirror.  If all mirrors are failing, there are <em>backup</em>
+      mirrors (at the end of the mirrors list) that should be available.</p>
+
+      <form action="[location]" method="get" id="SelectMirror">
+<p>Other mirrors: <select name="Preferred"></p>
+[if-any http]
+  [for http]<option value="[http]">[http]</option>[end]
+[end]
+[if-any ftp]
+  [for ftp]<option value="[ftp]">[ftp]</option>[end]
+[end]
+[if-any backup]
+  [for backup]<option value="[backup]">[backup] (backup)</option>[end]
+[end]
+        </select>
+        <input type="submit" value="Change">
+      </form>
+
+<a name="Projects"></a><h4>License</h4>
+
+<p>All avalon products are distributed under the terms of a slightly
+modified Apache Software License (version 1.1). See our
+<a href="license.html">License</a> page, or the LICENSE.txt files
+included in each distribution.</p>
+
+<a name="Projects"></a><h4>Projects</h4>
+
+<p>Here's a list of the most commonly requested distributions. You can
+<a href="[preferred]/avalon/">browse</a> the repository for a full
+range of our various distributions, including older versions.</p>
+
+<p>Please note: we're still filling up this list; its incomplete
+at the moment.</p>
+
+<!-- lets maintain alphabetical order, peeps! -->
+<table border="1" width="100%" cellspacing="2" cellpadding="3">
+    <tr class="a">
+      <th>Product</th>
+      <th>Binary</th>
+      <th>Source</th>
+      <th>Jars</th>
+    </tr>
+    <tr class="a">
+<td><a href="/fortress/">Avalon-Fortress</a></td>
+<td><a href="[preferred]/avalon/fortress/binaries">binaries</a></td>
+<td><a href="[preferred]/avalon/fortress/source">broswe</a></td>
+<td><a href="[preferred]/avalon/fortress/jars">jars</a></td>
+   </tr>
+    <tr class="b">
+<td><a href="/framework/">Avalon-Framework</a></td>
+<td><a href="[preferred]/avalon/framework/binaries">binaries</a></td>
+<td><a href="[preferred]/avalon/framework/source">source</a></td>
+<td><a href="[preferred]/avalon/framework/jars">jars</a></td>
+   </tr>
+    <tr class="a">
+<td><a href="/logkit/">Avalon-Logkit</a></td>
+<td><a href="[preferred]/avalon/logkit/binaries">binaries</a></td>
+<td><a href="[preferred]/avalon/logkit/source">broswe</a></td>
+<td><a href="[preferred]/avalon/logkit/jars">jars</a></td>
+   </tr>
+    <tr class="a">
+<td><a href="/merlin/">Avalon-Merlin</a></td>
+<td><a href="[preferred]/avalon/merlin/binaries">binaries</a></td>
+<td><a href="[preferred]/avalon/merlin/source">broswe</a></td>
+<td><a href="[preferred]/avalon/merlin/jars">jars</a></td>
+   </tr>
+    <tr class="a">
+<td><a href="/phoenix/">Avalon-Phoenix</a></td>
+<td><a href="[preferred]/avalon/phoenix/binaries">binaries</a></td>
+<td><a href="[preferred]/avalon/phoenix/source">broswe</a></td>
+<td><a href="[preferred]/avalon/phoenix/jars">jars</a></td>
+   </tr>
+</table>
+
+<a name="Verify Releases"></a><h4>Verify Releases</h4>
+
+<p>It is essential that you verify the integrity of the downloaded
+files using the PGP or MD5 signatures.</p>
+<p>The PGP signatures can be verified using PGP or GPG.  First
+download the <a href="http://www.apache.org/dist/avalon/KEYS">KEYS</a>
+as well as the <code>asc</code> signature file for the particular
+distribution.  Make sure you get these files from the
+<a href="http://www.apache.org/dist/avalon/">main distribution
+directory</a>, rather than from a mirror. Then verify the signatures
+using</p>
+<p><code>
+% pgpk -a KEYS<br />
+% pgpv name-of-distributed-file.tar.gz.asc<br />
+</code>
+<em>or</em><br />
+<code>
+% pgp -ka KEYS<br />
+% pgp name-of-distributed-file.tar.gz.asc<br />
+</code>
+<em>or</em><br />
+<code>
+% gpg --import KEYS<br />
+% gpg --verify name-of-distributed-file.tar.gz.asc
+</code></p>
+
+<!--
+
+Using an automated process to retrieve files from mirrors is
+considered unsafe by the infrastructure team, as it is very
+easy to become a 'malicious mirror' and that could have grave
+consequences to users.
+
+Maven needs a way to verify distributions against md5 and/or asc
+files retrieved from the main distribution location before we
+re-enable this.
+
+<a name="Maven Repository"></a><h4>Maven Repository</h4>
+
+<p>The avalon distribution layout is compatible with the
+<a href="http://maven.apache.org/">Maven</a> repository format. To
+enable maven to automatically use your chosen distribution mirror
+as a remote repository, add a line to your project.properties file:
+</p>
+
+<p><code>
+maven.repo.remote = [preferred]/avalon,http://www.ibiblio.org/maven
+</code></p>-->
+
+<p>Doing so will ensure that your maven-enabled projects will always
+be able to find the latest avalon binaries.</p>
+     <!-- END DOWNLOAD PAGE CONTENT -->
+    </div>
+
+    </div>
+                </div>
+              </div>
+            </td>
+          </tr>
+        </table>
+        <div id="footer">
+          <table border="0" cellpadding="4" cellspacing="0">
+            <tr>
+              <td>
+                       1997-2003, The Apache Avalon Project
+              </td>
+            </tr>
+          </table>
+        </div>
+      </body>
+    </html>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/apache-avalon-logo.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/avalon-logo.svg
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/avalon-logo.svg	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,538 @@
+<?xml version="1.0" standalone="no"?>
+<!-- ========================================================================= -->
+<!-- Copyright (C) The Apache Software Foundation. All rights reserved.        -->
+<!--                                                                           -->
+<!-- This software is published under the terms of the Apache Software License -->
+<!-- version 1.1, a copy of which has been included with this distribution in  -->
+<!-- the LICENSE file.                                                         -->
+<!-- ========================================================================= -->
+
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @version $Id: avalon-logo.svg,v 1.1.1.1 2003/11/02 11:10:48 leosimons Exp $ -->
+<!-- ========================================================================= -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
+	<!ENTITY st0 "fill-rule:nonzero;fill:#D9D9D9;stroke:#D9D9D9;stroke-width:0.5956;stroke-miterlimit:4;">
+	<!ENTITY st1 "fill:url(#AIgd2);">
+	<!ENTITY st2 "fill:url(#AIgd3);">
+	<!ENTITY st3 "fill:url(#AIgd4);">
+	<!ENTITY st4 "fill:url(#AIgd6);">
+	<!ENTITY st5 "fill:url(#AIgd8);">
+	<!ENTITY st6 "fill-rule:nonzero;fill:#D9D9D9;stroke:#D9D9D9;stroke-width:0.254;stroke-miterlimit:4;">
+	<!ENTITY st7 "fill:url(#AIgd1);stroke:#000000;">
+	<!ENTITY st8 "fill:url(#AIgd10);">
+	<!ENTITY st9 "fill:url(#AIgd11);">
+	<!ENTITY st10 "fill:url(#AIgd16);">
+	<!ENTITY st11 "fill:url(#AIgd18);">
+	<!ENTITY st12 "fill:url(#AIgd19);">
+	<!ENTITY st13 "fill:url(#AIgd31);">
+	<!ENTITY st14 "fill:url(#AIgd35);">
+	<!ENTITY st15 "fill:url(#AIgd36);">
+	<!ENTITY st16 "fill:url(#AIgd38);">
+	<!ENTITY st17 "fill:url(#AIgd41);">
+	<!ENTITY st18 "fill:url(#AIgd42);">
+	<!ENTITY st19 "fill:url(#AIgd52);">
+	<!ENTITY st20 "fill:url(#AIgd69);">
+	<!ENTITY st21 "fill:url(#AIgd71);">
+	<!ENTITY st22 "fill:url(#AIgd72);">
+	<!ENTITY st23 "fill:#000000;stroke-width:0.5956;">
+]>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="body" xml:space="preserve" width="520" height="51">
+<g transform="translate(168,0) scale(-1, 1)">
+<g id="Layer_x0020_1">
+	<defs>
+		<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd1" x1="-3510.3682" y1="4186.3037" x2="-3520.3882" y2="4153.2837" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 -2022.5977 2980.6621)">
+			<stop  offset="0" style="stop-color:#4F0C81"/>
+			<stop  offset="0.0701" style="stop-color:#690C73"/>
+			<stop  offset="0.209" style="stop-color:#9A0A5B"/>
+			<stop  offset="0.3368" style="stop-color:#C20748"/>
+			<stop  offset="0.4512" style="stop-color:#E0053A"/>
+			<stop  offset="0.5481" style="stop-color:#F20032"/>
+			<stop  offset="0.6158" style="stop-color:#FA002F"/>
+			<stop  offset="1" style="stop-color:#F7EE5F"/>
+		</linearGradient>
+	</defs>
+	<g style="fill-rule:nonzero;fill:url(#AIgd1);stroke:#000000;stroke-width:0.254;stroke-miterlimit:4;">
+		<path style="&st23;" d="M0.241,40.672c13.561-1.867,63.613-4.393,85.943-8.051c17.961-2.937,35.502-8.285,52.242-13.9c4.328-1.453,11.991-4.434,16.896-7.07c3.104-2.373,10.571-5.889,12.606-9.222c-32.45,15.407-45.513,19.649-83.582,27.354
+			c-15.436,3.169-71.617,7.721-84.105,10.889z"/>
+		<defs>
+			<linearGradient id="AIgd2" gradientUnits="userSpaceOnUse" x1="-3788.0986" y1="-3507.6162" x2="-3789.1638" y2="-3479.4058" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2070.8274 1900.0875)">
+				<stop  offset="0" style="stop-color:#4F0C81"/>
+				<stop  offset="0.0701" style="stop-color:#690C73"/>
+				<stop  offset="0.209" style="stop-color:#9A0A5B"/>
+				<stop  offset="0.3368" style="stop-color:#C20748"/>
+				<stop  offset="0.4512" style="stop-color:#E0053A"/>
+				<stop  offset="0.5481" style="stop-color:#F20032"/>
+				<stop  offset="0.6158" style="stop-color:#FA002F"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st1;" d="M48.261,46.645l1.454,0.498l1.418,0.118l1.417-0.229l1.417-0.574l1.379-0.766l1.38-0.994l1.305-1.146l1.301-1.226l1.228-1.26l1.149-1.267l1.111-1.224l1.035-1.148l0.958-0.957l0.881-0.763l0.767-0.501l0.689-0.228l-0.576,0.036l-0.611,0.038
+			l-0.689,0.077l-0.688,0.074l-0.69,0.078l-0.689,0.076l-0.689,0.038l-0.612,0.076l-0.957,0.88l-0.921,0.842l-0.805,0.842l-0.729,0.844l-0.727,0.801l-0.688,0.805l-0.652,0.764l-0.691,0.729l-0.688,0.727l-0.729,0.65l-0.767,0.65l-0.882,0.61l-0.919,0.576
+			l-1.034,0.535l-1.149,0.496l-1.302,0.421z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd3" x1="-3817.4316" y1="-3498.7192" x2="-3818.3076" y2="-3475.5176" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2070.8274 1900.0875)">
+				<stop  offset="0" style="stop-color:#4F0C81"/>
+				<stop  offset="0.0701" style="stop-color:#690C73"/>
+				<stop  offset="0.209" style="stop-color:#9A0A5B"/>
+				<stop  offset="0.3368" style="stop-color:#C20748"/>
+				<stop  offset="0.4512" style="stop-color:#E0053A"/>
+				<stop  offset="0.5481" style="stop-color:#F20032"/>
+				<stop  offset="0.6158" style="stop-color:#FA002F"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st2;" d="M43.511,46.45l1.688,0.271l1.569,0.038l1.455-0.15l1.377-0.345l1.265-0.534l1.151-0.652l1.148-0.766l1.034-0.879l1.035-0.918l0.957-0.995l0.959-1.072l0.921-1.032l0.956-1.033l0.96-1.033l0.958-0.955l0.995-0.881l-0.381,0.037h-0.423
+			l-0.384,0.039l-0.419,0.037l-0.424,0.037l-0.421,0.078l-0.42,0.035l-0.42,0.041l-0.421,0.037l-0.461,0.037l-0.422,0.078l-0.459,0.037l-0.459,0.037l-0.46,0.037h-0.46l-0.459,0.039l-0.347,0.535l-0.42,0.651l-0.537,0.765l-0.575,0.805l-0.69,0.881l-0.729,0.879
+			l-0.766,0.918l-0.805,0.879l-0.844,0.844l-0.84,0.805l-0.885,0.726l-0.842,0.612l-0.844,0.496l-0.843,0.346l-0.804,0.189h-0.768z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd4" x1="-3806.9058" y1="-3505.3105" x2="-3807.8401" y2="-3480.5605" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2070.8274 1900.0875)">
+				<stop  offset="0" style="stop-color:#4F0C81"/>
+				<stop  offset="0.0701" style="stop-color:#690C73"/>
+				<stop  offset="0.209" style="stop-color:#9A0A5B"/>
+				<stop  offset="0.3368" style="stop-color:#C20748"/>
+				<stop  offset="0.4512" style="stop-color:#E0053A"/>
+				<stop  offset="0.5481" style="stop-color:#F20032"/>
+				<stop  offset="0.6158" style="stop-color:#FA002F"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st3;" d="M40.371,46.487l0.958,0.115l0.919,0.076l0.881-0.037l0.881-0.152l0.882-0.19l0.843-0.344l0.841-0.421l0.883-0.574l0.882-0.65l0.882-0.764l0.882-0.921l0.919-0.993l0.958-1.188l0.997-1.3l1.034-1.416l1.074-1.607l-0.651-0.002l-0.613,0.039
+			l-0.614,0.076l-0.612,0.076l-0.611,0.078l-0.613,0.072h-0.688h-0.727l-0.616,0.612l-0.573,0.65l-0.576,0.614l-0.574,0.688l-0.575,0.65l-0.535,0.689l-0.576,0.648l-0.539,0.691l-0.572,0.65l-0.574,0.65l-0.612,0.65l-0.577,0.613l-0.65,0.572l-0.652,0.574
+			l-0.65,0.573l-0.729,0.499z"/>
+		<path style="&st2;" d="M37.041,46.329l0.728,0.387l0.802,0.153l0.807-0.116l0.842-0.342l0.844-0.5l0.881-0.689l0.88-0.764l0.884-0.917l0.841-0.958l0.884-0.993l0.804-0.997l0.805-0.957l0.768-0.957l0.729-0.84l0.689-0.729l0.614-0.613l-4.099,0.382l-0.462,0.612
+			l-0.498,0.61l-0.458,0.616l-0.459,0.608l-0.46,0.614l-0.5,0.612l-0.461,0.612l-0.497,0.612l-0.537,0.573l-0.537,0.611l-0.536,0.578l-0.613,0.57l-0.612,0.574l-0.653,0.576l-0.688,0.536l-0.728,0.532z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd6" x1="-3825.4375" y1="-3503.8936" x2="-3826.3342" y2="-3480.1453" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2070.8274 1900.0875)">
+				<stop  offset="0" style="stop-color:#4F0C81"/>
+				<stop  offset="0.0701" style="stop-color:#690C73"/>
+				<stop  offset="0.209" style="stop-color:#9A0A5B"/>
+				<stop  offset="0.3368" style="stop-color:#C20748"/>
+				<stop  offset="0.4512" style="stop-color:#E0053A"/>
+				<stop  offset="0.5481" style="stop-color:#F20032"/>
+				<stop  offset="0.6158" style="stop-color:#FA002F"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st4;" d="M30.262,45.444l1.188,0.767l1.109,0.5l1.11,0.231h1.074l1.033-0.191l0.995-0.343l0.955-0.538l0.96-0.687l0.919-0.841l0.923-0.881l0.84-1.037l0.884-1.031l0.843-1.109l0.844-1.146l0.805-1.148l0.805-1.111l-0.688,0.115l-0.536,0.037
+			l-0.384,0.037l-0.345,0.039l-0.343,0.039l-0.346-0.001l-0.499,0.037l-0.651,0.037l-0.729,1.034l-0.727,0.955l-0.729,0.921l-0.805,0.804l-0.767,0.727l-0.767,0.689l-0.804,0.611l-0.768,0.536l-0.766,0.458l-0.768,0.421l-0.727,0.306l-0.689,0.269l-0.689,0.229
+			l-0.614,0.152l-0.612,0.075l-0.537,0.038z"/>
+		<path style="&st2;" d="M26.7,45.21l1.228,0.153l1.186,0.08l1.149-0.078l1.109-0.151l1.036-0.227l1.033-0.345l0.958-0.422l0.92-0.535l0.92-0.572l0.844-0.651l0.843-0.727l0.803-0.804l0.766-0.842l0.73-0.918l0.729-0.959l0.689-0.994l-0.767,0.039l-0.844,0.074
+			l-0.802,0.076l-0.806,0.038l-0.69,0.077l-0.574,0.035l-0.421,0.039l-0.191,0.037l-0.076,0.078l-0.191,0.19l-0.308,0.306l-0.382,0.385l-0.422,0.459l-0.536,0.536l-0.577,0.573l-0.648,0.614l-0.731,0.608l-0.764,0.65l-0.768,0.615l-0.843,0.611l-0.88,0.572
+			l-0.881,0.535l-0.921,0.46L26.7,45.21z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd8" x1="-3841.6636" y1="-3502.4297" x2="-3842.4236" y2="-3482.3" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2070.8274 1900.0875)">
+				<stop  offset="0" style="stop-color:#4F0C81"/>
+				<stop  offset="0.0701" style="stop-color:#690C73"/>
+				<stop  offset="0.209" style="stop-color:#9A0A5B"/>
+				<stop  offset="0.3368" style="stop-color:#C20748"/>
+				<stop  offset="0.4512" style="stop-color:#E0053A"/>
+				<stop  offset="0.5481" style="stop-color:#F20032"/>
+				<stop  offset="0.6158" style="stop-color:#FA002F"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st5;" d="M21.991,45.476l1.033,0.192l0.998,0.076l1.033-0.113l1.034-0.191l1.034-0.342l0.994-0.423l0.996-0.497l0.998-0.611l0.919-0.648l0.918-0.69l0.881-0.726l0.845-0.766l0.806-0.804l0.766-0.765l0.69-0.768l0.651-0.766h-0.461l-0.574,0.04
+			l-0.611,0.036H34.29l-0.613,0.073l-0.613,0.041l-0.496,0.039l-0.423,0.075v0.077l-0.154,0.189l-0.381,0.347l-0.537,0.42l-0.652,0.535l-0.764,0.613l-0.845,0.652l-0.882,0.647l-0.92,0.687l-0.918,0.691l-0.881,0.65l-0.846,0.574L23.6,44.559L22.91,44.98
+			l-0.537,0.305l-0.382,0.191z"/>
+		<path style="&st2;" d="M16.782,45.434l0.612,0.612l0.806,0.267l0.996,0.001l1.11-0.266l1.227-0.46l1.262-0.646l1.341-0.768l1.305-0.841l1.302-0.919l1.227-0.916l1.147-0.879l0.999-0.844l0.881-0.688l0.65-0.574l0.423-0.381l0.192-0.154l-0.498,0.038l-0.538,0.036
+			l-0.574,0.037l-0.572,0.041l-0.614,0.072l-0.614,0.039l-0.611,0.04l-0.652,0.038l-0.688,0.419l-0.688,0.422l-0.693,0.456l-0.649,0.425l-0.689,0.456l-0.653,0.498l-0.688,0.459l-0.653,0.459l-0.69,0.496l-0.65,0.461l-0.688,0.459l-0.651,0.458l-0.688,0.421
+			l-0.691,0.422l-0.651,0.419l-0.69,0.384z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd10" x1="-3872.1543" y1="-3503.9727" x2="-3872.3848" y2="-3493.1567" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2070.8274 1900.0875)">
+				<stop  offset="0" style="stop-color:#F7EE5F"/>
+				<stop  offset="0.186" style="stop-color:#F5D65D"/>
+				<stop  offset="0.3825" style="stop-color:#F4C35B"/>
+				<stop  offset="0.5198" style="stop-color:#F4BC5A"/>
+				<stop  offset="0.7809" style="stop-color:#F5DA5D"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st8;" d="M12.953,45.507l0.652,0.229l0.649,0.115l0.65,0.037l0.653-0.11l0.65-0.194l0.689-0.265l0.727-0.383l0.768-0.46l0.843-0.535l0.881-0.612l0.959-0.688l1.072-0.728l1.187-0.803l1.265-0.881l1.379-0.918l1.534-0.957l-0.653,0.039l-0.727,0.039
+			l-0.65-0.001l-0.65,0.038l-0.574,0.037l-0.459,0.038l-0.307,0.039l-0.116,0.036l-0.077,0.115l-0.229,0.23l-0.346,0.307l-0.458,0.42L21.69,40.19l-0.653,0.577l-0.689,0.571l-0.805,0.613l-0.805,0.611l-0.843,0.612l-0.843,0.534l-0.882,0.537l-0.842,0.457
+			l-0.842,0.383l-0.805,0.267l-0.729,0.154z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd11" x1="-3878.0732" y1="-3508.4204" x2="-3874.5449" y2="-3484.9487" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2070.8274 1900.0875)">
+				<stop  offset="0" style="stop-color:#F7EE5F"/>
+				<stop  offset="0.186" style="stop-color:#F5D65D"/>
+				<stop  offset="0.3825" style="stop-color:#F4C35B"/>
+				<stop  offset="0.5198" style="stop-color:#F4BC5A"/>
+				<stop  offset="0.7809" style="stop-color:#F5DA5D"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st9;" d="M10.158,45.084l0.879,0.344l0.958,0.152l0.998-0.072l1.033-0.268l1.072-0.383l1.033-0.498l1.074-0.608l0.996-0.69l0.958-0.688l0.92-0.728l0.843-0.688l0.728-0.691l0.653-0.572l0.495-0.499l0.383-0.341l0.232-0.232l-0.613,0.038l-0.577,0.04
+			l-0.571,0.037l-0.575,0.074l-0.535,0.041l-0.577,0.037l-0.61,0.074l-0.613,0.038l-0.459,0.421l-0.501,0.42l-0.458,0.421l-0.499,0.46l-0.498,0.498l-0.497,0.459l-0.536,0.459l-0.538,0.458l-0.536,0.423l-0.534,0.421l-0.577,0.381l-0.534,0.343l-0.614,0.309
+			l-0.574,0.266l-0.613,0.193l-0.613,0.152z"/>
+		<path style="&st8;" d="M6.791,44.01l0.765,0.535l0.763,0.345l0.767,0.154l0.767,0.039l0.768-0.151l0.766-0.232l0.766-0.343l0.765-0.458l0.729-0.498l0.766-0.611l0.729-0.613l0.729-0.65l0.727-0.648l0.69-0.69l0.689-0.649l0.69-0.615l-0.422,0.041l-0.46,0.076
+			l-0.497,0.037l-0.535,0.039l-0.575,0.074l-0.612,0.039l-0.652,0.074l-0.612,0.037l-0.192,0.461L13.84,40.26l-0.271,0.422l-0.346,0.422l-0.381,0.383l-0.424,0.383l-0.42,0.381l-0.496,0.306l-0.5,0.308l-0.537,0.268l-0.573,0.268L9.316,43.59l-0.612,0.154
+			l-0.61,0.15L7.44,43.971L6.791,44.01z"/>
+		<path style="&st9;" d="M3.763,43.434L4.415,43.7l0.69,0.193l0.726,0.115l0.806,0.001l0.767-0.038l0.842-0.115l0.805-0.229l0.803-0.229l0.768-0.344l0.729-0.384l0.65-0.421l0.614-0.495l0.536-0.538l0.46-0.572l0.345-0.651l0.23-0.652l-0.46,0.04l-0.46,0.037
+			l-0.497,0.076l-0.5,0.038l-0.495,0.038l-0.537,0.037l-0.574,0.039l-0.652,0.036L9.74,40.067l-0.307,0.384l-0.306,0.345l-0.306,0.306l-0.307,0.306l-0.348,0.229l-0.343,0.27l-0.347,0.229l-0.381,0.191l-0.422,0.19l-0.421,0.19L5.796,42.86l-0.462,0.152
+			l-0.495,0.152L4.302,43.28l-0.539,0.154z"/>
+		<path style="&st8;" d="M2.193,42.896l0.23,0.229l0.347,0.152l0.42,0.078h0.46l0.536-0.038l0.573-0.112l0.613-0.193l0.612-0.189l0.613-0.27l0.614-0.307l0.612-0.342l0.537-0.385l0.537-0.42l0.458-0.459l0.345-0.46l0.307-0.498l-0.343,0.041l-0.308,0.037
+			l-0.383,0.038L8.63,39.836l-0.344,0.039l-0.307,0.036l-0.268,0.001l-0.269-0.001v0.153L7.1,40.37l-0.576,0.422L5.757,41.29L4.84,41.786l-0.922,0.499l-0.919,0.381l-0.806,0.23z"/>
+		<path style="&st8;" d="M1.084,41.822l0.078,0.536l0.192,0.344l0.305,0.155l0.42,0.076l0.499-0.075l0.574-0.192l0.573-0.229l0.614-0.306l0.613-0.346l0.574-0.381l0.575-0.381l0.461-0.347l0.42-0.307l0.307-0.229l0.191-0.152l0.038-0.076l-2.986,0.341l-0.229,0.152
+			l-0.386,0.192l-0.458,0.23l-0.5,0.229l-0.535,0.269l-0.497,0.189l-0.461,0.192l-0.384,0.114z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd16" x1="-3892.5645" y1="-3497.0415" x2="-3892.7126" y2="-3490.0823" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2070.8274 1900.0875)">
+				<stop  offset="0" style="stop-color:#F7EE5F"/>
+				<stop  offset="0.186" style="stop-color:#F5D65D"/>
+				<stop  offset="0.3825" style="stop-color:#F4C35B"/>
+				<stop  offset="0.5198" style="stop-color:#F4BC5A"/>
+				<stop  offset="0.7809" style="stop-color:#F5DA5D"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st10;" d="M4.533,40.253l-0.651,0.039l-0.574,0.039l-0.536,0.036l-0.498,0.037l-0.46,0.04l-0.497,0.036l-0.498,0.077l-0.577,0.114l0.117,0.729l0.343,0.345l0.537,0.001l0.689-0.19l0.689-0.347l0.729-0.382l0.651-0.345l0.536-0.229z"/>
+		<path style="&st8;" d="M4.419,39.874l-0.653,0.112l-0.573,0.076l-0.497,0.114l-0.5,0.075l-0.458,0.114l-0.459,0.115l-0.537,0.116L0.167,40.75l-0.038-0.844l0.345-0.536l0.537-0.192l0.727-0.034l0.766,0.151l0.766,0.193l0.651,0.23l0.499,0.154z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd18" x1="-3716.793" y1="-3522.1724" x2="-3726.813" y2="-3555.1924" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2070.8274 1900.0875)">
+				<stop  offset="0" style="stop-color:#4F0C81"/>
+				<stop  offset="0.0701" style="stop-color:#690C73"/>
+				<stop  offset="0.209" style="stop-color:#9A0A5B"/>
+				<stop  offset="0.3368" style="stop-color:#C20748"/>
+				<stop  offset="0.4512" style="stop-color:#E0053A"/>
+				<stop  offset="0.5481" style="stop-color:#F20032"/>
+				<stop  offset="0.6158" style="stop-color:#FA002F"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st11;" d="M44.258,24.317l1.684-0.651l1.611-0.419l1.491-0.113l1.417,0.076l1.379,0.309l1.262,0.459l1.227,0.652l1.187,0.729l1.149,0.845l1.11,0.919l1.106,0.959l1.074,0.996l1.071,0.957l1.07,0.921l1.073,0.882l1.109,0.807l-0.384,0.073
+			l-0.421,0.038l-0.421,0.039l-0.383,0.076l-0.423,0.039l-0.421,0.038l-0.459,0.036l-0.421,0.039l-0.422,0.035l-0.461,0.041l-0.458,0.076l-0.422,0.037l-0.461,0.04l-0.457,0.074l-0.498,0.037l-0.461,0.077l-0.382-0.534l-0.495-0.653l-0.576-0.766l-0.688-0.768
+			l-0.727-0.843l-0.805-0.843l-0.879-0.844l-0.881-0.806l-0.959-0.766l-0.953-0.688l-0.957-0.615l-0.997-0.497l-0.957-0.385l-0.958-0.23l-0.956-0.039l-0.88,0.152z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd19" x1="-3818.3081" y1="-3506.1616" x2="-3836.2568" y2="-3532.4282" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2070.8274 1900.0875)">
+				<stop  offset="0" style="stop-color:#4F0C81"/>
+				<stop  offset="0.0701" style="stop-color:#690C73"/>
+				<stop  offset="0.209" style="stop-color:#9A0A5B"/>
+				<stop  offset="0.3368" style="stop-color:#C20748"/>
+				<stop  offset="0.4512" style="stop-color:#E0053A"/>
+				<stop  offset="0.5481" style="stop-color:#F20032"/>
+				<stop  offset="0.6158" style="stop-color:#FA002F"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st12;" d="M41.383,24.964l0.96-0.345l0.92-0.227l0.878-0.152l0.923-0.077l0.878,0.077l0.919,0.192l0.88,0.268l0.919,0.423l0.956,0.537l0.959,0.691l0.995,0.803l1.033,0.96l1.108,1.11l1.11,1.266l1.186,1.418l1.264,1.57l-0.69,0.039l-0.611,0.072
+			l-0.576,0.039l-0.534,0.076l-0.537,0.076l-0.573,0.076l-0.653,0.113l-0.765,0.117l-0.689-0.574l-0.65-0.613l-0.689-0.653l-0.612-0.653l-0.649-0.649l-0.649-0.65l-0.613-0.653l-0.651-0.651l-0.651-0.612l-0.688-0.574l-0.651-0.576l-0.688-0.574l-0.727-0.498
+			l-0.767-0.423l-0.766-0.421l-0.805-0.347z"/>
+		<path style="&st11;" d="M38.167,25.805l0.727-0.611l0.808-0.307l0.88-0.074l0.879,0.191l0.958,0.383l0.956,0.538l0.995,0.688l0.996,0.805l0.996,0.881l0.993,0.921l0.956,0.921l0.92,0.958l0.841,0.88l0.84,0.805l0.729,0.691l0.69,0.574l-4.176,0.496l-0.536-0.613
+			l-0.536-0.615l-0.498-0.613l-0.533-0.611l-0.537-0.613l-0.534-0.651l-0.573-0.614l-0.535-0.576l-0.613-0.574l-0.612-0.573l-0.652-0.538l-0.688-0.498l-0.728-0.497l-0.766-0.423l-0.804-0.383l-0.843-0.346z"/>
+		<path style="&st12;" d="M31.886,28.481l1.148-1.111l1.111-0.802l1.073-0.534l1.072-0.307l1.072-0.037l1.034,0.154l1.033,0.385l0.996,0.498l0.994,0.689l0.955,0.804l0.996,0.921l0.919,0.996l0.957,1.035l0.917,1.111l0.918,1.111l0.919,1.11l-0.729,0.04
+			l-0.611,0.035l-0.498,0.039l-0.461,0.076l-0.458,0.076l-0.499,0.075l-0.571,0.078l-0.692,0.112l-0.803-1.034l-0.766-0.919l-0.803-0.844l-0.766-0.728l-0.802-0.612l-0.766-0.538l-0.728-0.461l-0.768-0.382l-0.728-0.309l-0.688-0.229l-0.728-0.192l-0.689-0.152
+			l-0.648-0.08l-0.653-0.074h-0.649l-0.612-0.002z"/>
+		<path style="&st11;" d="M27.402,29.512l1.267-0.461l1.187-0.344l1.187-0.189l1.109-0.077l1.111,0.001l1.071,0.155l1.035,0.231l0.996,0.347l0.995,0.419l0.919,0.537l0.957,0.613l0.878,0.689l0.882,0.768l0.84,0.842l0.806,0.922l0.803,0.996l-0.803,0.115
+			l-0.919,0.111l-0.921,0.115l-0.921,0.115l-0.842,0.113L38.39,35.61l-0.499,0.037l-0.191-0.002l-0.075-0.075l-0.192-0.153l-0.269-0.268l-0.343-0.346l-0.423-0.42l-0.495-0.424l-0.575-0.496l-0.65-0.538l-0.728-0.499l-0.765-0.536l-0.844-0.5l-0.918-0.495
+			l-0.92-0.424l-0.993-0.383l-1.034-0.348l-1.073-0.229z"/>
+		<path style="&st12;" d="M21.735,30.196l1.034-0.418l1.035-0.307l1.108-0.115l1.073,0.001l1.111,0.118l1.108,0.229l1.072,0.346l1.111,0.422l1.033,0.498l1.033,0.537l0.995,0.651l0.994,0.651l0.882,0.693l0.881,0.727l0.802,0.728l0.726,0.729l-0.495,0.037
+			l-0.612,0.076l-0.689,0.075l-0.728,0.077l-0.729,0.075l-0.652,0.076l-0.573,0.037h-0.422l-0.001-0.077l-0.191-0.191l-0.38-0.268l-0.574-0.385l-0.689-0.42l-0.805-0.5l-0.919-0.537l-0.956-0.533l-0.955-0.54l-0.996-0.538l-0.998-0.496l-0.916-0.457l-0.846-0.387
+			l-0.762-0.307l-0.616-0.193l-0.495-0.115z"/>
+		<path style="&st11;" d="M16.373,31.303l0.537-0.842l0.805-0.498l0.996-0.188h1.147l1.264,0.268l1.379,0.422l1.455,0.576l1.415,0.651l1.455,0.729l1.339,0.766l1.265,0.73l1.149,0.727l0.954,0.615l0.729,0.459l0.496,0.342l0.23,0.117l-0.537,0.116l-0.61,0.077
+			l-0.653,0.073l-0.689,0.038l-0.727,0.078l-0.729,0.074l-0.688,0.115l-0.689,0.115l-0.729-0.346l-0.688-0.348l-0.729-0.381l-0.688-0.385l-0.69-0.346l-0.688-0.383l-0.728-0.384l-0.688-0.382l-0.689-0.35l-0.688-0.382l-0.729-0.343l-0.688-0.307l-0.689-0.348
+			l-0.727-0.305l-0.727-0.311l-0.729-0.266z"/>
+		<path style="&st8;" d="M9.518,33.135l0.844-0.611l0.956-0.346l0.996-0.149l1.07,0.001l1.113,0.189l1.148,0.348l1.11,0.421l1.108,0.5l1.035,0.574l1.032,0.575l0.919,0.614l0.804,0.536l0.727,0.499l0.574,0.46l0.42,0.306l0.229,0.193l-0.612,0.074l-0.574,0.077
+			l-0.495,0.076l-0.501,0.037l-0.536,0.037l-0.496,0.076L19.813,37.7l-0.61,0.074l-0.537-0.342l-0.536-0.348l-0.574-0.42l-0.574-0.383L16.37,35.86l-0.613-0.421l-0.612-0.423l-0.612-0.383l-0.614-0.384l-0.647-0.308l-0.652-0.305l-0.613-0.232l-0.648-0.189
+			l-0.615-0.117H10.13l-0.612,0.037z"/>
+		<path style="&st9;" d="M12.044,32.029l0.653-0.423l0.688-0.305l0.652-0.154l0.688-0.074l0.689,0.037l0.728,0.152l0.807,0.27l0.838,0.308l0.921,0.423l0.959,0.459l1.07,0.576l1.147,0.614l1.265,0.65l1.378,0.692l1.49,0.765l1.648,0.768l-0.613,0.04L26.363,36.9
+			l-0.688,0.078l-0.691,0.112l-0.613,0.078l-0.457,0.078l-0.346,0.035l-0.153-0.035l-0.075-0.079l-0.27-0.19l-0.345-0.309l-0.459-0.344l-0.573-0.422l-0.689-0.459l-0.729-0.5l-0.803-0.499l-0.879-0.498l-0.882-0.497l-0.955-0.425l-0.957-0.384l-0.959-0.304
+			l-0.957-0.196l-0.92-0.111l-0.919-0.001z"/>
+		<path style="&st9;" d="M6.451,35.086l0.691-0.766l0.726-0.574l0.729-0.382l0.766-0.229l0.767-0.037l0.804,0.076l0.844,0.192l0.804,0.271l0.84,0.422l0.805,0.42l0.842,0.536l0.843,0.539l0.843,0.536l0.803,0.574l0.805,0.578l0.803,0.496l-0.459,0.076l-0.498,0.038
+			l-0.574,0.116l-0.613,0.072l-0.649,0.079l-0.69,0.073l-0.65,0.078l-0.653,0.075l-0.229-0.497l-0.269-0.422l-0.305-0.422l-0.384-0.383l-0.383-0.344l-0.419-0.27l-0.5-0.271l-0.497-0.229l-0.536-0.191l-0.572-0.154L9.706,35.05l-0.612-0.079l-0.65-0.037
+			l-0.652,0.001l-0.65,0.073l-0.689,0.078z"/>
+		<path style="&st9;" d="M1.738,37.609l0.193-0.306l0.306-0.268l0.422-0.228l0.459-0.154l0.536-0.114l0.612-0.036l0.613,0.001l0.689,0.037l0.65,0.114l0.689,0.155l0.652,0.229l0.61,0.269l0.576,0.308l0.534,0.383l0.422,0.422l0.381,0.461l-0.343,0.076L9.32,39.034
+			L8.9,39.11l-0.423,0.074l-0.382,0.037l-0.308,0.041H7.56H7.482l-0.153-0.078l-0.381-0.23l-0.652-0.307L5.53,38.304l-0.881-0.309l-0.995-0.269l-0.957-0.154l-0.959,0.036z"/>
+		<path style="&st8;" d="M0.818,39.178l-0.036-0.609l0.152-0.461l0.271-0.307l0.42-0.191l0.497-0.078l0.575,0.041l0.613,0.076l0.688,0.154l0.65,0.229l0.65,0.231l0.613,0.23l0.535,0.23l0.46,0.23l0.383,0.154l0.191,0.152l0.078,0.036l-3.065,0.533l-0.27-0.112
+			l-0.42-0.117l-0.459-0.153L2.81,39.294l-0.536-0.115l-0.535-0.074L1.24,39.104l-0.422,0.074z"/>
+		<path style="&st8;" d="M3.349,36.616l0.612-0.498l0.651-0.383l0.729-0.342l0.805-0.231l0.806-0.153l0.803-0.11l0.844,0.001l0.841,0.072l0.804,0.156l0.804,0.27l0.729,0.307l0.689,0.383l0.649,0.461l0.536,0.535l0.421,0.613l0.344,0.689l-0.499,0.039l-0.457,0.077
+			l-0.5,0.036l-0.536,0.076l-0.535,0.078l-0.574,0.037L10.7,38.844l-0.65,0.072l-0.231-0.341l-0.268-0.308L9.244,38l-0.343-0.27L8.519,37.5l-0.421-0.23l-0.423-0.192l-0.459-0.151l-0.459-0.154L6.26,36.657L5.8,36.581l-0.499-0.04l-0.497-0.037l-0.496-0.001
+			l-0.499,0.038l-0.46,0.075z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd31" x1="-3644.5117" y1="-3531.5527" x2="-3636.6318" y2="-3508.3506" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2070.8274 1900.0875)">
+				<stop  offset="0" style="stop-color:#681083"/>
+				<stop  offset="0.0006" style="stop-color:#681083"/>
+				<stop  offset="0.072" style="stop-color:#8D0F6D"/>
+				<stop  offset="0.1459" style="stop-color:#AD0D5A"/>
+				<stop  offset="0.2229" style="stop-color:#C80A4A"/>
+				<stop  offset="0.3041" style="stop-color:#DE083E"/>
+				<stop  offset="0.3913" style="stop-color:#ED0335"/>
+				<stop  offset="0.4884" style="stop-color:#F60030"/>
+				<stop  offset="0.6158" style="stop-color:#FA002F"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st13;" d="M139.689,18.299l0.077,0.117l0.192,0.307l0.267,0.497l0.344,0.613l0.386,0.727l0.382,0.806l0.346,0.92l0.303,0.918l0.228,0.959l0.079,0.92L142.251,26l-0.192,0.842l-0.422,0.768l-0.651,0.687l-0.919,0.535l-1.189,0.384l0.193-0.578
+			l0.117-0.611l0.113-0.611l0.076-0.689l0.039-0.689V25.31l-0.037-0.69l-0.037-0.729l-0.076-0.729l-0.074-0.725l-0.116-0.69l-0.152-0.651l-0.113-0.651l-0.154-0.575l-0.188-0.574l-0.155-0.498l0.191-0.075l0.154-0.04l0.19-0.076l0.156-0.036l0.153-0.077l0.15-0.039
+			l0.191-0.078l0.19-0.076z"/>
+		<path style="&st13;" d="M138.389,18.835l0.534,2.108l0.382,1.914l0.189,1.646l0.037,1.455l-0.077,1.264l-0.23,1.072l-0.307,0.92l-0.347,0.764l-0.46,0.613l-0.497,0.496l-0.498,0.347l-0.495,0.267l-0.54,0.191l-0.459,0.076l-0.42,0.037h-0.384l0.229-0.613
+			l0.229-0.612l0.192-0.688l0.154-0.689l0.152-0.767l0.118-0.764l0.116-0.767l0.075-0.803l0.041-0.806l0.001-0.843l-0.041-0.804l-0.073-0.843l-0.114-0.804l-0.155-0.843l-0.188-0.766l-0.229-0.805l0.457-0.154l0.463-0.152l0.422-0.152l0.418-0.115l0.348-0.113
+			l0.381-0.115l0.306-0.076l0.27-0.077z"/>
+		<path style="&st13;" d="M135.285,19.792l0.231,0.765l0.227,0.959l0.155,1.073l0.072,1.186l0.041,1.303l-0.002,1.301l-0.116,1.301l-0.192,1.267l-0.271,1.187l-0.345,1.109l-0.499,0.957l-0.572,0.766l-0.731,0.574l-0.84,0.304l-0.96,0.04l-1.108-0.307l0.422-0.691
+			l0.421-0.727l0.347-0.766l0.307-0.727l0.229-0.803l0.231-0.768l0.152-0.805l0.154-0.805l0.077-0.804l0.038-0.841v-0.805l-0.073-0.842l-0.076-0.842l-0.152-0.806l-0.152-0.845l-0.229-0.803l0.383-0.152l0.458-0.152l0.461-0.153l0.46-0.153l0.46-0.151l0.382-0.153
+			l0.346-0.117l0.267-0.074z"/>
+		<path style="&st13;" d="M125.546,35.674l1.036,0.08l0.997-0.154l0.879-0.381l0.805-0.535l0.766-0.73l0.652-0.879l0.536-0.994l0.499-1.109l0.384-1.188l0.309-1.266l0.192-1.3l0.078-1.302l0.001-1.301l-0.114-1.303l-0.229-1.265l-0.343-1.188l-0.422,0.152
+			l-0.425,0.154l-0.456,0.114l-0.463,0.152l-0.458,0.154l-0.497,0.153l-0.46,0.152l-0.497,0.152v0.804l-0.001,0.879l-0.04,0.999l-0.039,1.033l-0.039,1.033l-0.038,1.072l-0.116,1.11l-0.113,1.032l-0.156,1.035L127.62,32l-0.233,0.919l-0.268,0.806l-0.308,0.687
+			l-0.384,0.577l-0.421,0.419l-0.461,0.267z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd35" x1="-3738.23" y1="-3453.355" x2="-3733.0664" y2="-3424.071" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2110.5286 1859.3658)">
+				<stop  offset="0" style="stop-color:#681083"/>
+				<stop  offset="0.0752" style="stop-color:#6F1182"/>
+				<stop  offset="0.1935" style="stop-color:#831380"/>
+				<stop  offset="0.3399" style="stop-color:#A3157B"/>
+				<stop  offset="0.5088" style="stop-color:#D11975"/>
+				<stop  offset="0.6158" style="stop-color:#F21B71"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st14;" d="M128.277,22.083l-0.384,0.153l-0.383,0.114l-0.343,0.115l-0.386,0.077l-0.382,0.114l-0.347,0.113l-0.384,0.116l-0.38,0.153l-0.077,0.766l-0.041,0.84l-0.039,0.92l-0.038,0.958l-0.001,0.958l-0.001,1.031l-0.04,1.037l-0.039,0.994
+			l-0.076,0.997l-0.115,0.994l-0.193,0.919l-0.191,0.844l-0.305,0.802l-0.346,0.727l-0.422,0.616l-0.536,0.496l1.108-0.268l0.919-0.383l0.767-0.533l0.651-0.614l0.537-0.729l0.423-0.839l0.306-0.919l0.232-0.959l0.156-1.072l0.112-1.11l0.039-1.15l0.042-1.225
+			l0.037-1.225l0.039-1.264l0.001-1.264l0.078-1.303z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd36" x1="-3716.3066" y1="-3509.6641" x2="-3713.6802" y2="-3491.7153" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2070.8274 1900.0875)">
+				<stop  offset="0" style="stop-color:#681083"/>
+				<stop  offset="0.0006" style="stop-color:#681083"/>
+				<stop  offset="0.072" style="stop-color:#8D0F6D"/>
+				<stop  offset="0.1459" style="stop-color:#AD0D5A"/>
+				<stop  offset="0.2229" style="stop-color:#C80A4A"/>
+				<stop  offset="0.3041" style="stop-color:#DE083E"/>
+				<stop  offset="0.3913" style="stop-color:#ED0335"/>
+				<stop  offset="0.4884" style="stop-color:#F60030"/>
+				<stop  offset="0.6158" style="stop-color:#FA002F"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st15;" d="M118.116,38.426l1.531-0.074l1.304-0.305l1.07-0.497l0.882-0.651l0.689-0.842l0.502-0.958l0.419-1.071l0.27-1.188l0.154-1.226l0.114-1.261l0.041-1.305l0.001-1.262l0.001-1.305l0.001-1.223l0.076-1.15l0.078-1.071l-0.421,0.114
+			l-0.383,0.113l-0.343,0.117l-0.387,0.113l-0.382,0.113l-0.343,0.115l-0.384,0.077l-0.423,0.114l0.039,0.113l0.075,0.269l0.078,0.423l0.114,0.537l0.074,0.688l0.078,0.768l0.039,0.881l-0.04,0.996l-0.114,1.035l-0.195,1.145l-0.347,1.189l-0.42,1.225l-0.614,1.265
+			l-0.766,1.339l-0.921,1.3l-1.15,1.339z"/>
+		<path style="&st15;" d="M112.905,40.07l1.035,0.191l1.035-0.073l0.995-0.346l0.996-0.537l0.956-0.725l0.92-0.881l0.844-1.07l0.769-1.188l0.649-1.265l0.576-1.378l0.462-1.456l0.309-1.489l0.192-1.496l0.041-1.531l-0.152-1.454l-0.308-1.456l-3.638,1.146
+			l0.037,0.613l0.037,0.729l-0.038,0.801l-0.08,0.92l-0.112,0.958l-0.192,1.034l-0.192,1.072l-0.308,1.109l-0.347,1.109l-0.421,1.073l-0.461,1.071l-0.575,1.035l-0.612,0.995l-0.729,0.919l-0.805,0.841l-0.883,0.727z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd38" x1="-3716.5049" y1="-3512.9565" x2="-3712.3662" y2="-3473.3286" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2070.8274 1900.0875)">
+				<stop  offset="0" style="stop-color:#681083"/>
+				<stop  offset="0.0006" style="stop-color:#681083"/>
+				<stop  offset="0.072" style="stop-color:#8D0F6D"/>
+				<stop  offset="0.1459" style="stop-color:#AD0D5A"/>
+				<stop  offset="0.2229" style="stop-color:#C80A4A"/>
+				<stop  offset="0.3041" style="stop-color:#DE083E"/>
+				<stop  offset="0.3913" style="stop-color:#ED0335"/>
+				<stop  offset="0.4884" style="stop-color:#F60030"/>
+				<stop  offset="0.6158" style="stop-color:#FA002F"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st16;" d="M118.662,24.987l-0.573,0.189l-0.729,0.191l-0.807,0.268l-0.84,0.229l-0.806,0.27l-0.804,0.227l-0.689,0.191l-0.537,0.115l-0.076,0.881l-0.042,0.955l-0.075,0.959l-0.038,0.995l-0.117,0.995l-0.077,1.037l-0.115,0.994l-0.153,0.996
+			l-0.19,0.956l-0.232,0.921l-0.309,0.916l-0.344,0.842l-0.422,0.807l-0.498,0.688l-0.536,0.65l-0.65,0.576l0.766,0.114l0.803-0.038l0.804-0.19l0.805-0.343l0.804-0.5l0.807-0.612l0.768-0.763l0.766-0.958l0.689-1.034l0.611-1.227l0.578-1.339l0.495-1.528
+			l0.388-1.65l0.307-1.758l0.194-1.955l0.077-2.066z"/>
+		<path style="&st15;" d="M103.98,41.593l1.725,0.081l1.455-0.154l1.265-0.418l0.998-0.653l0.841-0.802l0.691-0.958l0.497-1.072l0.386-1.224l0.308-1.225l0.19-1.343l0.116-1.3l0.117-1.302l0.038-1.303l0.078-1.188l0.075-1.11l0.117-0.995l-0.535,0.114l-0.463,0.115
+			l-0.419,0.153l-0.418,0.112l-0.463,0.117l-0.422,0.111l-0.496,0.154l-0.576,0.151l-0.116,1.038l-0.112,0.992l-0.116,0.996l-0.156,0.955l-0.116,0.961l-0.153,0.918l-0.189,0.879l-0.194,0.881l-0.269,0.844l-0.308,0.841l-0.382,0.805l-0.422,0.806l-0.536,0.801
+			l-0.576,0.767l-0.689,0.728l-0.77,0.726z"/>
+		<path style="&st16;" d="M99.349,42.433l1.532,0.078l1.34-0.192l1.188-0.418l1.036-0.65l0.88-0.805l0.766-0.957l0.615-1.107l0.537-1.188l0.458-1.227l0.347-1.3l0.269-1.266l0.194-1.299l0.19-1.226l0.116-1.15l0.116-1.073l0.079-0.919l-0.539,0.117l-0.459,0.112
+			l-0.42,0.115l-0.423,0.077l-0.38,0.113l-0.425,0.074l-0.495,0.152l-0.576,0.115l-0.192,1.496l-0.229,1.417l-0.27,1.301l-0.269,1.226l-0.31,1.109l-0.345,1.071l-0.383,0.919l-0.384,0.883l-0.383,0.803l-0.425,0.727l-0.459,0.613l-0.422,0.573l-0.459,0.536
+			l-0.461,0.42l-0.498,0.383l-0.459,0.345z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd41" x1="-3711.1768" y1="-3514.0366" x2="-3709.7402" y2="-3493.4663" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2070.8274 1900.0875)">
+				<stop  offset="0" style="stop-color:#681083"/>
+				<stop  offset="0.0006" style="stop-color:#681083"/>
+				<stop  offset="0.072" style="stop-color:#8D0F6D"/>
+				<stop  offset="0.1459" style="stop-color:#AD0D5A"/>
+				<stop  offset="0.2229" style="stop-color:#C80A4A"/>
+				<stop  offset="0.3041" style="stop-color:#DE083E"/>
+				<stop  offset="0.3913" style="stop-color:#ED0335"/>
+				<stop  offset="0.4884" style="stop-color:#F60030"/>
+				<stop  offset="0.6158" style="stop-color:#FA002F"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st17;" d="M94.98,43.004l1.457,0.078l1.302-0.189l1.151-0.424l1.071-0.611l0.881-0.802l0.805-0.919l0.69-1.072l0.614-1.146l0.535-1.189l0.422-1.263l0.347-1.264l0.308-1.262l0.271-1.188l0.192-1.149l0.152-1.031l0.155-0.922l-0.459,0.076l-0.46,0.116
+			l-0.462,0.114l-0.459,0.115l-0.462,0.115l-0.458,0.112l-0.46,0.114l-0.497,0.117l-0.038,0.725l-0.116,0.805l-0.153,0.843l-0.269,0.918l-0.27,0.995l-0.382,0.957l-0.385,1.033l-0.422,0.998l-0.499,0.996l-0.537,0.957l-0.534,0.879l-0.577,0.84l-0.574,0.806
+			l-0.614,0.69l-0.649,0.572l-0.617,0.459z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd42" x1="-3718.4951" y1="-3510.1016" x2="-3716.7441" y2="-3482.9595" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2070.8274 1900.0875)">
+				<stop  offset="0" style="stop-color:#681083"/>
+				<stop  offset="0.0006" style="stop-color:#681083"/>
+				<stop  offset="0.072" style="stop-color:#8D0F6D"/>
+				<stop  offset="0.1459" style="stop-color:#AD0D5A"/>
+				<stop  offset="0.2229" style="stop-color:#C80A4A"/>
+				<stop  offset="0.3041" style="stop-color:#DE083E"/>
+				<stop  offset="0.3913" style="stop-color:#ED0335"/>
+				<stop  offset="0.4884" style="stop-color:#F60030"/>
+				<stop  offset="0.6158" style="stop-color:#FA002F"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st18;" d="M90.197,43.881l1.49,0.193l1.38-0.191l1.264-0.496l1.15-0.766l1.073-0.955l0.921-1.148l0.84-1.301l0.77-1.341l0.613-1.415l0.537-1.381l0.46-1.302l0.384-1.262l0.23-1.074l0.192-0.88l0.114-0.65l0.001-0.381l-0.573,0.111l-0.537,0.115
+			l-0.535,0.152l-0.536,0.115l-0.536,0.152l-0.5,0.113l-0.497,0.115l-0.499,0.078l-0.191,0.651l-0.19,0.765l-0.229,0.879l-0.271,0.996l-0.308,1.035l-0.343,1.071l-0.384,1.069l-0.424,1.114l-0.461,1.07l-0.497,0.995l-0.537,0.959l-0.574,0.842l-0.653,0.725
+			l-0.65,0.574l-0.728,0.422l-0.765,0.229z"/>
+		<path style="&st18;" d="M86.712,43.688l1.377,0.307l1.223,0.001l1.113-0.267l1.034-0.535l0.882-0.729l0.805-0.881l0.727-1.068l0.652-1.15l0.539-1.226l0.498-1.261l0.384-1.265l0.385-1.227l0.307-1.147l0.231-1.035l0.23-0.918l0.189-0.727l-0.419,0.076
+			l-0.423,0.038l-0.38,0.075l-0.347,0.076l-0.384,0.076l-0.346,0.078l-0.305,0.074l-0.345,0.041l-0.118,0.879l-0.189,0.919l-0.232,0.917l-0.228,0.883l-0.309,0.918l-0.347,0.881l-0.382,0.844l-0.461,0.842l-0.46,0.842l-0.537,0.804l-0.615,0.765l-0.61,0.688
+			l-0.729,0.69l-0.727,0.611l-0.806,0.574l-0.879,0.535z"/>
+		<path style="&st16;" d="M82.345,44.374l1.147,0.002l1.112-0.115l1.07-0.268l1.037-0.384l0.956-0.533l0.959-0.65l0.842-0.763l0.841-0.842l0.73-0.96l0.69-1.032l0.614-1.15l0.573-1.186l0.461-1.264l0.385-1.34l0.347-1.379l0.23-1.414l-0.498,0.113l-0.499,0.076
+			l-0.536,0.115l-0.496,0.074l-0.497,0.078l-0.459,0.112l-0.5,0.077l-0.459,0.115l-0.231,0.805l-0.191,0.842l-0.231,0.805l-0.194,0.803l-0.23,0.804l-0.228,0.804l-0.307,0.766l-0.346,0.804l-0.42,0.767l-0.463,0.803l-0.576,0.766l-0.688,0.766l-0.768,0.729
+			l-0.918,0.765l-1.073,0.766l-1.188,0.726z"/>
+		<path style="&st16;" d="M76.14,45.095l1.495,0.118l1.454-0.076l1.34-0.229l1.266-0.382l1.187-0.497l1.112-0.649l1.033-0.768l0.918-0.917l0.844-0.955l0.767-1.073l0.693-1.148l0.573-1.222l0.496-1.304l0.425-1.34l0.307-1.377l0.233-1.381l-0.423,0.076l-0.46,0.117
+			l-0.456,0.074l-0.461,0.075l-0.459,0.078l-0.5,0.114l-0.497,0.076l-0.5,0.115l-0.152,0.955l-0.23,0.957l-0.31,0.96l-0.383,0.917l-0.457,0.918l-0.502,0.918l-0.574,0.882l-0.648,0.843l-0.691,0.844l-0.767,0.762l-0.808,0.727l-0.879,0.689l-0.921,0.611
+			l-0.995,0.575l-0.997,0.497l-1.072,0.419z"/>
+		<path style="&st15;" d="M72.732,45.475l1.264-0.075l1.226-0.189l1.228-0.306l1.186-0.458l1.112-0.536l1.109-0.648l1.034-0.729l0.958-0.842l0.881-0.917l0.843-0.993l0.73-1.076l0.65-1.109l0.536-1.184l0.46-1.226l0.348-1.267l0.229-1.299l-0.419,0.074l-0.385,0.037
+			l-0.346,0.039l-0.343,0.039l-0.346,0.037l-0.382,0.077L83.849,33l-0.539,0.075l-0.537,1.112l-0.459,1.031l-0.46,0.997l-0.422,0.919l-0.46,0.881l-0.424,0.805l-0.461,0.764l-0.498,0.727l-0.537,0.729l-0.613,0.649l-0.688,0.69l-0.765,0.611l-0.884,0.65
+			l-0.996,0.611l-1.108,0.612l-1.265,0.61z"/>
+		<path style="&st16;" d="M66.604,45.855l1.877,0.077l1.763-0.073l1.57-0.267l1.455-0.422l1.34-0.572l1.187-0.691l1.113-0.801l0.993-0.92l0.921-0.993l0.844-1.072l0.729-1.109l0.688-1.189l0.652-1.184l0.577-1.187l0.538-1.227l0.496-1.187l-0.343,0.036l-0.461,0.078
+			l-0.573,0.076l-0.575,0.076l-0.613,0.115l-0.537,0.076l-0.456,0.076l-0.347,0.035l-0.46,1.074l-0.499,1.074l-0.577,0.994l-0.573,0.955l-0.652,0.881l-0.688,0.879l-0.729,0.804l-0.804,0.807l-0.804,0.727l-0.885,0.688l-0.917,0.688l-0.96,0.613l-0.995,0.572
+			l-1.072,0.535l-1.072,0.496l-1.149,0.46z"/>
+		<path style="&st15;" d="M62.966,46.387L64,46.35l1.071-0.152l1.15-0.269l1.186-0.419l1.188-0.495l1.189-0.613l1.188-0.726l1.187-0.803l1.149-0.918l1.111-0.957l1.035-1.07l0.999-1.15l0.879-1.188l0.804-1.262l0.691-1.34l0.576-1.38l-0.575,0.079l-0.575,0.074
+			l-0.611,0.037l-0.612,0.077l-0.536,0.037l-0.461,0.077l-0.382,0.076l-0.192,0.115l-0.69,0.535l-0.689,0.575l-0.729,0.688l-0.729,0.688l-0.727,0.766l-0.767,0.802l-0.767,0.844l-0.768,0.845l-0.766,0.879l-0.804,0.842l-0.805,0.842l-0.845,0.84l-0.842,0.843
+			l-0.845,0.763L63.848,45.7l-0.882,0.688z"/>
+		<path style="&st16;" d="M57.375,46.383l0.997,0.654l1.032,0.268l1.034,0.001l1.073-0.268l1.071-0.536l1.073-0.729l1.111-0.916l1.11-1.033l1.112-1.188l1.148-1.225l1.189-1.301l1.188-1.299l1.188-1.264l1.226-1.264l1.228-1.148l1.226-1.031h-0.425l-0.494,0.074
+			l-0.576,0.038l-0.573,0.116L72.7,34.411l-0.612,0.113l-0.572,0.115l-0.5,0.075l-0.956,0.88l-0.957,0.88l-0.923,0.919l-0.919,0.919l-0.881,0.916l-0.883,0.921l-0.88,0.92l-0.845,0.84l-0.844,0.84l-0.842,0.768l-0.805,0.688l-0.804,0.613l-0.805,0.535l-0.767,0.459
+			l-0.766,0.343l-0.767,0.229z"/>
+		<path style="&st15;" d="M53.046,46.879l1.572,0.001l1.492-0.151l1.342-0.385l1.304-0.494l1.187-0.614l1.109-0.765l1.075-0.84l0.995-0.92l0.997-0.994l0.956-1.033l0.921-1.035l0.959-1.07l0.959-1.07l0.994-1.034l1.035-0.957l1.072-0.918l-0.382,0.04l-0.458,0.037
+			l-0.577,0.074l-0.572,0.041l-0.577,0.073l-0.459,0.038l-0.382,0.041l-0.229-0.001l-0.651,0.151L66.076,35.4l-0.649,0.423l-0.692,0.573l-0.689,0.687l-0.729,0.805l-0.766,0.844l-0.769,0.915l-0.88,0.958l-0.883,0.955l-0.997,0.996l-1.032,0.959l-1.111,0.955
+			l-1.188,0.88l-1.264,0.802l-1.381,0.729z"/>
+		<path style="&st11;" d="M138.274,15.35v-0.153l0.04-0.42l0.038-0.649l0.04-0.807l0.039-0.957l-0.037-1.033l-0.038-1.072l-0.111-1.111l-0.229-1.033l-0.309-0.996l-0.38-0.882l-0.572-0.728l-0.654-0.537l-0.843-0.307l-1.034-0.039l-1.186,0.306l0.385,0.384
+			l0.343,0.459l0.345,0.574l0.306,0.613l0.305,0.689l0.27,0.689l0.264,0.767l0.271,0.804l0.228,0.767l0.19,0.806l0.194,0.803l0.188,0.766l0.155,0.768l0.152,0.727l0.114,0.65l0.113,0.613l0.19-0.037l0.154-0.037l0.189-0.078l0.155-0.037l0.151-0.079l0.155-0.075
+			l0.192-0.037l0.226-0.078z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd52" x1="-3690.9155" y1="-3526.2993" x2="-3702.7354" y2="-3558.2568" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2070.8274 1900.0875)">
+				<stop  offset="0" style="stop-color:#4F0C81"/>
+				<stop  offset="0.0701" style="stop-color:#690C73"/>
+				<stop  offset="0.209" style="stop-color:#9A0A5B"/>
+				<stop  offset="0.3368" style="stop-color:#C20748"/>
+				<stop  offset="0.4512" style="stop-color:#E0053A"/>
+				<stop  offset="0.5481" style="stop-color:#F20032"/>
+				<stop  offset="0.6158" style="stop-color:#FA002F"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st19;" d="M136.86,15.925l-0.497-2.489l-0.535-2.108l-0.535-1.801l-0.532-1.492l-0.539-1.188l-0.534-0.958l-0.533-0.689l-0.499-0.497l-0.536-0.347l-0.458-0.153l-0.502-0.039l-0.42,0.078l-0.419,0.152l-0.382,0.191l-0.348,0.229l-0.306,0.23
+			l0.536,0.497l0.533,0.573l0.462,0.538l0.494,0.611l0.424,0.615l0.422,0.648l0.382,0.652l0.344,0.691l0.344,0.727l0.306,0.766l0.307,0.768l0.268,0.805l0.227,0.842l0.23,0.842l0.227,0.882l0.194,0.919l0.457-0.077l0.345-0.036l0.232-0.077l0.153-0.077l0.151-0.037
+			l0.156-0.076L136.632,16l0.229-0.075z"/>
+		<path style="&st11;" d="M134.944,16.651l-0.113-0.918l-0.194-1.035l-0.305-1.15l-0.379-1.226l-0.5-1.264l-0.571-1.227l-0.611-1.187l-0.688-1.111l-0.729-0.996l-0.765-0.843l-0.803-0.65l-0.842-0.425l-0.881-0.152l-0.882,0.152l-0.842,0.499l-0.882,0.878
+			l0.688,0.498l0.65,0.576l0.613,0.574l0.574,0.576l0.574,0.611l0.496,0.689l0.459,0.691l0.42,0.688l0.423,0.769l0.343,0.767l0.345,0.805l0.267,0.842l0.267,0.879l0.193,0.92l0.189,0.959l0.155,0.994l0.416-0.114l0.461-0.152l0.499-0.153l0.498-0.191l0.461-0.189
+			l0.421-0.154l0.344-0.151l0.23-0.077z"/>
+		<path style="&st19;" d="M120.017,6.607l0.919-0.612l0.92-0.344l0.957-0.115l0.919,0.115l0.958,0.307l0.919,0.5l0.882,0.689l0.843,0.805l0.762,0.919l0.766,1.073l0.65,1.188l0.572,1.226l0.496,1.305l0.384,1.376l0.306,1.38l0.151,1.416l-0.46,0.115l-0.459,0.116
+			l-0.46,0.15l-0.46,0.154l-0.497,0.191l-0.499,0.113l-0.457,0.154l-0.498,0.075l-0.346-0.88l-0.305-0.959l-0.383-0.957l-0.348-0.957l-0.379-0.996l-0.419-0.998l-0.423-0.956l-0.421-0.918l-0.456-0.884l-0.499-0.805l-0.533-0.766l-0.539-0.651l-0.609-0.575
+			l-0.615-0.459l-0.648-0.346l-0.69-0.19z"/>
+		<path style="&st11;" d="M115.804,7.75l1.455-0.648l1.302-0.344l1.149-0.038l1.034,0.193l0.919,0.421l0.806,0.65l0.724,0.807l0.65,0.957l0.575,1.072l0.495,1.188l0.5,1.229l0.457,1.225l0.457,1.264l0.421,1.264l0.459,1.188l0.497,1.111l-0.421,0.037l-0.384,0.115
+			l-0.383,0.113l-0.385,0.152l-0.381,0.118l-0.384,0.151l-0.421,0.114l-0.422,0.074l-0.038-0.151l-0.038-0.383l-0.114-0.498l-0.114-0.689l-0.189-0.803l-0.27-0.92l-0.306-0.996l-0.42-1.034l-0.494-1.034l-0.574-1.035l-0.728-1.035l-0.803-0.958l-0.96-0.918
+			l-1.07-0.767l-1.228-0.691l-1.375-0.5z"/>
+		<path style="&st19;" d="M110.366,8.552l0.882-0.651l0.997-0.42l1.069-0.153l1.072,0.04l1.149,0.229l1.148,0.461l1.108,0.615l1.111,0.768l1.07,0.956l0.997,1.075l0.878,1.225l0.805,1.342l0.687,1.416l0.537,1.533l0.342,1.57l0.19,1.687l-3.945,1.029l-0.228-0.649
+			l-0.307-0.77l-0.306-0.803l-0.382-0.881l-0.461-0.92l-0.457-0.956l-0.537-0.961l-0.573-0.956l-0.652-0.957l-0.725-0.92l-0.766-0.842l-0.803-0.808l-0.878-0.728l-0.959-0.613l-0.996-0.537l-1.07-0.421z"/>
+		<path style="&st11;" d="M120.502,21.387l-0.572,0.115l-0.727,0.152l-0.729,0.23l-0.808,0.229l-0.764,0.267l-0.729,0.191l-0.649,0.189l-0.536,0.152l-0.382-0.957l-0.421-0.995l-0.422-0.996l-0.42-1.036l-0.421-1.032l-0.458-0.997l-0.498-0.995l-0.497-0.997
+			l-0.533-0.918l-0.573-0.845l-0.614-0.804l-0.651-0.727l-0.65-0.652l-0.728-0.537l-0.804-0.423l-0.804-0.306l0.692-0.459l0.764-0.344l0.806-0.23l0.88-0.075l0.918,0.076l0.959,0.231l0.957,0.383l0.992,0.576l0.999,0.728l0.993,0.92l0.995,1.149l0.954,1.304
+			l0.919,1.532l0.917,1.723l0.843,1.992l0.802,2.184z"/>
+		<path style="&st11;" d="M101.288,11.34l1.571-0.841l1.415-0.498l1.304-0.114l1.187,0.193l1.032,0.458l0.996,0.691l0.841,0.883l0.805,1.073l0.688,1.188l0.649,1.265l0.573,1.341l0.534,1.34l0.536,1.302l0.498,1.265l0.458,1.148l0.456,1.035l-0.534,0.076
+			l-0.459,0.112l-0.422,0.079l-0.422,0.114l-0.421,0.114l-0.459,0.115l-0.498,0.076l-0.572,0.112l-0.5-1.033l-0.458-1.036l-0.46-0.994l-0.458-0.958l-0.459-0.958l-0.495-0.88l-0.5-0.881l-0.495-0.806l-0.575-0.807l-0.61-0.727l-0.612-0.688l-0.688-0.652
+			l-0.769-0.615l-0.801-0.536l-0.92-0.498l-0.956-0.46z"/>
+		<path style="&st19;" d="M96.537,12.715l1.419-0.765l1.339-0.383l1.265-0.075l1.225,0.191l1.111,0.461l1.069,0.689l0.996,0.844l0.921,0.998l0.841,1.149l0.802,1.187l0.726,1.227l0.652,1.264l0.611,1.266l0.537,1.148l0.455,1.111l0.423,0.957l-0.574,0.113
+			l-0.5,0.115l-0.46,0.113l-0.421,0.076l-0.458,0.115l-0.461,0.115l-0.536,0.076l-0.613,0.115l-0.688-1.533l-0.688-1.417l-0.646-1.302l-0.651-1.188l-0.614-1.071l-0.573-0.961l-0.61-0.84l-0.574-0.807l-0.612-0.651l-0.613-0.575l-0.611-0.498l-0.65-0.421
+			l-0.653-0.308l-0.685-0.269l-0.731-0.155l-0.765-0.113z"/>
+		<path style="&st11;" d="M92.937,13.747l1.378-0.65l1.307-0.308l1.222,0.001l1.19,0.233l1.07,0.458l1.033,0.654l0.956,0.844l0.92,0.957l0.802,1.072l0.766,1.148l0.726,1.188l0.613,1.188l0.609,1.189l0.5,1.15l0.456,1.033l0.421,0.959l-0.459,0.113l-0.42,0.113
+			l-0.424,0.076l-0.383,0.116l-0.421,0.077l-0.42,0.075l-0.462,0.113l-0.496,0.077l-0.231-0.765l-0.342-0.845l-0.42-0.842l-0.497-0.919l-0.535-0.919l-0.651-0.921l-0.649-0.92l-0.728-0.92l-0.765-0.841l-0.805-0.846l-0.803-0.766l-0.804-0.652l-0.843-0.613
+			l-0.805-0.498l-0.802-0.383l-0.806-0.23z"/>
+		<path style="&st19;" d="M88.608,14.852l1.417-0.762l1.38-0.345l1.379,0.039l1.301,0.385l1.264,0.612l1.226,0.879l1.149,1.038l1.069,1.147l0.995,1.229l0.881,1.264l0.8,1.227l0.65,1.187l0.536,1.036l0.422,0.879l0.23,0.652l0.113,0.383l-0.574,0.115l-0.498,0.113
+			l-0.498,0.115l-0.5,0.115l-0.496,0.115l-0.459,0.074l-0.499,0.077l-0.497,0.076l-0.344-0.651l-0.384-0.804l-0.458-0.882l-0.537-0.921l-0.571-1.033l-0.614-1.034l-0.646-0.997l-0.691-1.034l-0.727-0.959l-0.767-0.881l-0.802-0.804l-0.803-0.652l-0.844-0.537
+			l-0.844-0.345l-0.878-0.152l-0.882,0.035z"/>
+		<path style="&st11;" d="M85.468,16.077l1.266-0.842l1.224-0.459l1.149-0.113l1.149,0.19l1.071,0.461l1.033,0.692l0.958,0.842l0.915,1.035l0.844,1.113l0.805,1.184l0.727,1.229l0.687,1.225l0.574,1.15l0.535,1.073l0.421,0.918l0.383,0.766l-0.46,0.077l-0.382,0.114
+			l-0.344,0.115l-0.308,0.113l-0.347,0.114l-0.305,0.115l-0.308,0.078l-0.343,0.073l-0.344-0.955l-0.421-0.958l-0.422-0.921l-0.46-0.918l-0.537-0.919l-0.531-0.844l-0.613-0.844l-0.65-0.805l-0.689-0.767l-0.764-0.688l-0.765-0.614l-0.844-0.574l-0.919-0.5
+			l-0.919-0.421l-0.996-0.308l-1.071-0.229z"/>
+		<path style="&st19;" d="M81.483,16.993l1.113-0.422l1.109-0.266l1.148-0.077l1.074,0.078l1.109,0.231l1.032,0.345l1.034,0.536l1.034,0.652l0.956,0.768l0.918,0.92l0.881,0.996l0.842,1.112l0.802,1.226l0.689,1.34l0.688,1.418l0.571,1.491l-0.498,0.077
+			l-0.495,0.076l-0.501,0.115l-0.497,0.153l-0.496,0.115l-0.498,0.153l-0.497,0.115l-0.5,0.074l-0.343-0.842l-0.343-0.882l-0.347-0.843l-0.342-0.883l-0.422-0.842l-0.419-0.805l-0.501-0.842l-0.534-0.767l-0.649-0.729l-0.688-0.728l-0.805-0.652l-0.88-0.613
+			l-0.996-0.537l-1.11-0.498l-1.261-0.424l-1.381-0.344z"/>
+		<path style="&st11;" d="M75.815,18.329l1.455-0.609l1.457-0.385l1.34-0.189l1.34-0.037l1.265,0.191l1.226,0.346l1.147,0.498l1.111,0.652l0.992,0.805l0.994,0.919l0.884,1.036l0.84,1.15l0.764,1.264l0.652,1.34l0.611,1.381l0.535,1.491l-0.459,0.077l-0.46,0.076
+			l-0.536,0.078l-0.501,0.074l-0.533,0.078l-0.538,0.074l-0.535,0.076l-0.535,0.076l-0.269-1.072l-0.383-0.994l-0.42-0.996l-0.533-0.959l-0.575-0.881L85.5,23.046l-0.688-0.805l-0.766-0.729l-0.842-0.689l-0.916-0.574l-0.959-0.539l-0.995-0.459l-1.071-0.346
+			l-1.112-0.307l-1.146-0.191l-1.188-0.078z"/>
+		<path style="&st19;" d="M73.021,18.632l1.302-0.19l1.262-0.113l1.263,0.039l1.228,0.154l1.224,0.307l1.15,0.385l1.109,0.498l1.073,0.613l0.995,0.729l0.954,0.844l0.844,0.919l0.803,1.034L86.916,25l0.611,1.226l0.499,1.341l0.38,1.419l-0.46,0.035l-0.383,0.038
+			l-0.382,0.077l-0.384,0.077l-0.384,0.074l-0.382,0.078l-0.46,0.114l-0.496,0.076l-0.651-1.111l-0.613-1.073l-0.532-0.958l-0.5-0.956l-0.535-0.844l-0.498-0.804l-0.497-0.767l-0.572-0.69l-0.612-0.651l-0.688-0.575l-0.768-0.535l-0.842-0.498l-0.995-0.425
+			L75.7,19.286l-1.264-0.346l-1.415-0.308z"/>
+		<path style="&st11;" d="M66.933,19.432l1.914-0.457l1.8-0.268l1.646-0.075l1.531,0.154l1.417,0.307l1.302,0.461l1.187,0.573l1.074,0.77l1.03,0.842l0.917,0.96l0.844,1.034l0.802,1.112l0.728,1.147l0.688,1.227l0.612,1.226l0.611,1.265l-0.307,0.037l-0.42,0.037
+			l-0.459,0.115l-0.501,0.076l-0.496,0.115l-0.462,0.114l-0.419,0.036l-0.346,0.039l-0.571-1.148l-0.613-1.035L79.753,27.1l-0.726-0.918l-0.766-0.883l-0.805-0.806l-0.879-0.726l-0.919-0.69l-0.956-0.616l-0.996-0.573l-1.034-0.498l-1.07-0.498l-1.111-0.423
+			l-1.147-0.383l-1.189-0.346l-1.222-0.309z"/>
+		<path style="&st11;" d="M63.295,19.811l1.068-0.189l1.113-0.037l1.225,0.038l1.263,0.192l1.267,0.271l1.3,0.384l1.303,0.497l1.302,0.614l1.3,0.729l1.224,0.845l1.186,0.92l1.147,1.035l1.035,1.149l0.956,1.225l0.841,1.342l0.728,1.455l-0.537,0.039l-0.533,0.076
+			l-0.538,0.115l-0.536,0.113l-0.459,0.113l-0.385,0.117l-0.306,0.036l-0.19-0.037l-0.769-0.46l-0.763-0.537l-0.804-0.613l-0.843-0.689l-0.843-0.729l-0.878-0.768l-0.92-0.768l-0.916-0.802l-0.959-0.806l-0.956-0.807l-0.995-0.803l-0.996-0.729l-1.033-0.729
+			l-0.995-0.652l-1.071-0.613l-1.031-0.537z"/>
+		<path style="&st11;" d="M58.197,21.262l0.958-0.955l1.034-0.572l1.074-0.23l1.109,0.077l1.148,0.308l1.225,0.575l1.227,0.769l1.3,0.879l1.301,1.074l1.341,1.11l1.34,1.19l1.34,1.188l1.377,1.188l1.377,1.112l1.376,1.035l1.381,0.92l-0.421,0.074l-0.499,0.037
+			l-0.612,0.041l-0.613,0.037l-0.648,0.037h-0.653h-0.574l-0.497-0.002l-1.034-0.766l-0.993-0.804l-0.996-0.808l-0.918-0.842l-0.919-0.805l-0.883-0.807l-0.878-0.805l-0.88-0.767l-0.919-0.688l-0.879-0.651l-0.92-0.575l-0.956-0.5l-0.996-0.422l-1.034-0.345
+			l-1.073-0.192l-1.11-0.117z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd69" x1="-3772.377" y1="-3509.7163" x2="-3797.2949" y2="-3537.6816" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2070.8274 1900.0875)">
+				<stop  offset="0" style="stop-color:#4F0C81"/>
+				<stop  offset="0.0701" style="stop-color:#690C73"/>
+				<stop  offset="0.209" style="stop-color:#9A0A5B"/>
+				<stop  offset="0.3368" style="stop-color:#C20748"/>
+				<stop  offset="0.4512" style="stop-color:#E0053A"/>
+				<stop  offset="0.5481" style="stop-color:#F20032"/>
+				<stop  offset="0.6158" style="stop-color:#FA002F"/>
+				<stop  offset="1" style="stop-color:#F7EE5F"/>
+			</linearGradient>
+		</defs>
+		<path style="&st20;" d="M54.368,21.719l1.61-0.381l1.493-0.152l1.415,0.076l1.343,0.271l1.262,0.461l1.226,0.575l1.186,0.729l1.148,0.805l1.11,0.919l1.109,0.922l1.071,0.995l1.111,0.996l1.109,0.958l1.107,0.959l1.188,0.843l1.185,0.807l-0.38,0.037l-0.498,0.075
+			l-0.576,0.078l-0.576,0.036l-0.572,0.079l-0.5,0.072l-0.38,0.041l-0.231,0.037l-0.688-0.002l-0.69-0.189l-0.727-0.348l-0.766-0.496l-0.766-0.614l-0.843-0.728l-0.879-0.807l-0.919-0.844l-0.959-0.881l-1.031-0.918l-1.109-0.882l-1.148-0.844l-1.262-0.808
+			l-1.302-0.728l-1.379-0.651l-1.494-0.5z"/>
+		<path style="&st20;" d="M49.543,23.057l1.417-0.805l1.495-0.342h1.455l1.49,0.309l1.495,0.576l1.494,0.804l1.454,0.96l1.415,1.034l1.339,1.149l1.302,1.15l1.263,1.075l1.148,0.993l1.033,0.844l0.956,0.65l0.843,0.385l0.726,0.116l-0.61,0.077l-0.653,0.113
+			l-0.727,0.113l-0.765,0.117l-0.767,0.074l-0.767,0.115l-0.728,0.038L64.2,32.642l-1.07-0.806l-0.958-0.766l-0.879-0.767l-0.84-0.728l-0.767-0.73L58.96,28.12l-0.767-0.691l-0.726-0.651l-0.729-0.612l-0.804-0.576l-0.841-0.537l-0.919-0.496l-0.996-0.461
+			l-1.071-0.383l-1.226-0.348l-1.34-0.307z"/>
+		<defs>
+			<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd71" x1="-3498.5225" y1="4158.0396" x2="-3482.3647" y2="4209.6001" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 -1982.8965 3021.3838)">
+				<stop  offset="0" style="stop-color:#D8E7EB"/>
+				<stop  offset="0.0849" style="stop-color:#C9D9DE"/>
+				<stop  offset="0.2184" style="stop-color:#A5B8C2"/>
+				<stop  offset="0.3836" style="stop-color:#728896"/>
+				<stop  offset="0.5537" style="stop-color:#405766"/>
+				<stop  offset="0.6417" style="stop-color:#667D8B"/>
+				<stop  offset="0.742" style="stop-color:#92A7B1"/>
+				<stop  offset="0.8374" style="stop-color:#B7C8D0"/>
+				<stop  offset="0.9257" style="stop-color:#CFDFE4"/>
+				<stop  offset="1" style="stop-color:#D8E7EB"/>
+			</linearGradient>
+		</defs>
+		<g style="&st21;">
+			<defs>
+				<linearGradient gradientUnits="userSpaceOnUse"  id="AIgd72" x1="-3704.9473" y1="-3493.9082" x2="-3688.7896" y2="-3442.3477" gradientTransform="matrix(0.5318 0.0004 -0.0004 0.5318 2110.5286 1859.3658)">
+					<stop  offset="0" style="stop-color:#D8E7EB"/>
+					<stop  offset="0.0849" style="stop-color:#C9D9DE"/>
+					<stop  offset="0.2184" style="stop-color:#A5B8C2"/>
+					<stop  offset="0.3836" style="stop-color:#728896"/>
+					<stop  offset="0.5537" style="stop-color:#405766"/>
+					<stop  offset="0.6417" style="stop-color:#667D8B"/>
+					<stop  offset="0.742" style="stop-color:#92A7B1"/>
+					<stop  offset="0.8374" style="stop-color:#B7C8D0"/>
+					<stop  offset="0.9257" style="stop-color:#CFDFE4"/>
+					<stop  offset="1" style="stop-color:#D8E7EB"/>
+				</linearGradient>
+			</defs>
+			<path style="&st22;" d="M142.305,7.35l0.191-0.383l0.153-0.42l0.152-0.423l0.113-0.421l0.117-0.459l0.115-0.496l0.077-0.459l0.042-0.5l0.036-0.459l0.035-0.498l0.001-0.499l-0.035-0.46l-0.036-0.459l-0.08-0.457l-0.112-0.461l-0.114-0.42l0.611,0.804l0.459,0.882
+				l0.345,0.842l0.189,0.88l0.076,0.919v0.92l-0.116,0.918l-0.194,0.92l-0.228,0.918l-0.31,0.883l-0.343,0.879l-0.343,0.88l-0.385,0.843l-0.347,0.842l-0.346,0.765l-0.343,0.767l0.074-0.152l0.037-0.269l0.042-0.266v-0.345l0.037-0.424V12.06V11.6l0.001-0.496
+				l0.038-0.499v-0.498l0.039-0.534l0.04-0.498l0.038-0.461l0.078-0.461l0.075-0.42l0.116-0.383z"/>
+			<path style="&st22;" d="M153.974,23.252l-0.729-0.422l-0.729-0.462l-0.687-0.421l-0.688-0.422l-0.65-0.383l-0.651-0.422l-0.616-0.385l-0.609-0.42l-0.653-0.384l-0.607-0.384l-0.614-0.422l-0.652-0.382l-0.611-0.386l-0.654-0.342l-0.686-0.386l-0.689-0.382
+				l0.61,0.61l0.613,0.616l0.613,0.611l0.612,0.576l0.65,0.611l0.651,0.536l0.65,0.539l0.688,0.497l0.651,0.461l0.689,0.383l0.651,0.346l0.688,0.269l0.688,0.229l0.688,0.115l0.691,0.037l0.691-0.035z"/>
+			<path style="&st22;" d="M148.277,7.928l-0.536,0.308l-0.5,0.345l-0.495,0.345l-0.461,0.344l-0.46,0.343l-0.419,0.383l-0.424,0.421l-0.423,0.383l-0.384,0.422l-0.384,0.422l-0.382,0.421l-0.345,0.457l-0.383,0.422l-0.346,0.459l-0.344,0.459l-0.346,0.459
+				l0.153-0.496l0.192-0.499l0.191-0.537l0.229-0.534l0.231-0.536l0.265-0.499l0.31-0.498l0.346-0.495l0.382-0.46l0.461-0.381l0.498-0.385l0.537-0.344l0.612-0.269l0.652-0.229l0.765-0.152l0.805-0.076z"/>
+			<path style="&st22;" d="M142.574,3.329l-0.153,0.767l-0.114,0.767l-0.154,0.766l-0.116,0.689l-0.076,0.727l-0.114,0.689l-0.079,0.689l-0.115,0.689L141.576,9.8l-0.117,0.689l-0.074,0.651l-0.118,0.689l-0.116,0.689l-0.115,0.689l-0.15,0.689l-0.157,0.727
+				l-0.076-0.842l-0.113-0.805l-0.077-0.843l-0.076-0.841l-0.037-0.807l-0.038-0.805l0.039-0.805l0.039-0.764l0.076-0.767l0.116-0.688l0.194-0.689l0.229-0.651l0.269-0.573l0.384-0.537l0.422-0.46l0.497-0.421z"/>
+			<path style="&st22;" d="M146.674,2.071l0.692,0.648l0.416,0.729l0.189,0.766l0.04,0.805l-0.153,0.804l-0.307,0.843l-0.424,0.844l-0.498,0.841l-0.575,0.804l-0.611,0.805l-0.653,0.764l-0.65,0.689l-0.614,0.689l-0.534,0.572l-0.463,0.539l-0.383,0.418l0.077-1.147
+				l0.154-0.995l0.191-0.844l0.307-0.764l0.306-0.65l0.386-0.574l0.382-0.535l0.424-0.501l0.383-0.496l0.424-0.495l0.382-0.538l0.307-0.613l0.307-0.688l0.23-0.766l0.194-0.919l0.075-1.032z"/>
+			<path style="&st22;" d="M141.763,14.319v-0.805l-0.039-0.765l-0.034-0.765l-0.04-0.768l-0.036-0.729l-0.077-0.727l-0.076-0.727l-0.073-0.691l-0.117-0.688l-0.114-0.728l-0.189-0.689l-0.152-0.689L140.62,4.86l-0.268-0.689l-0.229-0.689l-0.306-0.689l1.111,1.073
+				l0.918,1.034l0.649,0.959l0.457,0.92l0.309,0.879l0.151,0.805l0.037,0.806l-0.077,0.727l-0.195,0.689l-0.187,0.651l-0.27,0.613l-0.271,0.533l-0.23,0.537l-0.229,0.459l-0.152,0.459l-0.078,0.383z"/>
+			<path style="&st22;" d="M152.982,16.97l-0.613,0.114l-0.614,0.116l-0.611,0.075l-0.613,0.075l-0.609,0.038l-0.616,0.037h-0.613h-0.575l-0.612-0.039h-0.574l-0.613-0.077l-0.573-0.038l-0.613-0.04l-0.575-0.075l-0.612-0.079l-0.574-0.075l0.498,0.229l0.498,0.192
+				l0.535,0.231l0.537,0.19l0.574,0.193l0.576,0.151l0.61,0.156l0.61,0.076l0.612,0.039h0.651l0.651-0.039l0.654-0.15l0.651-0.191l0.651-0.27l0.648-0.381l0.654-0.46z"/>
+			<path style="&st22;" d="M149.417,20.07l0.461,0.078l0.419,0.075l0.461,0.115l0.457,0.115l0.463,0.194l0.456,0.151l0.421,0.191l0.46,0.23l0.421,0.23l0.421,0.267l0.383,0.271l0.386,0.268l0.343,0.307l0.308,0.307l0.304,0.307l0.27,0.344l-0.269-0.917l-0.422-0.808
+				l-0.494-0.688l-0.615-0.651l-0.688-0.536l-0.768-0.5L151.754,19l-0.882-0.347l-0.919-0.306l-0.919-0.307l-0.955-0.231l-0.958-0.23l-0.957-0.193l-0.919-0.189l-0.843-0.154l-0.842-0.192l0.42,0.153l0.574,0.306l0.69,0.463l0.841,0.497l0.843,0.535l0.879,0.499
+				l0.842,0.46l0.768,0.308z"/>
+			<path style="&st22;" d="M151.174,26.926l0.345-0.881l0.117-0.844l-0.116-0.842l-0.307-0.766l-0.457-0.729l-0.612-0.727l-0.728-0.69l-0.804-0.614l-0.843-0.613l-0.879-0.536l-0.919-0.538l-0.884-0.459l-0.801-0.42l-0.767-0.387l-0.651-0.344l-0.496-0.309
+				l0.532,1.113l0.538,0.919l0.573,0.728l0.536,0.652l0.574,0.498l0.574,0.459l0.574,0.346l0.574,0.346l0.571,0.346l0.577,0.382l0.572,0.384l0.536,0.46l0.537,0.573l0.535,0.691l0.497,0.806l0.498,0.995z"/>
+			<path style="&st22;" d="M141.529,17.497l0.422,0.652l0.42,0.652l0.421,0.65l0.38,0.613l0.346,0.613l0.345,0.649l0.346,0.614l0.305,0.613l0.304,0.652l0.268,0.65l0.271,0.613l0.229,0.65l0.19,0.689l0.192,0.65l0.152,0.689l0.152,0.73l0.384-1.455l0.191-1.265
+				l0.041-1.149l-0.115-0.994l-0.229-0.844l-0.346-0.766l-0.42-0.652l-0.458-0.537l-0.538-0.499l-0.535-0.421l-0.573-0.346l-0.537-0.306l-0.496-0.306l-0.46-0.268l-0.342-0.307l-0.31-0.271z"/>
+		</g>
+	</g>
+</g><!-- Layer_x0020_1 -->
+</g><!-- translate and flip -->
+<g id="jakarta_text1" style='font-family: "Tahoma"; font-size: 15px; font-weight: bold;'>
+	<text x="114" y="15" fill="black" text-anchor="start">The</text>
+</g>
+<g id="jakarta_text2" style='font-family: "Tahoma"; font-size: 26px; font-weight: bold;'>
+	<text x="150" y="23" fill="black" text-anchor="start">Apache Avalon Project</text>
+</g>
+<g id="jakarta_text3" style='font-family: "Tahoma"; font-size: 16px;'>
+	<text x="190" y="44" fill="black" text-anchor="start">h t t p : / /  a v a l o n . a p a c h e . o r g /</text>
+</g>
+</svg>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/avalon-power.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/deployment.gif
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/group-logo.gif
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/icon.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/merlin.gif
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/project-logo.gif
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/server-01.gif
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/server-02.gif
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/server-03.gif
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/server-04.gif
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/tortoise-cvs-screenshot.gif
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/tortoisecvs-checkout.jpg
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/tortoisecvs-settings.jpg
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/wincvs-checkout.jpg
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/wincvs-preferences.jpg
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/images/wincvs-settings.jpg
==============================================================================
Binary file. No diff available.

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/index.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/index.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="akarasulu@apache.org">Alex Karasulu</author>
+    <title>Apache Directory Project</title>
+  </properties>
+  <body>
+    <section name="News and Information">
+      <ul>
+        <li>
+	   12/06/2003 : <a href="news.html">New Wiki Site</a>
+        </li>
+        <li>
+           10/29/2003 : <a href="news.html">New Directory Site Goes Live</a>
+        </li>
+      </ul>
+    </section>
+    <section name="What is it?">
+      <p>
+        Describe the project and its intentions here.
+      </p>
+    </section>
+    <section name="Sub-Projects">
+      <ul>
+        <li>
+          <a href="subprojects/naming/index.html">
+            <strong>Naming</strong>
+          </a>: 
+          Describes the Naming subproject here.
+	</li>
+        <li>
+          <a href="subprojects/ldap/index.html">
+            <strong>LDAP</strong>
+          </a>:
+          Describes the LDAP subproject here.
+	</li>
+        <li>
+          <a href="subprojects/janus/index.html">
+            <strong>Janus</strong>
+          </a>:
+          Describes the Janus subproject here.
+	</li>
+        <li>
+          <a href="subprojects/snickers/index.html">
+            <strong>Snickers</strong>
+          </a>:
+          Describes the Snickers subproject here.
+	</li>
+      </ul>
+    </section>
+    <section name="What Next">
+      <p>
+       If you're new to the Apache Directory Project, "Welcome!"  You may
+       be now wondering where to start.  The following should help you
+       find what you're looking for.
+      </p>
+      <subsection name="Server Users">
+        <p>
+         Talk about the old LDAPd server and the new Eve server which
+         is to replace it for users of the software.
+        </p>
+      </subsection>
+      <subsection name="API Users">
+        <p>
+         Talk and list the various APIs here that are useful to developers.
+        </p>
+      </subsection>
+      <subsection name="Directory Developers">
+        <p>
+       Whether you're a contributor or a committer, you'll should
+       familiarize yourself with the <a href="community/process/code-standards.html">Coding Standards</a>
+       document.  The <a href="community/index.html">Community</a>
+       section also reviews various standards, policies, and practices
+       within the Directory community.
+       </p>
+      </subsection>
+      <subsection name="About LDAP">
+        <p>
+         Talk about the protocol.
+        </p>
+      </subsection>
+      <subsection name="About ASN.1 and BER">
+        <p>
+         Talk about the ASN.1 and Basic Encoding Rules.
+        </p>
+      </subsection>
+      <subsection name="General Resources">
+        <p>
+         Put some resource information here.
+       </p>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/license.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/license.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="dev@avalon.apache.org">Avalon Documentation Team</author>
+    <title>Apache Avalon License</title>
+  </properties> 
+
+  <body>
+    <section name="Avalon Public License">
+     <source>
+ ============================================================================
+                   The Apache Software License, Version 1.1
+ ============================================================================
+ 
+ Copyright (C) 1997-2001 The Apache Software Foundation. All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+ 
+ 1. Redistributions of  source code must  retain the above copyright  notice,
+    this list of conditions and the following disclaimer.
+ 
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+ 
+ 3. The end-user documentation included with the redistribution, if any, must
+    include  the following  acknowledgment:  "This product includes  software
+    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
+    Alternately, this  acknowledgment may  appear in the software itself,  if
+    and wherever such third-party acknowledgments normally appear.
+ 
+ 4. The names "Jakarta", "Avalon", "Excalibur", "Avalon Framework" and 
+    "Apache Software Foundation"  must not be used to endorse or promote 
+    products derived  from this  software without  prior written permission. 
+    For written permission, please contact apache@apache.org.
+ 
+ 5. Products  derived from this software may not  be called "Apache", nor may
+    "Apache" appear  in their name,  without prior written permission  of the
+    Apache Software Foundation.
+ 
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
+ APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
+ ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
+ (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ This software  consists of voluntary contributions made  by many individuals
+ on  behalf of the Apache Software  Foundation. For more  information on the 
+ Apache Software Foundation, please see &lt;http://www.apache.org/&gt;.
+     </source>
+    </section>
+  </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/mailing-lists.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/mailing-lists.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="dev@avalon.apache.org">Avalon Documentation Team</author>
+    <title>Apache Avalon E-Mail Lists</title>
+  </properties> 
+
+<body>
+
+<section name="Please follow netiquette!">
+  <p>A mailing list is an electronic discussion forum that anyone can subscribe to.
+  When someone sends an email message to the mailing list, a copy of that message is
+  broadcast to everyone who is subscribed to that mailing list. Mailing lists provide
+  a simple and effective communication mechanism. With potentially thousands of
+  subscribers, there is a
+  <a href="http://jakarta.apache.org/site/mail.html">common set of etiquette
+  guidelines</a> that you should observe.</p>
+</section>
+  <section name="The lists">
+    <subsection name="The Avalon Users List">
+      <p>
+	<em>Light Traffic</em>
+	<a href="mailto:users-subscribe@avalon.apache.org">Subscribe</a>
+	<a href="mailto:users-unsubscribe@avalon.apache.org">Unsubscribe</a>
+	<a href="http://www.mail-archive.com/users@avalon.apache.org/">Archive</a>
+	<a href="nntp://news.gmane.org/gmane.comp.jakarta.avalon.user">News gateway</a>
+      </p>
+      <p>
+	This list is for users who are using Avalon in their own projects to ask
+	questions, share knowledge, and discuss issues related to using the Avalon
+	suite of software.
+      </p>
+    </subsection>
+    <subsection name="The Avalon Developers List">
+      <p>
+	<em>Medium Traffic</em>
+	<a href="mailto:dev-subscribe@avalon.apache.org">Subscribe</a>  
+	<a href="mailto:dev-unsubscribe@avalon.apache.org">Unsubscribe</a> 
+	<a href="http://www.mail-archive.com/dev@avalon.apache.org/">Archive</a> 
+	<a href="nntp://news.gmane.org/gmane.comp.jakarta.avalon.devel">News gateway</a>
+      </p>
+      <p>
+	This list is for developers who are maintaining Avalon or wanting to influence
+	its design to ask questions, share knowledge, and discuss issues related to developing 
+	the Avalon framework.
+      </p>
+    </subsection>
+    <subsection name="The Avalon CVS List">
+      <p>
+	<em>Medium Traffic</em> 
+	<a href="mailto:cvs-subscribe@avalon.apache.org">Subscribe</a>  
+	<a href="mailto:cvs-unsubscribe@avalon.apache.org">Unsubscribe</a> 
+	<a href="nntp://news.gmane.org/gmane.comp.jakarta.avalon.cvs">News gateway</a>
+      </p>
+      <p>
+        Changes to the Avalon CVSes are echoed to this list.
+      </p>
+    </subsection>
+</section>
+
+</body>
+
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/navigation.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/navigation.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project>
+
+ <title>Apache Directory</title>
+
+ <body>
+
+    <links>
+      <item name="Apache" href="http://apache.org/"/>
+      <item name="Directory" href="/index.html"/>
+      <item name="LDAP" href="/subprojects/ldap/index.html"/>
+      <item name="Naming" href="/subprojects/naming/index.html"/>
+      <item name="Janus" href="/subprojects/janus/index.html"/>
+      <item name="Snickers" href="/subprojects/snickers/index.html"/>
+    </links>
+
+    <menu name="About Avalon">
+      <item name="Overview" href="/index.html"/>
+      <item name="Latest News" href="/news.html"/>
+      <item name="Community" href="/community/index.html"/>
+      <item name="Sub-Projects" href="/subprojects/index.html"/>
+      <item name="Documentation" href="/doc/index.html"/>
+    </menu>
+
+    <menu name="Resources">
+      <item name="License" href="/license.html"/>
+      <item name="Downloads" href="/download.cgi"/>
+      <item name="CVS" href="/cvs.html"/>
+      <item name="WIKI" href="http://wiki.apache.org/directory"/>
+      <item name="Sandbox" href="/sandbox/index.html"/>
+      <item name="Mailing Lists" href="/mailing-lists.html"/>
+      <item name="Bug Database"  href="http://nagoya.apache.org/jira/secure/BrowseProject.jspa?id=10400"/>
+      <item name="Related Projects" href="/related/index.html"/>
+    </menu>
+
+    <menu name="Related">
+      <item name="Snickers" href="http://directory.apache.org/snickers"/>
+      <item name="Eve" href="http://directory.apache.org/ldap/eve"/>
+      <item name="Utilities" href="http://directory.apache.org/util"/>
+      <item name="LDAP Commons" href="http://directory.apache.org/ldap/common"/>
+      <item name="Naming Commons" href="http://directory.apache.org/naming"/>
+    </menu>
+
+ </body>
+
+</project>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/news.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/news.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="dev@avalon.apache.org">Avalon Documentation Team</author>
+    <title>Apache Avalon News</title>
+  </properties> 
+  
+ <body>
+
+  <section name="News and Information">
+
+   <!-- insert new news items as a subsection here -->
+   <subsection name="06-DEC-2003: New Wiki Site">
+    <p>
+      Thanks to Leo Simons and the other good folks of Apache Infrastructure,
+      Avalon has a new wiki site!  The new 
+      <a href="http://moin.sourceforge.net/">MoinMoin</a> based site is at
+      <a href="http://wiki.apache.org/avalon">http://wiki.apache.org/avalon</a>.
+      Please contribute to our growing documentation!
+    </p>
+   </subsection>
+
+   <subsection name="29-OCT-2003: New Avalon Site">
+     <p>
+       The Avalon Documentation Team is pleased to present the new and
+       improved Avalon web site.  There will be regular updates
+       through November as we convert and update our site
+       documentation.  If you have any suggestions or want to
+       contribute, please send an email to the <a
+       href="mailing-lists.html">developers' mailing list</a>.
+     </p>
+   </subsection>
+
+   <subsection name="26-SEP-2003: Merlin 3.0 beta 1">
+    <p>
+     The Avalon Team is proud to announce the release of Merlin 3.0
+     Beta 1. Merlin is an advanced component and service management
+     solution that simplifies and enhances component development,
+     assembly and service deployment concerns.
+     </p>
+     <p>
+      Merlin 3.0 binaries can be downloaded from the following site:
+     </p>
+     <p>
+      <a href="http://www.apache.org/dist/avalon/merlin/binaries/">
+       http://www.apache.org/dist/avalon/merlin/binaries/</a>
+     </p>
+
+<p>Key Product Features:</p>
+ <ul>
+   <li>auto assembly</li>
+   <li>muli-layer configuration management</li>
+   <li>advanced context management</li>
+   <li>composite component management</li>
+   <li>packaged deployment scenarios</li>
+   <li>local and remote repository integration</li>
+   <li>integral jar extension management</li>
+   <li>Maven plugin support for meta-info generation and simulated deployment</li>
+   <li>product packaging and install services</li>
+   <li>based on Avalon component meta model</li>
+   <li>support for legacy migration</li>
+ </ul>
+
+  <p>Product documentation, tutorials and specifications are available
+     on the <a href="http://avalon.apache.org/merlin">Merlin Home</a>
+     site or the download link referenced above.
+  </p> 
+
+</subsection>
+
+<subsection name="25-SEP-2003: Excalibur i18n and Excalibur Configuration">
+
+<p>The Avalon Team is pleased to announce availability of the upgrade
+   releases of the <a
+   href="http://avalon.apache.org/excalibur/i18n/">Excalibur i18n
+   internationalization</a> and <a
+   href="http://avalon.apache.org/excalibur/configuration/">Excalibur
+   Configuration</a> utilities.  These updates include minor
+   enhancements to configuration listing and equality testing, and
+   facilities enabling dynamic updating of a language locale.
+ </p>
+  
+</subsection>
+
+<subsection name="25-SEP-2003: Avalon Framework 4.1.5 and Avalon Meta 1.1">
+  <p>
+   The Avalon Team is proud to announce the general availability of <a
+href="http://avalon.apache.org/framework">Avalon Framework 4.1.5</a>
+and <a href=" http://avalon.apache.org/meta/">Avalon Meta 1.1</a>
+packages. The new framework release includes enhancements linked to
+the new Avalon Meta model.  Collectively the two packages represent an
+important step forward in the evolution of the Avalon component model.
+  </p>
+
+<p>New features introduced under the Avalon Meta package include:</p>
+<ul>
+ <li>component type descriptor meta-info model</li>
+ <li>container-neutral framework</li>
+ <li>declaration of component type dependencies</li>
+ <li>declaration of service publication</li>
+ <li>specification of logging channel assumptions</li>
+ <li>context strategy and context casting assumptions</li>
+ <li>context entry dependencies</li>
+ <li>context entry generation semantic</li>
+ <li>configuration schema details</li>
+ <li>XML and serialized object support</li>
+</ul>
+
+  <p>
+   Tools released in conjunction with the Avalon Meta package include
+   an Ant task and Maven plugin supporting the automation of meta-info
+   generation from @avalon javadoc tags.
+  </p>
+   
+   </subsection>
+
+   </section>
+  </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/components/index.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/components/index.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+
+<document>
+
+  <properties>
+    <author email="mcconnell@apache.org">Stephen McConnell</author>
+    <title>Apache Avalon: Components</title>
+  </properties>
+
+  <body>
+    <section name="Component Library">
+     <subsection name="Index">
+      <table>
+        <tr><th>Topic</th><th>Description</th></tr>
+        <tr><td>
+          <a href="http://avalon.apache.org/components/index.html">Cornerstone Collection</a></td>
+          <td>
+            <p>
+        The cornerstone project is the home of a set of component blocks
+        that can be used to simplify application development.  These components
+        and typically singleton components that represent structural building 
+        blocks.
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <td>
+          <a href="http://avalon.apache.org/excalibur/index.html">Excalibur Utilities</a></td>
+          <td>
+            <p>
+        The Excalibur project is the home of a set of utility services
+        used in the construction of formal blocks or container facilities.
+        Services include internationalizatioin, configuration utilities, 
+        thread management, SEDA sytel even handling, a logging subsystems, 
+        etc.
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <td>
+          <a href="http://avalon.apache.org/logkit/index.html">Avalon Logkit</a></td>
+          <td>
+            <p>
+	     Logkit is a complete logging framework (like log4j) as an
+	     Avalon component.  Most Avalon containers use it as the
+	     default logging implementation. 
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <td>
+          <a href="../../related/index.html">Third-Party Components</a></td>
+          <td>
+            <p>
+        A series of third-party components developed both here at Apache
+        and under external projects are described on this page. 
+            </p>
+          </td>
+        </tr>
+      </table>
+     </subsection>
+    </section>
+  </body>
+
+</document>
+
+
+

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/components/navigation.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/components/navigation.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project>
+
+ <title>Apache Avalon</title>
+
+ <body>
+
+    <links>
+      <item name="Apache" href="http://apache.org/"/>
+      <item name="Avalon" href="/index.html"/>
+      <item name="Framework" href="/product/framework/index.html"/>
+      <item name="Containers" href="/product/containers/index.html"/>
+      <item name="Components" href="/product/components/index.html"/>
+    </links>
+
+    <menu name="About Avalon">
+      <item name="Overview" href="/index.html"/>
+      <item name="Latest News" href="/news.html"/>
+      <item name="Community" href="/community/index.html"/>
+      <item name="Products" href="/product/index.html">
+        <item name="Framework" href="/product/framework/index.html"/>
+        <item name="Containers" href="/product/containers/index.html"/>
+        <item name="Components" href="/product/components/index.html"/>
+      </item>
+      <item name="Documentation" href="/doc/index.html"/>
+    </menu>
+
+    <menu name="Resources">
+      <item name="License" href="/license.html"/>
+      <item name="Downloads" href="/download.cgi"/>
+      <item name="CVS" href="/cvs.html"/>
+      <item name="WIKI" href="http://wiki.apache.org/avalon"/>
+      <item name="Sandbox" href="/sandbox/index.html"/>
+      <item name="Mailing Lists" href="/mailing-lists.html"/>
+      <item name="Bug Database"  href="http://nagoya.apache.org/bugzilla/reports.cgi?product=Avalon&amp;output=most_doomed&amp;links=1&amp;banner=1&amp;quip=0"/>
+      <item name="Related Projects" href="/related/index.html"/>
+    </menu>
+
+    <menu name="Related">
+      <item name="Framework" href="http://avalon.apache.org/framework"/>
+      <item name="Meta" href="http://avalon.apache.org/meta"/>
+      <item name="Utilities" href="http://avalon.apache.org/util"/>
+      <item name="Repository" href="http://avalon.apache.org/repository"/>
+      <item name="Merlin" href="http://avalon.apache.org/merlin"/>
+    </menu>
+
+ </body>
+
+</project>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/containers/index.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/containers/index.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="dev@avalon.apache.org">Avalon Documentation Team</author>
+    <title>Apache Avalon: Containers</title>
+  </properties>
+
+  <body>
+    <section name="Products">
+      <subsection name="Container Solutions">
+
+      <p>Within Avalon their are a number of container solutions. This 
+      reflects a historical divergence and a present convergence within 
+      the area of containment technology within Avalon. The original 
+      containment solutions ECM and Phoenix focussed on very different 
+      approaches to component management.  The ECM model dealt with 
+      primarily pooled objects used in environments such as 
+      <a href="http://cocoon.apache.org/">Cocoon</a>. The
+      Phoenix model dealt with a strict singleton model supporting 
+      project such as <a href="http://james.apache.org">James</a>.  
+      Recent developments have resulted in the 
+      release of 
+      <a href="http://avalon.apache.org/excalibur/fortress/">Fortress</a> 
+      and <a href="http://avalon.apache.org/merlin/">Merlin</a>.  
+      Fortress replaces the ECM solution
+      and is positioned as a migration vehicle for components to move
+      towards Avalon's latest container - Merlin.  The Merlin container
+      is an attempt at being a flexible and adaptive embedded container
+      that leverages a set of common containment facilities.
+      Merlin provides support for legacy Phoenix components and includes 
+      many of of the lifestyle concepts introduced within Fortress.</p>
+
+      <table>
+        <tr><th>Product</th><th>Description</th></tr>
+        <tr>
+          <td>
+            <p>
+              <a name="merlin"/>
+              <a href="http://avalon.apache.org/merlin/index.html">Avalon Merlin</a>
+            </p>
+          </td>
+          <td>
+            <p>
+                The Merlin project deals with the broad area of service
+                and component management. The Merlin system is a container
+                that provides comprehensive support for the management of
+                complex component-based systems. Merlin uses a component
+                meta-model to facilitate the automated assembly and
+                deployment of simple and composite components.
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <p>
+              <a name="fortress"/>
+              <a href="http://avalon.apache.org/excalibur/fortress/">Avalon Fortress</a>
+            </p>
+          </td>
+          <td>
+            <p>
+              Fortress contains a framework to help you create your own
+              avalon containers.  It boasts asynchronous management of your
+              component instances, high scalability, easier maintenance of
+              your code, and easy embedding into various environments like
+              servlet engines.
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <p>
+              <a name="ecm"/>
+              <a href="http://avalon.apache.org/excalibur/component.html">ECM</a>
+            </p>
+          </td>
+          <td>
+            <p>
+            This package contains the ExcaliburComponentManager (ECM). ECM has 
+            been depricated in favour of the new Fortress container.</p>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <p>
+              <a name="phoenix"/>
+              <a href="http://avalon.apache.org/phoenix/index.html">Phoenix</a>
+            </p>
+          </td>
+          <td>
+            <p>
+              Phoenix is a micro-kernel designed and implemented on top of 
+              the Avalon framework. It provides a number of facilities to 
+              manage the environment of Server Applications. Such facilities 
+              include log management, classloading, thread management and 
+              security.
+            </p>
+          </td>
+        </tr>
+      </table>
+      </subsection>
+    </section>
+  </body>
+</document>
+ 
\ No newline at end of file

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/containers/navigation.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/containers/navigation.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project>
+
+ <title>Apache Avalon</title>
+
+ <body>
+
+    <links>
+      <item name="Apache" href="http://apache.org/"/>
+      <item name="Avalon" href="/index.html"/>
+      <item name="Framework" href="/product/framework/index.html"/>
+      <item name="Containers" href="/product/containers/index.html"/>
+      <item name="Components" href="/product/components/index.html"/>
+    </links>
+
+    <menu name="About Avalon">
+      <item name="Overview" href="/index.html"/>
+      <item name="Latest News" href="/news.html"/>
+      <item name="Community" href="/community/index.html"/>
+      <item name="Products" href="/product/index.html">
+        <item name="Framework" href="/product/framework/index.html"/>
+        <item name="Containers" href="/product/containers/index.html">
+          <item name="Merlin" href="http://avalon.apache.org/merlin"/>
+          <item name="Fortress" href="http://avalon.apache.org/excalibur/fortress/"/>
+        </item>
+        <item name="Components" href="/product/components/index.html"/>
+      </item>
+      <item name="Documentation" href="/doc/index.html"/>
+    </menu>
+
+    <menu name="Resources">
+      <item name="License" href="/license.html"/>
+      <item name="Downloads" href="/download.cgi"/>
+      <item name="CVS" href="/cvs.html"/>
+      <item name="WIKI" href="http://wiki.apache.org/avalon"/>
+      <item name="Sandbox" href="/sandbox/index.html"/>
+      <item name="Mailing Lists" href="/mailing-lists.html"/>
+      <item name="Bug Database"  href="http://nagoya.apache.org/bugzilla/reports.cgi?product=Avalon&amp;output=most_doomed&amp;links=1&amp;banner=1&amp;quip=0"/>
+      <item name="Related Projects" href="/related/index.html"/>
+    </menu>
+
+    <menu name="Related">
+      <item name="Framework" href="http://avalon.apache.org/framework"/>
+      <item name="Meta" href="http://avalon.apache.org/meta"/>
+      <item name="Utilities" href="http://avalon.apache.org/util"/>
+      <item name="Repository" href="http://avalon.apache.org/repository"/>
+      <item name="Merlin" href="http://avalon.apache.org/merlin"/>
+    </menu>
+
+ </body>
+
+</project>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/framework/index.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/framework/index.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="dev@avalon.apache.org">Avalon Documentation Team</author>
+    <title>Apache Avalon: Framework</title>
+  </properties> 
+
+  <body>
+    <section name="Products">
+      <subsection name="Component Model">
+
+      <p>The Avalon Component model is made up of a combination of classic
+      interfaces that define the artifacts exchanged between a container and 
+      a component.  The requirements presented by a component to container
+      are expressed using meta-info descriptors that are colocated with 
+      component classes.  Interfaces and default implementations are described
+      under Avalon Framework package. The meta-info descriptors and related tools
+      are included under the Avalon Meta package.</p>
+
+      <table>
+        <tr><th>Product</th><th>Description</th></tr>
+        <tr>
+          <td>
+            <p>
+              <a name="framework"/>
+              <a href="http://avalon.apache.org/framework/" name="framework">Avalon Framework API and Implementation</a>
+            </p>
+          </td>
+          <td>
+            <p>The Avalon Framework API and Implementation consists of interfaces that define relationships between commonly used application components, best-of-practice pattern enforcements, and several lightweight convenience implementations of the generic components.</p>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <p>
+              <a name="meta"/>
+              <a href="http://avalon.apache.org/meta/" name="meta">Avalon Meta</a>
+            </p>
+          </td>
+          <td>
+            <p>The Avalon Meta Model defines the functional criteria for component types and services. A Type definition contains information about deployment and runtime dependencies together with information about the services that a component type can provide.</p>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <p>
+              <a name="util"/>
+              <a href="http://avalon.apache.org/util/" name="util">Avalon Utilities</a>
+            </p>
+          </td>
+          <td>
+            <p>A set of utilities shared by framework components supporting default property
+            management, environment variable resolution, exceptio reporting and a 
+            parameterized map implementation (using within the repositroy package).</p>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <p>
+              <a name="repository"/>
+              <a href="http://avalon.apache.org/repository/" 
+                  name="repository">Avalon Repository</a>
+            </p>
+          </td>
+          <td>
+            <p>A joint initative by the Avalon Project and the Apache Directory Project 
+             in the development of an inteligent bootstrappig, resource replication,
+             and artifact management framework.</p>
+          </td>
+        </tr>
+
+      </table>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/framework/navigation.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/framework/navigation.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project>
+
+ <title>Apache Avalon</title>
+
+ <body>
+
+    <links>
+      <item name="Apache" href="http://apache.org/"/>
+      <item name="Avalon" href="/index.html"/>
+      <item name="Framework" href="/product/framework/index.html"/>
+      <item name="Containers" href="/product/containers/index.html"/>
+      <item name="Components" href="/product/components/index.html"/>
+    </links>
+
+    <menu name="About Avalon">
+      <item name="Overview" href="/index.html"/>
+      <item name="Latest News" href="/news.html"/>
+      <item name="Community" href="/community/index.html"/>
+      <item name="Products" href="/product/index.html">
+        <item name="Framework" href="/product/framework/index.html"/>
+        <item name="Containers" href="/product/containers/index.html"/>
+        <item name="Components" href="/product/components/index.html"/>
+      </item>
+      <item name="Documentation" href="/doc/index.html"/>
+    </menu>
+
+    <menu name="Resources">
+      <item name="License" href="/license.html"/>
+      <item name="Downloads" href="/download.cgi"/>
+      <item name="CVS" href="/cvs.html"/>
+      <item name="WIKI" href="http://wiki.apache.org/avalon"/>
+      <item name="Sandbox" href="/sandbox/index.html"/>
+      <item name="Mailing Lists" href="/mailing-lists.html"/>
+      <item name="Bug Database"  href="http://nagoya.apache.org/bugzilla/reports.cgi?product=Avalon&amp;output=most_doomed&amp;links=1&amp;banner=1&amp;quip=0"/>
+      <item name="Related Projects" href="/related/index.html"/>
+    </menu>
+
+    <menu name="Related">
+      <item name="Framework" href="http://avalon.apache.org/framework"/>
+      <item name="Meta" href="http://avalon.apache.org/meta"/>
+      <item name="Utilities" href="http://avalon.apache.org/util"/>
+      <item name="Repository" href="http://avalon.apache.org/repository"/>
+      <item name="Merlin" href="http://avalon.apache.org/merlin"/>
+    </menu>
+
+ </body>
+
+</project>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/index.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/index.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="dev@avalon.apache.org">Avalon Documentation Team</author>
+    <title>Apache Avalon: Products</title>
+  </properties> 
+
+  <body>
+    <section name="Products">
+      <p>
+        Avalon consists of a number of product and sub-projects.
+      </p>
+      <table>
+        <tr>
+	  <th>Name</th>
+	  <th>Description</th>
+	</tr>
+	<tr>
+	  <td><a href="framework/index.html">Framework</a></td>
+	  <td>
+          <p>The framework collection includes a component meta model 
+          used to describe component dependencies towards a container, and,
+          the classic framework APIs that describe the runtime contact 
+          between a container and a component.</p>
+        </td>
+	</tr>
+	<tr>
+	  <td><a href="containers/index.html">Containers</a></td>
+	  <td>
+          <p>A container is a platform supporting the management of 
+          components. This page provides an overview of current and 
+          legacy container solutions and links to respective home pages.</p>
+        </td>
+	</tr>
+	<tr>
+	  <td><a href="components/index.html">Components</a></td>
+	  <td>
+          <p>The components page provides a summary of the two main
+          component groups in Avalon - the course grained cornerstone
+          suite and the fine grain utilites under Excalibur.</p>
+        </td>
+	</tr>
+      </table>
+    </section>
+  </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/navigation.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/product/navigation.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project>
+
+ <title>Apache Avalon</title>
+
+ <body>
+
+    <links>
+      <item name="Apache" href="http://apache.org/"/>
+      <item name="Avalon" href="/index.html"/>
+      <item name="Framework" href="/product/framework/index.html"/>
+      <item name="Containers" href="/product/containers/index.html"/>
+      <item name="Components" href="/product/components/index.html"/>
+    </links>
+
+    <menu name="About Avalon">
+      <item name="Overview" href="/index.html"/>
+      <item name="Latest News" href="/news.html"/>
+      <item name="Community" href="/community/index.html"/>
+      <item name="Products" href="/product/index.html">
+        <item name="Framework" href="/product/framework/index.html"/>
+        <item name="Containers" href="/product/containers/index.html"/>
+        <item name="Components" href="/product/components/index.html"/>
+      </item>
+      <item name="Documentation" href="/doc/index.html"/>
+    </menu>
+
+    <menu name="Resources">
+      <item name="License" href="/license.html"/>
+      <item name="Downloads" href="/download.cgi"/>
+      <item name="CVS" href="/cvs.html"/>
+      <item name="WIKI" href="http://wiki.apache.org/avalon"/>
+      <item name="Sandbox" href="/sandbox/index.html"/>
+      <item name="Mailing Lists" href="/mailing-lists.html"/>
+      <item name="Bug Database"  href="http://nagoya.apache.org/bugzilla/reports.cgi?product=Avalon&amp;output=most_doomed&amp;links=1&amp;banner=1&amp;quip=0"/>
+      <item name="Related Projects" href="/related/index.html"/>
+    </menu>
+
+    <menu name="Related">
+      <item name="Framework" href="http://avalon.apache.org/framework"/>
+      <item name="Meta" href="http://avalon.apache.org/meta"/>
+      <item name="Utilities" href="http://avalon.apache.org/util"/>
+      <item name="Repository" href="http://avalon.apache.org/repository"/>
+      <item name="Merlin" href="http://avalon.apache.org/merlin"/>
+    </menu>
+
+ </body>
+
+</project>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/related/apache.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/related/apache.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="dev@avalon.apache.org">Avalon Documentation Team</author>
+    <title>Apache Avalon: Related - Apache</title>
+  </properties> 
+
+  <body>
+    <section name="Related Projects">
+      <subsection name="Apache Projects">
+        <table>
+	  <tr>
+	    <th width="200">Name</th>
+	    <th>Description</th>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://incubator.apache.org/projects/directory.html">Apache Directory Project</a></p></td>
+	    <td>
+            <p>
+The Apache Java LDAP Server (a.k.a. Eve, f.k.a. LDAPd) is the flagship server under the new Apache Directory Project.  Eve is a pure Java implementation of an LDAP version 3 server based on Avalon and SEDA.  Eve, as the first of its kind, will revolutionize the way directories are used by enabling server embedding and rich database constructs like stored procedures and triggers.  Eve leverages JNDI as the embedding API and allows the use of a server side JNDI LDAP provider to efficiently access server databases within stored procedures.
+            </p>
+            <p>
+Eve's simplicity and modularity, thanks primarily to Avalon design patterns, makes it an ideal protocol experimentation and extention framework.  Those forging the future of internet directory protocols on standards bodies like ldap-bis and others can use Eve to test and demonstrate the substance of new RFCs.  Eve's swapable protocol components and plugable backends puts the focus on the protocol rather than code management and porting.
+            </p>
+          </td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://cocoon.apache.org/">Cocoon</a></p></td>
+	    <td><p>Apache Cocoon is a web development framework built around the concepts of separation of concerns and component-based web development.
+Cocoon implements these concepts around the notion of 'component pipelines', each component on the pipeline specializing on a particular operation. This makes it possible to use a Lego(tm)-like approach in building web solutions, hooking together components into pipelines without any required programming.
+Cocoon is "web glue for your web application development needs". It is a glue that keeps concerns separate and allows parallel evolution of all aspects of a web application, improving development pace and reducing the chance of conflicts.
+</p></td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://incubator.apache.org/projects/ftpserver.html">FTP Server Project</a></p></td>
+	    <td><p>FtpServer is a server component for Avalon that allows remote FTP client to attach and download files. The client software can be any type of FTP client written in any language. The criteria for eligibility is RFC compliance. The server uses several components. Some of the components have multiple implementations. For example user management has implementations that will use LDAP, JDBC and Cornerstone's Store facility for storage. 
+The server has a management console (GUI) that can connect over RMI to the server. 
+</p></td>
+	  </tr>
+	  <tr>
+	    <td><p><a
+href="http://jakarta.apache.org/turbine/fulcrum/">Fulcrum</a></p></td>
+	    <td><p>Fulcrum was originally created as part of the Turbine 3 effort.
+The idea was to be able to decouple the services from Turbine 2 allowing
+them to be used on both projects. Fulcrum is currently evolving into a
+generic component repository useful in building web applications. Each
+service is been converted into a stand alone component that can be released
+independently of the other components.
+ </p></td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://james.apache.org">James</a></p></td>
+	    <td>
+<p>The Java Apache Mail Enterprise Server (a.k.a. Apache James) is a 100% pure Java SMTP and POP3 Mail server and NNTP News server.  James was designed to be a complete and portable enterprise mail engine solution based on currently available open protocols. </p>
+<p>James is also a <i>mail application platform</i>.  The James team have developed a Java API to let you write Java code to process emails that we call the mailet API.  A <i>mailet</i> can generate an automatic reply, update a database, prevent spam, build a message archive, or whatever you can imagine.  A <i>matcher</i> determines whether your mailet should process an email in the server.  The James project hosts the Mailet API, and James provides an implementation of this mail application platform API.</p>
+          </td>
+	  </tr>
+	</table>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/related/external.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/related/external.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="dev@avalon.apache.org">Avalon Documentation Team</author>
+    <title>Apache Avalon: Related External</title>
+  </properties> 
+
+  <body>
+    <section name="External Projects">
+      <subsection name="Avalon Compatible Projects">
+        <table>
+	  <tr>
+	    <th width="150">Name</th>
+	    <th>Description</th>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://plexus.codehaus.org/">Plexus</a></p></td>
+	    <td><p>An Avalon container developed externally at Codehaus</p></td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://keelframework.org/">Keel Framework</a></p></td>
+	    <td><p>
+             Keel is ready made server side infrastructure Keel incorporates 
+             multiple open source projects to provide you with a best of breed 
+             framework that works right out of the box.</p>
+            </td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://jingdao.sourceforge.net">Jing DAO</a></p></td>
+	    <td><p>Jing is a Data Access Object (DAO) framework that supports 
+	        Avalon components and works within Avalon containers.</p></td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://open-im.net/">OpenIM Instant Messaging</a></p></td>
+	    <td>
+            <p>The purpose of the OpenIM project is to produce a
+            fast, simple, and highly efficient instant messager server
+            with high modularisation and a codebase that uses the
+            Avalon tools and <a
+            href="http://avalon.apache.org/merlin">Merlin
+            Container</a> created by Apache's Avalon project.</p>
+          </td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://jcrontab.sf.net">Jcrontab</a></p></td>
+	    <td>
+            <p>JCrontab provides a simple Java implementation of the 
+              Unix cron service. An Avalon interface is provided.</p></td>
+	  </tr>
+	  <tr>
+	    <td><p><a
+href="http://cvs.sourceforge.net/viewcvs.py/hibernate/HibernateExt/avalon/">
+Hibernate Wrapper</a></p></td>
+	    <td>
+            <p>Hibernate is a topnotch ORM tool.  An Avalon wrapper has 
+             been written to faciliate using Hibernate in an Avalon 
+             Environment.</p>
+          </td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://xingu.sf.net/">Xingu Components</a></p></td>
+	    <td><p>
+            A collection of Avalon components including OJB and Hibernate
+            support, a business object API, ACL component, Messenging 
+            component and more!</p>
+          </td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://phoenixjms.sf.net">PhoenixJMS</a></p></td>
+	    <td><p>An Avalon component wrapper for OpenJMS</p></td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://www.enterpriseobjectbroker.org/">
+              Enterprise Object Broker</a></p></td>
+	    <td><p>a "post-J2EE" application server.</p></td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://telnetd.sourceforge.net/">Telnetd</a></p></td>
+	    <td><p>Java telnet implementation</p></td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://spice.sf.net">Spice</a></p></td>
+	    <td><p>Spice is a repository of Components which support
+             Component Oriented Programming (COP) paradigms - in
+             particular, the Inversion of Control (IoC) design
+             pattern.</p>
+            </td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://ivory.codehaus.org/">Ivory</a></p></td>
+	    <td><p> Ivory provides easy integration between your
+             exiting java classes, Avalon services, and Axis. It
+             allows easy deployment of soap services with none of the
+             WSDD configuration that Axis normally mandates. Simply
+             register your class or service and wa-la, you have a new
+             RPC SOAP service. However, it also allows Avalon services
+             to be used with the standard WSDD configuration easily.</p>
+            </td>
+	  </tr>
+	</table>
+      </subsection>
+      <subsection name="Alternative Frameworks">
+        <table>
+           <tr>
+	     <th width="150">Name</th>
+	     <th>Description</th>
+	   </tr>
+	   <tr>
+	    <td><p><a href="http://picocontainer.org">Picocontainer</a></p></td>
+	    <td><p>Picocontainer is a light weight IoC framework.</p></td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://www.opensymphony.com:8668/space/WebWork2">WebWork 2</a></p></td>
+	    <td><p>an MVC web framework</p></td>
+	  </tr>
+	  <tr>
+	    <td><p>
+            <a href="http://www.jboss.org/index.html?module=html&amp;op=userdisplay&amp;id=developers/projects/jboss/aop">
+             JBoss AOP</a></p></td>
+	    <td><p>The JBoss Aspect Oriented Programming (AOP) framework</p></td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://www.springframework.org/">Spring Framework</a></p></td>
+	    <td><p>A J2EE Application Framework</p></td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://jakarta.apache.org/commons/sandbox/hivemind/">Hivemind</a></p></td>
+	    <td><p>HiveMind is a services and configuration microkernel. 
+                HiveMind allows you to create your application using a service 
+                oriented architecture.</p></td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://fractal.objectweb.org/">ObjectWeb Fractal</a></p></td>
+	    <td><p>
+	    Fractal is a modular and extensible component model that
+             can be used with various programming languages to design,
+             implement, deploy and reconfigure various systems and
+             applications, from operating systems to middleware
+             platforms and to graphical user interfaces. </p>
+            </td>
+	  </tr>
+	  <tr>
+	    <td><p><a href="http://lsd.student.utwente.nl/jicarilla">Jicarilla</a></p></td>
+	    <td><p>
+              The Jicarilla-Framework builds upon Type-3 IoC, adding
+             an Active interface to better support multi-threaded
+             components. Besides some pretty generic utility code
+             (like a set of base classes for nested exceptions), it
+             adds basic abstractions for the building blocks of
+             lightweight event-based systems, like sources, sinks,
+             stages, multicasters, etc.</p>
+            </td>
+	  </tr>
+	</table>
+      </subsection>
+    </section>
+  </body>
+</document>
+

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/related/index.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/related/index.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="dev@avalon.apache.org">Avalon Documentation Team</author>
+    <title>Apache Avalon: Related Projects</title>
+  </properties> 
+
+  <body>
+    <section name="Related Projects">
+      <subsection name="Index">
+        <table>
+	    <tr>
+	      <th width="150">Name</th>
+	      <th>Description</th>
+	    </tr>
+	    <tr>
+	      <td><a href="apache.html">Apache Projects</a></td>
+	      <td>Overview of a number of Apache projects that leverage 
+              the Avalon framework, containers, and shared components.
+              The page includes details of the James Enterprise Messaging 
+              Platform that leverages the Avalon component model and several
+              of the Cornerstone common components; the Turbine Fulcrum 
+              component suite and development related to the Merlin 
+              container, and the Cocoon project that is leveraging the 
+              Fortress container as part of their overall development 
+              strategy.</td>
+	    </tr>
+	    <tr>
+	      <td><a href="external.html">External Projects</a></td>
+	      <td>A list of external projects based on Avalon technochnologies
+             and services. This list includes a number of container iniatives 
+             that leverage the Avalon container contract together with third-party
+             container extensions, through to dedication applications such the 
+             OpenIM instant messaging project.</td>
+	    </tr>
+	    <tr>
+	      <td><a href="powered.html">Avalon Powered</a></td>
+	      <td>Resources for the Avalon Powered logo 
+               and site linking.<br/></td>
+	    </tr>
+	  </table>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/related/navigation.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/related/navigation.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project>
+
+ <title>Apache Avalon</title>
+
+ <body>
+
+    <links>
+      <item name="Apache" href="http://apache.org/"/>
+      <item name="Avalon" href="/index.html"/>
+      <item name="Framework" href="/product/framework/index.html"/>
+      <item name="Containers" href="/product/containers/index.html"/>
+      <item name="Components" href="/product/components/index.html"/>
+    </links>
+
+    <menu name="About Avalon">
+      <item name="Overview" href="/index.html"/>
+      <item name="Latest News" href="/news.html"/>
+      <item name="Community" href="/community/index.html"/>
+      <item name="Products" href="/product/index.html"/>
+      <item name="Documentation" href="/doc/index.html"/>
+    </menu>
+
+    <menu name="Resources">
+      <item name="License" href="/license.html"/>
+      <item name="Downloads" href="/download.cgi"/>
+      <item name="CVS" href="/cvs.html"/>
+      <item name="WIKI" href="http://wiki.apache.org/avalon"/>
+      <item name="Sandbox" href="/sandbox/index.html"/>
+      <item name="Mailing Lists" href="/mailing-lists.html"/>
+      <item name="Bug Database"  href="http://nagoya.apache.org/bugzilla/reports.cgi?product=Avalon&amp;output=most_doomed&amp;links=1&amp;banner=1&amp;quip=0"/>
+      <item name="Related Projects" href="related/index.html">
+        <item name="Apache" href="/related/apache.html"/>
+        <item name="External" href="/related/external.html"/>
+        <item name="Powered-By" href="/related/powered.html"/>
+      </item>
+    </menu>
+
+    <menu name="Related">
+      <item name="Framework" href="http://avalon.apache.org/framework"/>
+      <item name="Meta" href="http://avalon.apache.org/meta"/>
+      <item name="Utilities" href="http://avalon.apache.org/util"/>
+      <item name="Repository" href="http://avalon.apache.org/repository"/>
+      <item name="Merlin" href="http://avalon.apache.org/merlin"/>
+    </menu>
+
+ </body>
+
+</project>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/related/powered.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/related/powered.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="dev@avalon.apache.org">Avalon Documentation Team</author>
+    <title>Apache Avalon: Powered By</title>
+  </properties> 
+
+  <body>
+    <section name="Related Projects">
+      <subsection name="Powered-By Avalon">
+      <p>
+        Got a project using Avalon?  Email the <a href="../mailing-lists.html">developers'
+        mailing list</a> and we'll add it to our site.
+      </p>
+      <img src="../images/avalon-power.png" alt="Avalon Power"/>
+    </subsection>
+    </section>
+  </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/sandbox/index.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/sandbox/index.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="dev@avalon.apache.org">Avalon Documentation Team</author>
+    <title>Apache Avalon: Sandbox</title>
+  </properties> 
+
+  <body>
+    <section name="Sandbox">
+     <p>
+       The Sandbox is where Avaloners play with radical new ideas that result
+       in long "random thought" [RT] email threads and a few flame wars.  If
+       you want to see what's on the bleeding edge of Avalon development, check
+       out the <a href="../cvs.html">avalon-sandbox</a> module from CVS.
+     </p>
+     <subsection name="Sandbox Projects">
+       <table>
+         <tr>
+	  <th>Project</th>
+	  <th>Description</th>
+	  <th>Developers</th>
+	 </tr>
+	 <tr>
+	  <td>Avalon#</td>
+	  <td>A C# implementation of the Avalon framework</td>
+	  <td>hammett</td>
+	 </tr>
+	 <tr>
+	   <td>exporter</td>
+	   <td>An AltRMI exporter for Merlin components</td>
+	   <td>farra, mcconnell</td>
+	 </tr>
+	 <tr>
+	   <td>sevak</td>
+	   <td>Phoenix block for embedded web/servlet containers</td>
+	   <td>proyal</td>
+	 </tr>
+	 <tr>
+	   <td>eclipse</td>
+	   <td>Eclipse IDE plugins for Avalon development</td>
+	   <td>niclas</td>
+	 </tr>
+       </table>
+     </subsection>
+    </section>
+  </body>
+</document>

Added: incubator/directory/sitedocs/trunk/sitedocs/xdocs/sandbox/navigation.xml
==============================================================================
--- (empty file)
+++ incubator/directory/sitedocs/trunk/sitedocs/xdocs/sandbox/navigation.xml	Mon Jan 26 20:20:51 2004
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project>
+
+ <title>Apache Avalon</title>
+
+ <body>
+
+    <links>
+      <item name="Apache" href="http://apache.org/"/>
+      <item name="Avalon" href="/index.html"/>
+      <item name="Framework" href="/product/framework/index.html"/>
+      <item name="Containers" href="/product/containers/index.html"/>
+      <item name="Components" href="/product/components/index.html"/>
+    </links>
+
+    <menu name="About Avalon">
+      <item name="Overview" href="/index.html"/>
+      <item name="Latest News" href="/news.html"/>
+      <item name="Community" href="/community/index.html"/>
+      <item name="Products" href="/product/index.html"/>
+      <item name="Documentation" href="/doc/index.html"/>
+    </menu>
+
+    <menu name="Resources">
+      <item name="License" href="/license.html"/>
+      <item name="Downloads" href="/download.cgi"/>
+      <item name="CVS" href="/cvs.html"/>
+      <item name="WIKI" href="http://wiki.apache.org/avalon"/>
+      <item name="Sandbox" href="/sandbox/index.html"/>
+      <item name="Mailing Lists" href="/mailing-lists.html"/>
+      <item name="Bug Database"  href="http://nagoya.apache.org/bugzilla/reports.cgi?product=Avalon&amp;output=most_doomed&amp;links=1&amp;banner=1&amp;quip=0"/>
+      <item name="Related Projects" href="/related/index.html"/>
+    </menu>
+
+    <menu name="Related">
+      <item name="Framework" href="http://avalon.apache.org/framework"/>
+      <item name="Meta" href="http://avalon.apache.org/meta"/>
+      <item name="Utilities" href="http://avalon.apache.org/util"/>
+      <item name="Repository" href="http://avalon.apache.org/repository"/>
+      <item name="Merlin" href="http://avalon.apache.org/merlin"/>
+    </menu>
+
+ </body>
+
+</project>