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 --> + </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}"> + © ${mavenCurrentYear}, ${pom.organization.name} + </j:if> + <j:if test="${pom.inceptionYear != mavenCurrentYear}"> + © ${pom.inceptionYear}-${mavenCurrentYear}, ${pom.organization.name} + </j:if> + </j:if> + <j:if test="${empty(pom.inceptionYear)}"> + © ${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"/>&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]