Author: germuska
Date: Fri Nov 19 14:15:06 2004
New Revision: 105888

Added:
   struts/el/trunk/LICENSE.CheckStyle
   struts/el/trunk/LICENSE.txt
   struts/el/trunk/conf/qa/
   struts/el/trunk/conf/qa/CheckStyle.xml
   struts/el/trunk/project.properties
   struts/el/trunk/struts.jsl
Modified:
   struts/el/trunk/project.xml
Log:
changes to update maven build after SVN layout re-org.  Took out inheritance of 
Struts project.xml and copied relevant files here instead

Added: struts/el/trunk/LICENSE.CheckStyle
==============================================================================
--- (empty file)
+++ struts/el/trunk/LICENSE.CheckStyle  Fri Nov 19 14:15:06 2004
@@ -0,0 +1,19 @@
+/\*\s*
+ \*\s*\$Header.*\$
+ \*\s*\$Revision.*\$
+ \*\s*\$Date.*\$
+ \*\s*
+ \*\s*Copyright \d{4}(-\d{4}|,\d{4})* The Apache Software Foundation\.
+ \*\s*
+ \*\s*Licensed under the Apache License, Version 2\.0 \(the "License"\);
+ \*\s*you may not use this file except in compliance with the License\.
+ \*\s*You may obtain a copy of the License at
+ \*\s*
+ \*\s*http://www\.apache\.org/licenses/LICENSE\-2\.0
+ \*\s*
+ \*\s*Unless required by applicable law or agreed to in writing, software
+ \*\s*distributed under the License is distributed on an "AS IS" BASIS,
+ \*\s*WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied\.
+ \*\s*See the License for the specific language governing permissions and
+ \*\s*limitations under the License\.
+ \*/\s*

Added: struts/el/trunk/LICENSE.txt
==============================================================================
--- (empty file)
+++ struts/el/trunk/LICENSE.txt Fri Nov 19 14:15:06 2004
@@ -0,0 +1,174 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.

Added: struts/el/trunk/conf/qa/CheckStyle.xml
==============================================================================
--- (empty file)
+++ struts/el/trunk/conf/qa/CheckStyle.xml      Fri Nov 19 14:15:06 2004
@@ -0,0 +1,130 @@
+<?xml version="1.0"?>
+<!DOCTYPE module PUBLIC
+    "-//Puppy Crawl//DTD Check Configuration 1.1//EN"
+    "http://www.puppycrawl.com/dtds/configuration_1_1.dtd";>
+
+
+<!--
+  
+  These checks still need to be Voted on for Validator, but
+  at least serve to cut down on some of the noise. 
+
+
+  A Checkstyle configuration that checks against the recommendations
+  in Joshua Bloch, Effective Java (highliy recommended read!)
+
+  This file does NOT duplicate the checks for whitespace settings,
+  placement of curly braces, etc.  Only the rules that are explicitly
+  mentioned in the book are enforced.
+
+  Currently the amount of rules that can be automatically checked by
+  Checkstyle is not very large, but adding more checks of this quality
+  is a high priority goal for the development team.
+
+-->
+
+<module name="Checker">
+
+   <module name="TreeWalker">
+
+    <!-- Item 4 - Avoid creating duplicate objects -->
+    <module name="IllegalInstantiation">
+      <property name="classes" value="java.lang.Boolean, java.lang.String"/>
+    </module>
+
+    <!-- Item 6 - Avoid finalizers -->
+    <!-- this will not find violations that contain linebreaks -->
+    <module name="GenericIllegalRegexp">
+      <property name="format"
+                value="((public)|(protected))\s+void\s+finalize\(\s*\)"/>
+    </module>
+
+    <!-- Item 8 - Always override hashCode when you override equals -->
+    <module name="EqualsHashCode"/>
+
+    <!-- Item 12 - Make all fields private -->
+    <module name="VisibilityModifier"/>
+
+    <!-- Item 15 - Design and document for inheritance or else prohibit it -->
+    <!-- the module actually implements a very strict rule, it would be
+         interesting to know whether Joshua meant what checkstyle implements.
+         We feel this implementation is well suited as a warning,
+         i.e. if you get error messages from this check you should be
+         able to name a good reason to implement your code the way you do it,
+         especially if you are designing a library and not an application. -->
+    <module name="DesignForExtension">
+      <property name="severity" value="warning"/>
+    </module>
+
+    <!-- Item 17 - Use interfaces only to define types -->
+    <module name="InterfaceIsType"/>
+
+    <!-- Item 25 - Design method signatures carefully -->
+    <!-- Avoid long parameter lists -->
+    <module name="ParameterNumber">
+      <property name="max" value="3"/>
+    </module>
+
+    <!-- Item 26 - Use overloading judiciously -->
+    <!-- rfe #659735 -->
+
+    <!-- Item 27 - Return zero-length array, not nulls -->
+    <!-- no rfe yet -->
+
+    <!-- Item 28 - Write doc comments for all exposed API elements -->
+    <module name="JavadocType">
+      <property name="scope" value="protected"/>
+    </module>
+    <module name="JavadocMethod"> <!-- also covers Item 44 -->
+      <property name="scope" value="protected"/>
+    </module>
+    <module name="JavadocVariable">
+      <property name="scope" value="protected"/>
+    </module>
+
+    <!-- Item 29 - Minimize the scope of local variables -->
+    <!-- no rfe yet -->
+
+
+    <!-- Item 38 - Adhere to generally accepted naming conventions -->
+    <module name="PackageName">
+      <!-- no uppercase letters, between 2 and 10 characters -->
+      <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]{1,9})*$"/>
+    </module>
+    <module name="TypeName"/>
+    <module name="ConstantName"/>
+    <module name="LocalFinalVariableName"/>
+    <module name="LocalVariableName"/>
+    <module name="MemberName"/>
+    <module name="MethodName"/>
+    <module name="ParameterName"/>
+    <module name="StaticVariableName"/>
+
+    <!-- Item 47 - Don't ignore exceptions -->
+    <module name="EmptyBlock">
+      <property name="tokens" value="LITERAL_CATCH"/>
+      <!-- require a comment, change to stmt to require a statement -->
+      <property name="option" value="text"/>
+    </module>
+
+    <!-- Item 50 - Never invoke wait outside a loop -->
+    <!-- rfe #712798 -->
+
+    <!-- Item 57 - Provide a readResolve method when necessary -->
+    <!-- no rfe yet -->
+    
+    <!-- don't allow tabs -->
+    <module name="TabCharacter"/>
+
+    <!-- enforce License Header using a RegExp file to allow some variations
+         like the years in copyrights or values of SVN variables. -->
+    <module name="RegexpHeader">
+       <property name="headerFile" value="LICENSE.CheckStyle"/>
+    </module>
+
+  </module>
+
+  <!-- enforce package documentation -->
+  <module name="PackageHtml"/>
+  
+</module>

Added: struts/el/trunk/project.properties
==============================================================================
--- (empty file)
+++ struts/el/trunk/project.properties  Fri Nov 19 14:15:06 2004
@@ -0,0 +1,120 @@
+# -------------------------------------------------------------------
+# P R O J E C T  P R O P E R T I E S
+#
+# $Id$
+#
+# Do not change this file. Please use build.properties in this directory
+# to do site or installation specific changes to the project build.
+# -------------------------------------------------------------------
+maven.repo.remote=http://www.ibiblio.org/maven/,http://cvs.apache.org/repository/
+
+#keep ant & maven directories separate.
+maven.build.dir=m-target
+
+maven.checkstyle.properties = conf/qa/CheckStyle.xml
+
+# display the date on the site
+maven.xdoc.date = left
+# Display the version the web site is documenting
+maven.xdoc.version = ${pom.currentVersion}
+# Days to report in the change log
+maven.changelog.range=30
+
+compile.debug = on
+compile.optimize = off
+compile.deprecation = on
+maven.compile.deprecation = on
+
+# -------------------------------------------------------------------
+# D E P L O Y M E N T  P R O P E R T I E S
+# -------------------------------------------------------------------
+#- maven.repo.central and maven.repo.central.directory are used to deploy
+#- jars to be used by other projects.  
+#
+#- For nightly builds, use:
+#-    maven jar:deploy-snapshot 
+#- This will deploy to the 'default' directory, which corresponds to the 
"remote" repository
+#-  http://cvs.apache.org/repository/
+#- For production builds, use:
+#-    maven 
-Dmaven.repo.central.directory=/www/www.apache.org/dist/java-repository/ 
jar:deploy
+#- That directory is periodically mirrored with the "standard" Maven repo at 
ibiblio
+#- Specify your username at the remote repository (cvs.apache.org) 
+#- with the maven property 'maven.username'
+maven.repo.central=cvs.apache.org
+maven.repo.central.directory=/www/cvs.apache.org/repository/ # nightly builds
+#maven.repo.central.directory=/www/www.apache.org/dist/java-repository/ # 
releases
+
+# -------------------------------------------------------------------
+# X D O C   P R O P E R T I E S
+# -------------------------------------------------------------------
+#maven.xdoc.includeProjectDocumentation=no
+#Comment out the following line to use the standard Maven stylesheet
+maven.xdoc.jsl=struts.jsl
+# Links to Struts Development Process doc instead of Maven default doc
+maven.xdoc.developmentProcessUrl=/releases.html
+
+#Powered By logo 
+#maven.xdoc.poweredby.image=struts-power.gif
+#maven.xdoc.poweredby.title=Powered by Struts
+#maven.xdoc.poweredby.url=http://jakarta.apache.org/struts/
+maven.xdoc.poweredby.image=
+maven.xdoc.poweredby.title=
+maven.xdoc.poweredby.url=
+
+maven.ui.banner.background=#ffffff
+maven.ui.banner.foreground=#000000
+maven.ui.banner.border.top=#ffffff
+maven.ui.banner.border.bottom=#ffffff
+
+maven.ui.navcol.background=#ffffff
+maven.ui.navcol.border.top=#ffffff
+maven.ui.navcol.border.right=#ffffff
+maven.ui.navcol.border.bottom=#ffffff
+
+maven.ui.breadcrumbs.background=#ffffff
+maven.ui.breadcrumbs.foreground=#666666
+maven.ui.breadcrumbs.border.top=#ffffff
+maven.ui.breadcrumbs.border.bottom=#000000
+
+
+# -------------------------------------------------------------------
+# C A C T U S   P L U G - I N   P R O P E R T I E S
+# -------------------------------------------------------------------
+cactus.src.dir = src/test
+cactus.src.includes = 
org/apache/struts/action/TestActionServlet.java,org/apache/struts/taglib/**/Test*.java
+
+## Cactus Plug-in: Tomcat 4 specific 
+# cactus.tomcat4x.config (optional)
+# Location of the Tomcat 4.x configuration file if you don't want to use the 
cactus-provided one.
+# cactus.tomcat4x.conf.dir (optional)
+# Location of custom Tomcat 4.x configuration file that will be copied, 
overwriting the Cactus-provided configuration files.
+cactus.tomcat4x.conf.dir = conf/test/tomcat41
+# cactus.tomcat4x.conf.includes (optional)
+# Configuration files located at${cactus.tomcat4x.conf.dir that should be 
included in the Tomcat 4.x container set up by Cactus.
+# cactus.tomcat4x.conf.excludes (optional)
+# Configuration files located at${cactus.tomcat4x.conf.dir that should not be 
included in the Tomcat 4.x container set up by Cactus.
+# cactus.tomcat4x.tmpdir (optional)
+# Directory to which the container will be installed for the tests. By default 
the system temporary directory is used.
+
+# -------------------------------------------------------------------
+# A P A C H E  R E P O S I T O R Y  P R O P E R T I E S
+# -------------------------------------------------------------------
+#This is the host that Maven will attempt
+#to deploy the distribution to during a dist:deploy.   
+maven.repo.central=minotaur.apache.org 
+
+#This is the directory that Maven will
+#copy the distribution to during a dist:deploy.        
+
+maven.repo.central.directory=/www/www.apache.org/dist/java-repository
+
+# Because the repository user name is different for each person, it should not
+# be defined in the shared "project.properties"  
+# Define this on the command line, or in your own build.properties file:
+# in order to deploy to the repository:
+#ssh configuration settings just require your apache id to log on with
+#maven.username=<apache-user-name> (DON'T UNCOMMENT THIS LINE IN SHARED 
project.propert
+
+maven.changelog.factory = org.apache.maven.svnlib.SvnChangeLogFactory
+
+

Modified: struts/el/trunk/project.xml
==============================================================================
--- struts/el/trunk/project.xml (original)
+++ struts/el/trunk/project.xml Fri Nov 19 14:15:06 2004
@@ -1,7 +1,6 @@
 <?xml version="1.0"?>
 <project>
   <pomVersion>3</pomVersion>
-  <extend>../../project.xml</extend>
   <name>struts-el</name>
   <id>struts-el</id>
   <groupId>struts</groupId>
@@ -57,7 +56,7 @@
     <dependency>
       <groupId>struts</groupId>
       <artifactId>struts</artifactId>
-      <version>1.2.5</version>
+      <version>1.2.4</version>
       <url>http://jakarta.apache.org/struts/</url>
     </dependency>
     <dependency>
@@ -66,6 +65,24 @@
       <version>1.5.4</version>
       <url>http://httpunit.org/</url>
     </dependency>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+      <version>1.0.4</version>
+      <url>http://jakarta.apache.org/commons/logging.html</url>
+    </dependency>
+    <dependency>
+      <groupId>cactus</groupId>
+      <artifactId>cactus</artifactId>
+      <version>12-1.4.1</version>
+      <url>http://jakarta.apache.org/cactus</url>
+    </dependency>
+    <dependency>
+      <groupId>cactus</groupId>
+      <artifactId>cactus-ant</artifactId>
+      <version>1.4.1</version>
+      <url>http://jakarta.apache.org/cactus</url>
+    </dependency>
   </dependencies>
   <build>
     <nagEmailAddress>[EMAIL PROTECTED]</nagEmailAddress>
@@ -74,15 +91,23 @@
     <integrationUnitTestSourceDirectory />
     <aspectSourceDirectory />
     <unitTest>
-      <includes>
-        <include>**/Test*.java</include>
-      </includes>
+      <excludes>
+        <!-- all tests in src/test are for Cactus, not plain JUnit -->
+        <exclude>**/*.java</exclude>
+      </excludes>
     </unitTest>
     <!-- J A R  R E S O U R C E S -->
     <!-- Resources that are packaged up inside the JAR file -->
     <resources />
     <!-- Integration unit test cases -->
-    <integrationUnitTest />
+    <integrationUnitTest>
+      <includes>
+        <include>**/Test*.java</include>
+      </includes>
+      <excludes>
+        <exclude>org/apache/strutsel/taglib/utils/*.java</exclude>
+      </excludes>
+    </integrationUnitTest>
     <jars></jars>
   </build>
   <reports>

Added: struts/el/trunk/struts.jsl
==============================================================================
--- (empty file)
+++ struts/el/trunk/struts.jsl  Fri Nov 19 14:15:06 2004
@@ -0,0 +1,507 @@
+<?xml version="1.0"?>
+<!-- $Id: struts.jsl 51220 2003-12-11 20:08:07Z sraeburn $ -->
+<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/struts.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%">
+            <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>
+
+              <!-- project logo and link -->
+              <td>
+                <div align="right" id="login">
+                  <j:set var="logo" value="${pom.logo}"/>
+                  <j:if test="${logo != null and logo != ''}">
+                    <!-- set image to relative or complete -->
+                    <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>
+
+                <jsl:applyTemplates select="$projectNav/body/menu"/>
+                
+                <!-- Standard Maven Navigation -->
+                <j:set var="fileName">${file}</j:set>
+
+                <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)"/>
+    <x:set var="_childCount" select="count(./item)"/>
+    <j:set var="_isCollapsed" value="${navbean.isCollapsed(item.get(0))}"/>
+    <j:set var="_state" value="none"/>
+    
+    <j:if test="${_childCount.intValue() gt 0}">
+        <j:if test="${!_isCollapsed}">
+          <j:set var="_state" value="expanded"/>
+        </j:if>
+        <j:if test="${_isCollapsed}">
+          <j:set var="_state" value="collapsed"/>
+        </j:if>
+    </j:if>
+           
+    
+    <div>
+      <small>
+        <j:if test="${navbean.isSelected(item.get(0))}">
+            <b><doc:itemLink name="${_name}" link="${_link}" img="${_img}" 
state="${_state}"/></b>
+        </j:if>
+        <j:if test="${!navbean.isSelected(item.get(0))}">
+            <doc:itemLink name="${_name}" link="${_link}" img="${_img}" 
state="${_state}"/>
+        </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="@*"/>
+
+   <!-- CDATA and text nodes pass-thru -->
+   <jsl:template match="text()"><x:expr select="."/></jsl:template>
+
+</jsl:stylesheet>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to