forrest-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From brond...@apache.org
Subject svn commit: rev 9532 - in xml/forrest/trunk/scratchpad/forrestbot2/webapp: . lib src/conf src/java/org/apache/forrest/forrestbot/webapp src/java/org/apache/forrest/forrestbot/webapp/action src/java/org/apache/forrest/forrestbot/webapp/dto src/java/org/apache/forrest/forrestbot/webapp/form src/java/org/apache/forrest/forrestbot/webapp/util src/webapp src/webapp/WEB-INF src/webapp/WEB-INF/tld src/webapp/common
Date Tue, 16 Mar 2004 15:58:14 GMT
Author: brondsem
Date: Tue Mar 16 07:58:12 2004
New Revision: 9532

Added:
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/lib/
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/lib/README.txt
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/lib/oscore-2.2.2.jar   (contents, props changed)
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/lib/osuser-1.0-dev.jar   (contents, props changed)
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/lib/propertyset-1.2.jar   (contents, props changed)
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/project.properties
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/groups.xml
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/osuser.xml
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/projects.xml
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/users.xml
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ExecuteAction.java
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/LogoutAction.java
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/util/Executor.java
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/simple.jsp
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/execute.jsp
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/logout.jsp
Modified:
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/.classpath
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/.project
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/README.txt
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/maven.xml
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/project.xml
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/log4j.properties
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/settings.properties
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/Config.java
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/Constants.java
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/Resources.properties
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/BaseAction.java
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ViewLogBodyAction.java
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ViewLogFrameAction.java
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ViewLogHeaderAction.java
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ViewSummaryAction.java
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/dto/ProjectDTO.java
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/form/BaseDynaActionForm.java
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/form/LoginForm.java
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/util/Project.java
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/struts-config.xml
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/struts-tiles.xml
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/tld/struts-bean-el.tld
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/tld/struts-html-el.tld
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/tld/struts-logic-el.tld
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/web.xml
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/commandForm.jsp
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/footer.jsp
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/header.jsp
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/layout.jsp
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/viewlog_frame.jsp
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/index.jsp
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/loginForm.jsp
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/summary.jsp
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/viewlog_body.jsp
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/viewlog_header.jsp
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/welcome.html
   xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/welcome.local.html
Log:
long overdue update; uses osuser for user authentication, associate groups of users & projects, session-length authentication, build & deploy buttons work, probably more that I forgot about

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/.classpath
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/.classpath	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/.classpath	Tue Mar 16 07:58:12 2004
@@ -1,17 +1,20 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-    <classpathentry kind="src" path="src/java"/>
-    <classpathentry kind="var" path="MAVEN_REPO/servletapi/jars/servletapi-2.3.jar"/>
-    <classpathentry kind="var" path="MAVEN_REPO/xerces/jars/xerces-2.4.0.jar"/>
-    <classpathentry kind="var" path="MAVEN_REPO/jstl/jars/jstl-1.0.2.jar"/>
-    <classpathentry kind="var" path="MAVEN_REPO/log4j/jars/log4j-1.2.8.jar"/>
-    <classpathentry kind="var" path="MAVEN_REPO/struts/jars/struts-1.1.jar"/>
-    <classpathentry kind="var" path="MAVEN_REPO/taglibs/jars/standard-1.0.4.jar"/>
-    <classpathentry kind="var" path="MAVEN_REPO/commons-logging/jars/commons-logging-1.0.3.jar"/>
-    <classpathentry kind="var" path="MAVEN_REPO/commons-beanutils/jars/commons-beanutils-1.6.1.jar"/>
-    <classpathentry kind="var" path="MAVEN_REPO/commons-digester/jars/commons-digester-1.5.jar"/>
-    <classpathentry kind="var" path="MAVEN_REPO/commons-collections/jars/commons-collections-2.1.jar"/>
-    <classpathentry kind="var" path="MAVEN_REPO/commons-validator/jars/commons-validator-1.0.2.jar"/>
-    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.4"/>
-    <classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+    <classpathentry kind="src" path="src/java"/>
+    <classpathentry kind="var" path="MAVEN_REPO/servletapi/jars/servletapi-2.3.jar"/>
+    <classpathentry kind="var" path="MAVEN_REPO/xerces/jars/xerces-2.4.0.jar"/>
+    <classpathentry kind="var" path="MAVEN_REPO/jstl/jars/jstl-1.0.2.jar"/>
+    <classpathentry kind="var" path="MAVEN_REPO/log4j/jars/log4j-1.2.8.jar"/>
+    <classpathentry kind="var" path="MAVEN_REPO/struts/jars/struts-1.1.jar"/>
+    <classpathentry kind="var" path="MAVEN_REPO/taglibs/jars/standard-1.0.4.jar"/>
+    <classpathentry kind="var" path="MAVEN_REPO/commons-logging/jars/commons-logging-1.0.3.jar"/>
+    <classpathentry kind="var" path="MAVEN_REPO/commons-beanutils/jars/commons-beanutils-1.6.1.jar"/>
+    <classpathentry kind="var" path="MAVEN_REPO/commons-digester/jars/commons-digester-1.5.jar"/>
+    <classpathentry kind="var" path="MAVEN_REPO/commons-collections/jars/commons-collections-2.1.jar"/>
+    <classpathentry kind="var" path="MAVEN_REPO/commons-validator/jars/commons-validator-1.0.2.jar"/>
+    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.4"/>
+    <classpathentry kind="lib" path="lib/oscore-2.2.2.jar"/>
+    <classpathentry kind="lib" path="lib/propertyset-1.2.jar"/>
+    <classpathentry kind="lib" path="lib/osuser-1.0-dev.jar" sourcepath="/osuser/src/java"/>
+    <classpathentry kind="output" path="target/classes"/>
+</classpath>

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/.project
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/.project	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/.project	Tue Mar 16 07:58:12 2004
@@ -1,19 +1,19 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<projectDescription>
-  <name>forrestbot-webapp</name>
-  <comment>
-  </comment>
-  <projects>
-  </projects>
-  <buildSpec>
-    <buildCommand>
-      <name>org.eclipse.jdt.core.javabuilder</name>
-      <arguments>
-      </arguments>
-    </buildCommand>
-  </buildSpec>
-  <natures>
-    <nature>org.eclipse.jdt.core.javanature</nature>
-  </natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>
+
+<projectDescription>
+  <name>forrestbot-webapp</name>
+  <comment>
+  </comment>
+  <projects>
+  </projects>
+  <buildSpec>
+    <buildCommand>
+      <name>org.eclipse.jdt.core.javabuilder</name>
+      <arguments>
+      </arguments>
+    </buildCommand>
+  </buildSpec>
+  <natures>
+    <nature>org.eclipse.jdt.core.javanature</nature>
+  </natures>
+</projectDescription>
\ No newline at end of file

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/README.txt
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/README.txt	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/README.txt	Tue Mar 16 07:58:12 2004
@@ -1,22 +1,33 @@
-                            Forrestbot web interface
-
-                            ------------------------
-
-This webapp implements a website staging application for sites built with
-Apache Forrest. The webapp hosts HTML for a number of managed websites.  The
-user can regenerate these sites at will.  Once the user is satisfied with the
-site, they may 'deploy' the site, making it live.
-
-Build
------
-To build the webapp from source, you need maven installed.  From a command prompt,
-enter this directory and execute "maven war".
-The 'eclipse' plugin for maven is used to generate eclipse workspace files.  If you
-use eclipse, you may want to familiarize yourself with that plugin.
-
-
-Installation
-------------
-
-FAQ
----------------
+                            Forrestbot Web Interface
+
+                            ------------------------
+
+This webapp implements a website staging application for sites built with
+Apache Forrest. The webapp hosts HTML for a number of managed websites.  The
+user can regenerate these sites at will.  Once the user is satisfied with the
+site, they may 'deploy' the site, making it live.
+
+Build
+-----
+To build the webapp from source, you need maven installed.  From a command prompt,
+enter this directory and execute "maven war".
+
+
+Installation
+------------
+
+
+
+FAQ
+---------------
+1. The build and/or deploy commands don't seem to work
+
+Currently forrestbot only logs the forrest part of it's execution, not the whole
+thing.  And the web interface starts a forrestbot process and doesn't watch it's 
+progress directly.  So look at the debugging output for the command executed and
+the working directory used.  Log into the server using the login of the Tomcat server
+and cd to the working directory and then execute the command.  This will fairly
+accurately simulate what the web interface does.
+
+Also, set debug-exec=true in settings.properties and make sure log4j.properties
+logs DEBUG.  This will log all the thread output.
\ No newline at end of file

Added: xml/forrest/trunk/scratchpad/forrestbot2/webapp/lib/README.txt
==============================================================================
--- (empty file)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/lib/README.txt	Tue Mar 16 07:58:12 2004
@@ -0,0 +1,6 @@
+This directory is *ONLY* for dependencies that are not in a maven repository.
+
+If you need to put a .jar file here, then you need to specify something like this in project.properties
+
+maven.jar.override = on
+maven.jar.osuser = ${basedir}/lib/osuser-1.0-dev.jar

Added: xml/forrest/trunk/scratchpad/forrestbot2/webapp/lib/oscore-2.2.2.jar
==============================================================================
Binary file. No diff available.

Added: xml/forrest/trunk/scratchpad/forrestbot2/webapp/lib/osuser-1.0-dev.jar
==============================================================================
Binary file. No diff available.

Added: xml/forrest/trunk/scratchpad/forrestbot2/webapp/lib/propertyset-1.2.jar
==============================================================================
Binary file. No diff available.

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/maven.xml
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/maven.xml	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/maven.xml	Tue Mar 16 07:58:12 2004
@@ -1,22 +1,7 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project
-  default="war"
-  xmlns:j="jelly:core"
-  xmlns:u="jelly:util">
-
-</project>
+<?xml version="1.0"?>
+<project
+  default="war"
+  xmlns:j="jelly:core"
+  xmlns:u="jelly:util">
+
+</project>
\ No newline at end of file

Added: xml/forrest/trunk/scratchpad/forrestbot2/webapp/project.properties
==============================================================================
--- (empty file)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/project.properties	Tue Mar 16 07:58:12 2004
@@ -0,0 +1,4 @@
+maven.jar.override = on
+maven.jar.osuser = ${basedir}/lib/osuser-1.0-dev.jar
+maven.jar.oscore = ${basedir}/lib/oscore-2.2.2.jar
+maven.jar.propertyset = ${basedir}/lib/propertyset-1.2.jar
\ No newline at end of file

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/project.xml
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/project.xml	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/project.xml	Tue Mar 16 07:58:12 2004
@@ -1,138 +1,147 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-
-  <!-- the version of maven's project object model -->
-  <pomVersion>3</pomVersion>
-  
-  <!-- a unique name for this project -->
-  <id>forrestbot-webapp</id>
-  
-  <!-- a short but descriptive name for the project -->
-  <name>Forrestbot Webapp</name>
-  
-  <!-- The version of the project under development, e.g.
-       1.1, 1.2, 2.0-SNAPSHOT -->
-  <currentVersion>2.0</currentVersion>
-  
-  <!-- details about the organization that 'owns' the project -->
-  <organization>
-    <name>Apache Software Foundation</name>
-    <url>http://www.apache.org/</url>
-  </organization>
-  
-  <!-- the year the project started -->
-  <inceptionYear>2004</inceptionYear>
-  <package>org.apache.forrest.forrestbot.webapp</package>
-
-  <!-- jar files the project is dependent on -->
-  <dependencies>
-    <!-- for build only -->
-    <dependency>
-      <id>servletapi</id>
-      <version>2.3</version>
-    </dependency>
-    
-    <!-- include in war for runtime -->
-    <dependency>
-      <id>xerces</id>
-      <version>2.4.0</version>
-      <properties><war.bundle>true</war.bundle></properties>
-    </dependency>
-    <dependency>
-      <id>jstl</id>
-      <version>1.0.2</version>
-      <properties><war.bundle>true</war.bundle></properties>
-    </dependency>
-    <dependency>
-      <id>log4j</id>
-      <version>1.2.8</version>
-      <properties><war.bundle>true</war.bundle></properties>
-    </dependency>
-    <dependency>
-      <id>struts</id>
-      <version>1.1</version>
-      <properties><war.bundle>true</war.bundle></properties>
-    </dependency>
-    <dependency>
-      <id>struts</id>
-      <artifactId>struts-el</artifactId>
-      <version>1.1</version>
-      <properties><war.bundle>true</war.bundle></properties>
-    </dependency>
-    <dependency>
-      <groupId>taglibs</groupId>
-      <artifactId>standard</artifactId>
-      <version>1.0.4</version>
-      <properties><war.bundle>true</war.bundle></properties>
-    </dependency>
-    <dependency>
-      <id>commons-logging</id>
-      <version>1.0.3</version>
-      <properties><war.bundle>true</war.bundle></properties>
-    </dependency>
-    <dependency>
-      <id>commons-beanutils</id>
-      <version>1.6.1</version>
-      <properties><war.bundle>true</war.bundle></properties>
-    </dependency>
-    <dependency>
-      <id>commons-digester</id>
-      <version>1.5</version>
-      <properties><war.bundle>true</war.bundle></properties>
-    </dependency>
-    <dependency>
-      <id>commons-collections</id>
-      <version>2.1</version>
-      <properties><war.bundle>true</war.bundle></properties>
-    </dependency>
-    <dependency>
-      <id>commons-validator</id>
-      <version>1.0.2</version>
-      <properties><war.bundle>true</war.bundle></properties>
-    </dependency>
-
-    <!-- 2.3+ servlet container would have the struts tlds already 
-    ...
-    -->
-    
-  </dependencies>
-  
-  <!-- build information for the project -->
-  <build>
-    <sourceDirectory>src</sourceDirectory>
-
-    <resources>
-      <resource>
-        <directory>src/conf</directory>
-        <includes>
-          <include>*.properties</include>
-        </includes>
-      </resource>
-      <resource>
-        <directory>src/java/org/apache/forrest/forrestbot/webapp</directory>
-        <targetPath>org/apache/forrest/forrestbot/webapp</targetPath>
-        <includes>
-          <include>*.properties</include>
-        </includes>
-      </resource>
-    </resources>
-  </build>
-
-
-</project>
-
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project>
+
+  <!-- the version of maven's project object model -->
+  <pomVersion>3</pomVersion>
+  
+  <!-- a unique name for this project -->
+  <id>forrestbot-webapp</id>
+  
+  <!-- a short but descriptive name for the project -->
+  <name>Forrestbot Webapp</name>
+  
+  <!-- The version of the project under development, e.g.
+       1.1, 1.2, 2.0-SNAPSHOT -->
+  <currentVersion>2.0</currentVersion>
+  
+  <!-- details about the organization that 'owns' the project -->
+  <organization>
+    <name>Apache Software Foundation</name>
+    <url>http://www.apache.org/</url>
+  </organization>
+  
+  <!-- the year the project started -->
+  <inceptionYear>2004</inceptionYear>
+  <package>org.apache.forrest.forrestbot.webapp</package>
+
+  <!-- jar files the project is dependent on -->
+  <dependencies>
+    <!-- for build only -->
+    <dependency>
+      <id>servletapi</id>
+      <version>2.3</version>
+    </dependency>
+    
+    <!-- include in war for runtime -->
+    <dependency>
+      <id>xerces</id>
+      <version>2.4.0</version>
+      <properties><war.bundle>true</war.bundle></properties>
+    </dependency>
+    <dependency>
+      <id>jstl</id>
+      <version>1.0.2</version>
+      <properties><war.bundle>true</war.bundle></properties>
+    </dependency>
+    <dependency>
+      <id>log4j</id>
+      <version>1.2.8</version>
+      <properties><war.bundle>true</war.bundle></properties>
+    </dependency>
+    <dependency>
+      <id>struts</id>
+      <version>1.1</version>
+      <properties><war.bundle>true</war.bundle></properties>
+    </dependency>
+    <dependency>
+      <id>struts</id>
+      <artifactId>struts-el</artifactId>
+      <version>1.1</version>
+      <properties><war.bundle>true</war.bundle></properties>
+    </dependency>
+    <dependency>
+      <groupId>taglibs</groupId>
+      <artifactId>standard</artifactId>
+      <version>1.0.4</version>
+      <properties><war.bundle>true</war.bundle></properties>
+    </dependency>
+    <dependency>
+      <id>commons-logging</id>
+      <version>1.0.3</version>
+      <properties><war.bundle>true</war.bundle></properties>
+    </dependency>
+    <dependency>
+      <id>commons-beanutils</id>
+      <version>1.6.1</version>
+      <properties><war.bundle>true</war.bundle></properties>
+    </dependency>
+    <dependency>
+      <id>commons-digester</id>
+      <version>1.5</version>
+      <properties><war.bundle>true</war.bundle></properties>
+    </dependency>
+    <dependency>
+      <id>commons-collections</id>
+      <version>2.1</version>
+      <properties><war.bundle>true</war.bundle></properties>
+    </dependency>
+    <dependency>
+      <id>commons-validator</id>
+      <version>1.0.2</version>
+      <properties><war.bundle>true</war.bundle></properties>
+    </dependency>
+    
+    <!-- osuser and dependencies -->
+    <dependency>
+      <id>osuser</id>
+      <version>1.0-dev</version>
+      <properties><war.bundle>true</war.bundle></properties>
+    </dependency>
+    <dependency>
+      <id>oscore</id>
+      <version>2.2.2</version>
+      <properties><war.bundle>true</war.bundle></properties>
+    </dependency>
+    <dependency>
+      <id>propertyset</id>
+      <version>1.2</version>
+      <properties><war.bundle>true</war.bundle></properties>
+    </dependency>
+    <dependency>
+      <id>dom4j</id>
+      <version>1.4</version>
+      <properties><war.bundle>true</war.bundle></properties>
+    </dependency>
+
+    <!-- 2.3+ servlet container would have the struts tlds already 
+    ...
+    -->
+    
+  </dependencies>
+  
+  <!-- build information for the project -->
+  <build>
+    <sourceDirectory>src</sourceDirectory>
+
+    <resources>
+      <resource>
+        <directory>src/conf</directory>
+        <includes>
+          <include>*.properties</include>
+          <include>*.xml</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>src/java/org/apache/forrest/forrestbot/webapp</directory>
+        <targetPath>org/apache/forrest/forrestbot/webapp</targetPath>
+        <includes>
+          <include>*.properties</include>
+          <include>*.xml</include>
+        </includes>
+      </resource>
+    </resources>
+  </build>
+
+
+</project>
+

Added: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/groups.xml
==============================================================================
--- (empty file)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/groups.xml	Tue Mar 16 07:58:12 2004
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+
+<groups>
+    <group id="All Projects">
+        <!-- projects -->
+        <user id="xml-forrest"/>
+        <user id="xml-forrest-krysalis"/>
+        <user id="xml-forrest-template"/>
+        <user id="xml-xindice"/>
+        <user id="incubator-site"/>
+        <user id="xml-site"/>
+        <user id="xml-fop"/>
+        <user id="avalon-site"/>
+        <user id="avalon-phoenix"/>
+        <user id="krysalis-centipede"/>
+        <user id="ws-site"/>
+        <!-- users -->
+        <user id="forrest-dev"/>
+    </group>
+</groups>
\ No newline at end of file

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/log4j.properties
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/log4j.properties	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/log4j.properties	Tue Mar 16 07:58:12 2004
@@ -1,25 +1,12 @@
-# Copyright 2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-log4j.rootLogger=DEBUG, socket, stdout
-
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
-
-log4j.appender.socket=org.apache.log4j.net.SocketAppender
-log4j.appender.socket.RemoteHost=localhost
-log4j.appender.socket.Port=4445
-
-log4j.appender.file=org.apache.log4j.FileAppender
-log4j.appender.file.File=forrestbot-webapp.log
+#log4j.rootLogger=DEBUG, socket, stdout
+log4j.rootLogger=WARN, stdout
+
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
+
+log4j.appender.socket=org.apache.log4j.net.SocketAppender
+log4j.appender.socket.RemoteHost=localhost
+log4j.appender.socket.Port=4445
+
+log4j.appender.file=org.apache.log4j.FileAppender
+log4j.appender.file.File=forrestbot-webapp.log

Added: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/osuser.xml
==============================================================================
--- (empty file)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/osuser.xml	Tue Mar 16 07:58:12 2004
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<opensymphony-user>
+    <!-- users -->
+    <provider class="com.opensymphony.user.provider.file.XMLAccessProvider">
+        <property name="storeFile">users.xml</property>
+        <property name="storeFileType">resource</property>
+    </provider>
+    
+    <!-- projects -->
+    <provider class="com.opensymphony.user.provider.file.XMLCredentialsProvider">
+        <property name="storeFile">projects.xml</property>
+        <property name="storeFileType">resource</property>
+    </provider>
+    
+    <!-- groups -->
+    <provider class="com.opensymphony.user.provider.file.XMLAccessProvider">
+        <property name="storeFile">groups.xml</property>
+        <property name="storeFileType">resource</property>
+    </provider>
+    
+    <provider class="com.opensymphony.user.provider.memory.MemoryProfileProvider" />
+</opensymphony-user>
\ No newline at end of file

Added: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/projects.xml
==============================================================================
--- (empty file)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/projects.xml	Tue Mar 16 07:58:12 2004
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+
+<users>
+    <user id="xml-forrest"/>
+    <user id="xml-forrest-krysalis"/>
+    <user id="xml-forrest-template"/>
+    <user id="xml-xindice"/>
+    <user id="incubator-site"/>
+    <user id="xml-site"/>
+    <user id="xml-fop"/>
+    <user id="avalon-site"/>
+    <user id="avalon-phoenix"/>
+    <user id="krysalis-centipede"/>
+    <user id="ws-site"/>
+</users>
\ No newline at end of file

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/settings.properties
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/settings.properties	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/settings.properties	Tue Mar 16 07:58:12 2004
@@ -1,51 +1,41 @@
-# Copyright 2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# settings.properties is used to configure the webapp to look
-# in certain locations for files and directories
-#
-# all of the following must be absolute
-#
-# forrest executable
-#forrest-exec=/path/to/xml-forrest/bin/forrest
-#forrest-exec=d:/path/to/xml-forrest/bin/forrest.bat
-#
-# this file is created by the webapp and used by the 'overseer' script
-#commands-file=/path/to/somewhere/commands
-# directory that contains the forrestbot definition files for each site
-#config-dir=/path/to/somewhere/conf
-#
-# filesystem paths
-#build-dir=/path/to/somewhere/build
-#logs-dir=/path/to/somewhere/logs
-#
-# URLs (for HTML links)
-#build-url=build
-#logs-url=logs
-
-forrest-exec=d:/sandbox/xml-forrest/build/dist/shbat/bin/forrest.bat
-
-#commands-file=/home/dpb2/forrest/xml-forrest/scratchpad/forrestbot2/commands
-#config-dir=/home/dpb2/forrest/xml-forrest/scratchpad/forrestbot2
-config-dir=d:/sandbox/javadev/forrestbot2
-
-build-dir=d:/sandbox/javadev/forrest/build/site/projects-build
-logs-dir=d:/sandbox/javadev/forrest/build/site/projects-logs
-#build-url=/projects-build
-#logs-url=/projects-logs
-build-url=file:///d:/sandbox/javadev/forrest/build/site/projects-build
-logs-url=file:///d:/sandbox/javadev/forrest/build/site/projects-logs
-
-# seconds
-refreshrate=60
+# settings.properties is used to configure the webapp to look
+# in certain locations for files and directories
+#
+# all of the following should be absolute
+#
+# forrest executable
+#forrest-exec=/path/to/xml-forrest/bin/forrest
+#forrest-exec=d:/path/to/xml-forrest/bin/forrest.bat
+#
+# directory that contains the forrestbot definition files for each site
+#config-dir=/path/to/somewhere/conf
+#
+# filesystem paths
+#build-dir=/path/to/somewhere/build
+#logs-dir=/path/to/somewhere/logs
+#
+# URLs (for HTML links)
+#build-url=http://somedomain/path/to/builds
+#
+# this will debug ALL output from the 'build' and 'deploy' processes that are started
+#debug-exec=false
+# 
+# seconds to wait before refreshing log viewing page
+#refreshrate=60
+#
+# customize what targets to run (e.g. "build notify.special")
+#targets.build=build
+#targets.deploy=deploy
+
+forrest-exec=c:/path/to/forrest/bin/forrest.bat
+
+config-dir=c:/path/to/forrestbot/projects
+logs-dir=c:/some/path/to/build/logs
+build-dir=c:/some/path/to/build/sites
+build-url=http://127.0.0.1/myprojects
+
+debug-exec=false
+refreshrate=60
+
+targets.build=build
+targets.deploy=deploy
\ No newline at end of file

Added: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/users.xml
==============================================================================
--- (empty file)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/conf/users.xml	Tue Mar 16 07:58:12 2004
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+
+<users>
+    <user id="forrest-dev" password="forrest-dev"/>
+</users>
\ No newline at end of file

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/Config.java
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/Config.java	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/Config.java	Tue Mar 16 07:58:12 2004
@@ -1,100 +1,88 @@
-/*
-* Copyright 2003-2004 The Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.forrest.forrestbot.webapp;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Properties;
-
-import org.apache.log4j.Logger;
-import org.apache.log4j.PropertyConfigurator;
-
-/**
- * A singleton that takes care of any configuration
- */
-public class Config {
-	private static Logger log = Logger.getLogger(Config.class);
-	private static Properties p = new Properties();
-
-	// singleton holder
-	private static final class SingletonHolder {
-		static final Config a = new Config();
-	}
-	// get the singleton instance
-	public static Config getInstance() {
-		return SingletonHolder.a;
-	}
-
-	// private constructor to prevent construction
-	private Config() {
-			configureLog4j();
-			configureProperties();
-			validateProperties();
-	}
-
-	private static void configureLog4j() {
-		Properties log4j = new Properties();
-		try {
-			log4j.load(Config.class.getClassLoader().getResourceAsStream("log4j.properties"));
-		} catch (IOException e1) {
-			log.warn("can't load log4j.properties", e1);
-		}
-		PropertyConfigurator.configure(log4j);
-	}
-
-	private static void configureProperties() {
-		log.info("loading settings.properties");
-		try {
-			p.load(
-			Config.class.getClassLoader().getResourceAsStream("settings.properties"));
-		} catch (IOException e) {
-			log.error("can't load settings.properties", e);
-		}
-	}
-
-	public static void validateProperties() {
-		String [] requiredProperties = { "forrest-exec", "config-dir", "build-dir", "logs-dir", "build-url", "logs-url", "refreshrate" };
-		String [] filesToCheck = { "forrest-exec" };
-		String [] directoriesToCheck = { "config-dir", "build-dir", "logs-dir" };
-		
-		for (int i = 0; i < requiredProperties.length; i++) {
-			if (getProperty(requiredProperties[i]) == null) {
-				log.error("Property " + requiredProperties[i] + " is required.");
-			}
-		}
-		for (int i = 0; i < filesToCheck.length; i++) {
-			File f = new File(getProperty(filesToCheck[i]));
-			if (!f.isFile()) {
-				log.error("Property " + filesToCheck[i] + " must reference a file.  Current value: " + f.toString());
-			}
-		}
-		for (int i = 0; i < directoriesToCheck.length; i++) {
-			File f = new File(getProperty(directoriesToCheck[i]));
-			if (!f.isDirectory()) {
-				log.error("Property " + directoriesToCheck[i] + " must reference a directory.  Current value: " + f.toString());
-			}
-		}
-	}
-
-	public static String getProperty(String arg0, String arg1) {
-		return p.getProperty(arg0, arg1);
-	}
-
-	public static String getProperty(String arg0) {
-		return p.getProperty(arg0);
-	}
-
-}
+/*
+ * Created on Oct 21, 2003
+ */
+package org.apache.forrest.forrestbot.webapp;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Properties;
+
+import org.apache.log4j.Logger;
+import org.apache.log4j.PropertyConfigurator;
+
+/**
+ * A singleton that takes care of any configuration
+ */
+public class Config {
+	private static Logger log = Logger.getLogger(Config.class);
+	private static Properties p = new Properties();
+
+	// singleton holder
+	private static final class SingletonHolder {
+		static final Config a = new Config();
+	}
+	// get the singleton instance
+	public static Config getInstance() {
+		return SingletonHolder.a;
+	}
+
+	// private constructor to prevent construction
+	private Config() {
+			configureLog4j();
+			configureProperties();
+			validateProperties();
+	}
+
+	private static void configureLog4j() {
+		Properties log4j = new Properties();
+		try {
+			log4j.load(Config.class.getClassLoader().getResourceAsStream("log4j.properties"));
+		} catch (IOException e1) {
+			log.warn("can't load log4j.properties", e1);
+		}
+		PropertyConfigurator.configure(log4j);
+	}
+
+	private static void configureProperties() {
+		log.info("loading settings.properties");
+		try {
+			p.load(
+			Config.class.getClassLoader().getResourceAsStream("settings.properties"));
+		} catch (IOException e) {
+			log.error("can't load settings.properties", e);
+		}
+	}
+
+	public static void validateProperties() {
+		String [] requiredProperties = { "forrest-exec", "config-dir", "build-dir", "logs-dir", "build-url", "refreshrate", "debug-exec" };
+		String [] filesToCheck = { "forrest-exec" };
+		String [] directoriesToCheck = { "config-dir", "build-dir", "logs-dir" };
+		
+		for (int i = 0; i < requiredProperties.length; i++) {
+			if (getProperty(requiredProperties[i]) == null) {
+				log.error("Property " + requiredProperties[i] + " is required.");
+			}
+		}
+		for (int i = 0; i < filesToCheck.length; i++) {
+			File f = new File(getProperty(filesToCheck[i]));
+			if (!f.isFile()) {
+				log.error("Property " + filesToCheck[i] + " must reference a file.  Current value: " + f.toString());
+			}
+		}
+		for (int i = 0; i < directoriesToCheck.length; i++) {
+			File f = new File(getProperty(directoriesToCheck[i]));
+			if (!f.isDirectory()) {
+				log.error("Property " + directoriesToCheck[i] + " must reference a directory.  Current value: " + f.toString());
+			}
+		}
+	}
+
+	public static String getProperty(String arg0, String arg1) {
+		return p.getProperty(arg0, arg1);
+	}
+
+	public static String getProperty(String arg0) {
+		return p.getProperty(arg0);
+	}
+
+}

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/Constants.java
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/Constants.java	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/Constants.java	Tue Mar 16 07:58:12 2004
@@ -1,76 +1,64 @@
-/*
-* Copyright 2003-2004 The Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.forrest.forrestbot.webapp;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-
-public class Constants {
-
-	private static Logger log = Logger.getLogger(Constants.class);
-	
-    // FORWARD NAMES
-    public static final String FORWARD_NAME_SUCCESS = "Success";
-    public static final String FORWARD_NAME_FAILURE = "Failure";
-	public static final String FORWARD_NAME_AUTHORIZED = "Authorized";
-
-	// string tokens
-	public static final String BUILD_SUCCESS_STRING = "BUILD SUCCESSFUL";
-
-    // status values
-	public static final int STATUS_UNKNOWN = 0;
-	public static final int STATUS_FAILED = 1;
-	public static final int STATUS_SUCCESS = 2;
-	public static final int STATUS_RUNNING = 3;
-
-	
-	/**
-	 * Creates a map of our constants so it can be passed to struts JSPs
-	 * only objects, not static stuff can be accessed in a JSP expression
-	 * 
-	 * http://www.mail-archive.com/taglibs-user@jakarta.apache.org/msg05024.html
-	 */
-	private static Map constantsMap;
-	public static Map getConstantFieldsAsMap()
-	  throws IllegalAccessException {
-	  	
-		if (constantsMap != null)
-			return constantsMap;
-	  	
-	  	log.debug("building constants map");
-		Field[] allFields = Constants.class.getDeclaredFields();
-		int numFields = allFields.length;
-		Map propMap = new HashMap(numFields);
-		for (int i = 0; i < numFields; i++) {
-			Field f = allFields[i];
-			int mods = f.getModifiers();
-			if (Modifier.isPublic(mods) &&
-				Modifier.isStatic(mods) &&
-				Modifier.isFinal(mods)) {
-				String name = f.getName();
-				Object value = f.get(null);
-				propMap.put(name, value);
-			}
-		}
-		constantsMap = Collections.unmodifiableMap(propMap);
-		return constantsMap;
-	}
-}
+/*
+ * Created on Oct 21, 2003
+ */
+package org.apache.forrest.forrestbot.webapp;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+public class Constants {
+
+	private static Logger log = Logger.getLogger(Constants.class);
+	
+    // FORWARD NAMES
+    public static final String FORWARD_NAME_SUCCESS = "Success";
+    public static final String FORWARD_NAME_FAILURE = "Failure";
+	public static final String FORWARD_NAME_AUTHORIZED = "Authorized";
+
+	// string tokens
+	public static final String BUILD_SUCCESS_STRING = "BUILD SUCCESSFUL";
+
+    // status values
+	public static final int STATUS_UNKNOWN = 0;
+	public static final int STATUS_FAILED = 1;
+	public static final int STATUS_SUCCESS = 2;
+	public static final int STATUS_RUNNING = 3;
+
+	
+	/**
+	 * Creates a map of our constants so it can be passed to struts JSPs
+	 * only objects, not static stuff can be accessed in a JSP expression
+	 * 
+	 * http://www.mail-archive.com/taglibs-user@jakarta.apache.org/msg05024.html
+	 */
+	private static Map constantsMap;
+	public static Map getConstantFieldsAsMap()
+	  throws IllegalAccessException {
+	  	
+		if (constantsMap != null)
+			return constantsMap;
+	  	
+	  	log.debug("building constants map");
+		Field[] allFields = Constants.class.getDeclaredFields();
+		int numFields = allFields.length;
+		Map propMap = new HashMap(numFields);
+		for (int i = 0; i < numFields; i++) {
+			Field f = allFields[i];
+			int mods = f.getModifiers();
+			if (Modifier.isPublic(mods) &&
+				Modifier.isStatic(mods) &&
+				Modifier.isFinal(mods)) {
+				String name = f.getName();
+				Object value = f.get(null);
+				propMap.put(name, value);
+			}
+		}
+		constantsMap = Collections.unmodifiableMap(propMap);
+		return constantsMap;
+	}
+}

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/Resources.properties
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/Resources.properties	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/Resources.properties	Tue Mar 16 07:58:12 2004
@@ -1,39 +1,41 @@
-# Copyright 2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-prompt.username=Username:
-prompt.password=Password:
-button.submit=Submit
-
-summary.current.time=Current server time:
-summary.site=Site
-summary.status=Status
-summary.log=Log
-summary.date=Date
-summary.status.success=Success
-summary.status.failure=Failure
-summary.status.unknown=Unknown
-summary.status.running=Running
-
-log.back=Back
-log.refresh=Refreshes every {0} seconds
-log.force.refresh=Force refresh
-
-error.required=Please enter a value for '{0}'
-error.authentication=Invalid username/password
-error.authorization=Not authorized, sorry
-
-errors.header=<span style="color:red">
-errors.footer=</span>
-errors.suffix=<br>
\ No newline at end of file
+prompt.username=Username:
+prompt.password=Password:
+button.submit=Submit
+
+summary.current.time=Current server time:
+summary.site=Site
+summary.status=Status
+summary.log=Log
+summary.date=Date
+summary.execute=Execute
+summary.execute.build=Build
+summary.execute.deploy=Deploy
+summary.status.success=Success
+summary.status.failed=Failed
+summary.status.unknown=Unknown
+summary.status.running=Running
+
+login.as=Logged in as {0}
+login.out=Log out
+login.out.done=You have succesfully logged out
+
+log.back=Back
+log.refresh=Refreshes every {0} seconds
+log.force.refresh=Force refresh
+
+back.to.main=Back to main
+view.log=View log for {0}
+execute.started=Started process for {0}.  It may take a minute or two for the log file to begin (it has to get the source first).
+
+error.required=Please enter a value for '{0}'
+error.authentication=Invalid username/password
+error.authorization=Not authorized, sorry
+error.project.notfound=Project '{0}' not found
+error.project.stillrunning=Project '{0}' is still running
+error.logfile.notfound=Log file '{0}' not found
+error.build=Error building {0}
+error.deploy=Error deploying {0}
+
+errors.header=<span style="color:red">
+errors.footer=</span>
+errors.suffix=<br/>
\ No newline at end of file

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/BaseAction.java
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/BaseAction.java	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/BaseAction.java	Tue Mar 16 07:58:12 2004
@@ -1,54 +1,60 @@
-/*
-* Copyright 2004 The Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.forrest.forrestbot.webapp.action;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.log4j.Logger;
-import org.apache.struts.action.Action;
-import org.apache.struts.action.ActionForm;
-import org.apache.struts.action.ActionForward;
-import org.apache.struts.action.ActionMapping;
-
-import org.apache.forrest.forrestbot.webapp.Config;
-import org.apache.forrest.forrestbot.webapp.Constants;
-
-public class BaseAction extends Action {
-	private static Logger log = Logger.getLogger(BaseAction.class);
-	
-	public BaseAction() {
-		super();
-		Config.getInstance(); // set up log4j
-	}
-
-	public ActionForward execute(
-		ActionMapping mapping,
-		ActionForm form,
-		HttpServletRequest request,
-		HttpServletResponse response)
-		throws Exception {
-		super.execute(mapping, form, request, response);
-		
-		/*
-		 * Make the constants available to all JSP expressions
-		 */
-		request.setAttribute("Constants", Constants.getConstantFieldsAsMap());
-		
-		return mapping.findForward(Constants.FORWARD_NAME_SUCCESS);
-	}
-
-}
+package org.apache.forrest.forrestbot.webapp.action;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.forrest.forrestbot.webapp.Config;
+import org.apache.forrest.forrestbot.webapp.Constants;
+import org.apache.log4j.Logger;
+import org.apache.struts.action.Action;
+import org.apache.struts.action.ActionError;
+import org.apache.struts.action.ActionErrors;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+
+public class BaseAction extends Action {
+	private static Logger log = Logger.getLogger(BaseAction.class);
+	
+	public BaseAction() {
+		super();
+		Config.getInstance(); // set up log4j
+	}
+
+	public ActionForward execute(
+		ActionMapping mapping,
+		ActionForm form,
+		HttpServletRequest request,
+		HttpServletResponse response)
+		throws Exception {
+		super.execute(mapping, form, request, response);
+		
+		/*
+		 * Make the constants available to all JSP expressions
+		 */
+		request.setAttribute("Constants", Constants.getConstantFieldsAsMap());
+		
+		response.setHeader("Pragma", "no-cache");
+
+		return mapping.findForward(Constants.FORWARD_NAME_SUCCESS);
+	}
+	
+	protected boolean checkAuthorized(HttpServletRequest request, HttpServletResponse response, boolean setErrors) {
+		Object attr = request.getSession(true).getAttribute("auth");
+		if (attr != null && ((Boolean)attr).booleanValue()) {
+			return true;
+		} else {
+			if (setErrors) {
+				ActionErrors errors = new ActionErrors();
+				errors.add("authorize", new ActionError("error.authorization"));
+				saveErrors(request, errors);
+			}
+			return false;
+		}
+	}
+	
+	protected boolean checkAuthorized(HttpServletRequest request, HttpServletResponse response) {
+		return checkAuthorized(request, response, true);
+	}
+
+}

Added: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ExecuteAction.java
==============================================================================
--- (empty file)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ExecuteAction.java	Tue Mar 16 07:58:12 2004
@@ -0,0 +1,79 @@
+package org.apache.forrest.forrestbot.webapp.action;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.forrest.forrestbot.webapp.Constants;
+import org.apache.forrest.forrestbot.webapp.util.Project;
+import org.apache.log4j.Logger;
+import org.apache.struts.action.ActionError;
+import org.apache.struts.action.ActionErrors;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+import org.apache.forrest.forrestbot.webapp.util.Executor;
+
+public final class ExecuteAction extends BaseAction {
+	private static Logger log = Logger.getLogger(ExecuteAction.class);
+
+	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
+		super.execute(mapping, form, request, response);
+		
+		if (!checkAuthorized(request, response))
+			return mapping.findForward(Constants.FORWARD_NAME_SUCCESS);
+
+		ActionErrors errors = new ActionErrors();
+
+		String project = (String) PropertyUtils.getSimpleProperty(form, "project");
+		String build = (String) PropertyUtils.getSimpleProperty(form, "build");
+		String deploy = (String) PropertyUtils.getSimpleProperty(form, "deploy");
+
+		request.setAttribute("project", project);
+
+		if (!Project.exists(project)) {
+			log.warn("project doesn't exist: " + project);
+			errors.add("execute", new ActionError("error.project.notfound", project));
+			saveErrors(request, errors);
+			return mapping.findForward(Constants.FORWARD_NAME_SUCCESS);
+		}
+		
+		Project p = new Project();
+		p.asDTO().setName(project);
+		p.loadData();
+		p.loadSecurity((String) request.getSession(true).getAttribute("username"));
+		if (p.asDTO().getStatus() == Constants.STATUS_RUNNING) {
+			log.warn("can't execute " + project + " while still running");
+			errors.add("execute", new ActionError("error.project.stillrunning", project));
+			saveErrors(request, errors);
+			return mapping.findForward(Constants.FORWARD_NAME_SUCCESS);
+		}
+
+		if (build != null) {
+			if (p.asDTO().isBuildable()) {
+				try {
+					Executor.build(project);
+				} catch (Exception e) {
+					log.warn("couldn't build " + project, e);
+					errors.add("execute", new ActionError("error.build", project));
+				}
+			} else {
+				errors.add("execute", new ActionError("error.authorization"));
+			}
+		} else if (deploy != null) {
+			if (p.asDTO().isDeployable()) {
+				try {
+					Executor.deploy(project);
+				} catch (Exception e) {
+					log.warn("couldn't deploy " + project, e);
+					errors.add("execute", new ActionError("error.deploy", project));
+				}
+			} else {
+				errors.add("execute", new ActionError("error.authorization"));
+			}
+		}
+		saveErrors(request, errors);
+		return mapping.findForward(Constants.FORWARD_NAME_SUCCESS);
+
+	}
+}

Added: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/LogoutAction.java
==============================================================================
--- (empty file)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/LogoutAction.java	Tue Mar 16 07:58:12 2004
@@ -0,0 +1,27 @@
+package org.apache.forrest.forrestbot.webapp.action;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.forrest.forrestbot.webapp.Constants;
+import org.apache.log4j.Logger;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+
+public final class LogoutAction extends BaseAction {
+	private static Logger log = Logger.getLogger(LogoutAction.class);
+
+	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
+		super.execute(mapping, form, request, response);
+
+		// session
+		request.getSession(true).removeAttribute("auth");
+		
+		// request & application for good measure
+		request.removeAttribute("auth");
+		request.getSession(true).getServletContext().removeAttribute("auth");
+		
+		return mapping.findForward(Constants.FORWARD_NAME_SUCCESS);
+	}
+}

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ViewLogBodyAction.java
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ViewLogBodyAction.java	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ViewLogBodyAction.java	Tue Mar 16 07:58:12 2004
@@ -1,100 +1,60 @@
-/*
-* Copyright 2004 The Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.forrest.forrestbot.webapp.action;
-
-import java.io.File;
-import java.util.Collection;
-import java.util.Iterator;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.forrest.forrestbot.webapp.Config;
-import org.apache.forrest.forrestbot.webapp.Constants;
-import org.apache.forrest.forrestbot.webapp.dto.ProjectDTO;
-import org.apache.forrest.forrestbot.webapp.util.Project;
-import org.apache.log4j.Logger;
-import org.apache.struts.action.ActionForm;
-import org.apache.struts.action.ActionForward;
-import org.apache.struts.action.ActionMapping;
-import org.apache.struts.action.ActionErrors;
-import org.apache.struts.action.ActionError;
-
-public final class ViewLogBodyAction extends BaseAction {
-	private static Logger log = Logger.getLogger(ViewLogBodyAction.class);
-
-	ActionErrors errors;
-
-	public ActionForward execute(
-		ActionMapping mapping,
-		ActionForm form,
-		HttpServletRequest request,
-		HttpServletResponse response)
-		throws Exception {
-		super.execute(mapping, form, request, response);
-
-		errors = new ActionErrors();
-
-		String refreshrate = Config.getProperty("refreshrate");
-		String project = request.getParameter("project");
-		String logfile = null;
-
-		// security checks
-		checkProjectExists(project);
-		if (errors.isEmpty()) {
-			logfile = Config.getProperty("logs-dir") + "/" + project + ".log";
-			log.debug(logfile);
-			File f = new File(logfile);
-			if (!f.isFile()) {
-				log.warn("couldn't find file: " + logfile);
-				errors.add(
-					"logfile",
-					new ActionError("logfile.file.invalid", logfile));
-			}
-		}
-		log.debug("errors: " + errors.size());
-		saveErrors(request, errors);
-
-		response.addHeader("Pragma", "no-cache");
-		response.addHeader("Refresh", refreshrate);
-
-		//request.setAttribute("refreshrate", refreshrate);
-		if (errors.isEmpty())
-			request.setAttribute("logfile", logfile);
-		else
-			request.setAttribute("logfile", null);
-
-		return mapping.findForward(Constants.FORWARD_NAME_SUCCESS);
-
-	}
-
-	private void checkProjectExists(String project) {
-		Collection c = Project.getAllProjects();
-		boolean foundProject = false;
-		for (Iterator i = c.iterator(); i.hasNext();) {
-			if (((ProjectDTO)i.next()).getName().equals(project)) {
-				foundProject = true;
-				break;
-			}
-		}
-		if (!foundProject) {
-			log.warn("project doesn't exist: " + project);
-			errors.add(
-				"logfile",
-				new ActionError("logfile.project.invalid", project));
-		}
-	}
-}
+package org.apache.forrest.forrestbot.webapp.action;
+
+import java.io.File;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.forrest.forrestbot.webapp.Config;
+import org.apache.forrest.forrestbot.webapp.Constants;
+import org.apache.forrest.forrestbot.webapp.util.Project;
+import org.apache.log4j.Logger;
+import org.apache.struts.action.ActionError;
+import org.apache.struts.action.ActionErrors;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+
+public final class ViewLogBodyAction extends BaseAction {
+	private static Logger log = Logger.getLogger(ViewLogBodyAction.class);
+
+	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
+		super.execute(mapping, form, request, response);
+
+		ActionErrors errors = new ActionErrors();
+
+		String refreshrate = Config.getProperty("refreshrate");
+		String project = request.getParameter("project");
+		String logfile = null;
+
+		// security checks
+		if (!Project.exists(project)) {
+			log.warn("project doesn't exist: " + project);
+			errors.add("logfile", new ActionError("error.project.notfound", project));
+		}
+
+		if (errors.isEmpty()) {
+			logfile = Config.getProperty("logs-dir") + "/" + project + ".log";
+			log.debug(logfile);
+			File f = new File(logfile);
+			if (!f.isFile()) {
+				log.warn("couldn't find file: " + logfile);
+				errors.add("logfile", new ActionError("error.logfile.notfound", logfile));
+			}
+		}
+		log.debug("errors: " + errors.size());
+		saveErrors(request, errors);
+
+		response.addHeader("Refresh", refreshrate);
+
+		//request.setAttribute("refreshrate", refreshrate);
+		if (errors.isEmpty())
+			request.setAttribute("logfile", logfile);
+		else
+			request.setAttribute("logfile", null);
+
+		return mapping.findForward(Constants.FORWARD_NAME_SUCCESS);
+
+	}
+
+}

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ViewLogFrameAction.java
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ViewLogFrameAction.java	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ViewLogFrameAction.java	Tue Mar 16 07:58:12 2004
@@ -1,48 +1,33 @@
-/*
-* Copyright 2004 The Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.forrest.forrestbot.webapp.action;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.forrest.forrestbot.webapp.Constants;
-import org.apache.log4j.Logger;
-import org.apache.struts.action.ActionForm;
-import org.apache.struts.action.ActionForward;
-import org.apache.struts.action.ActionMapping;
-import org.apache.struts.action.ActionErrors;
-
-public final class ViewLogFrameAction extends BaseAction {
-	private static Logger log = Logger.getLogger(ViewLogFrameAction.class);
-
-	ActionErrors errors = new ActionErrors();
-
-	public ActionForward execute(
-		ActionMapping mapping,
-		ActionForm form,
-		HttpServletRequest request,
-		HttpServletResponse response)
-		throws Exception {
-		super.execute(mapping, form, request, response);
-
-		String project = request.getParameter("project");
-		
-		request.setAttribute("project", project);
-		
-		return mapping.findForward(Constants.FORWARD_NAME_SUCCESS);
-
-	}
-}
+package org.apache.forrest.forrestbot.webapp.action;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.forrest.forrestbot.webapp.Constants;
+import org.apache.log4j.Logger;
+import org.apache.struts.action.ActionErrors;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+
+public final class ViewLogFrameAction extends BaseAction {
+	private static Logger log = Logger.getLogger(ViewLogFrameAction.class);
+
+	ActionErrors errors = new ActionErrors();
+
+	public ActionForward execute(
+		ActionMapping mapping,
+		ActionForm form,
+		HttpServletRequest request,
+		HttpServletResponse response)
+		throws Exception {
+		super.execute(mapping, form, request, response);
+
+		String project = request.getParameter("project");
+		
+		request.setAttribute("project", project);
+		
+		return mapping.findForward(Constants.FORWARD_NAME_SUCCESS);
+
+	}
+}

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ViewLogHeaderAction.java
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ViewLogHeaderAction.java	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ViewLogHeaderAction.java	Tue Mar 16 07:58:12 2004
@@ -1,51 +1,36 @@
-/*
-* Copyright 2004 The Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.forrest.forrestbot.webapp.action;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.forrest.forrestbot.webapp.Config;
-import org.apache.forrest.forrestbot.webapp.Constants;
-import org.apache.log4j.Logger;
-import org.apache.struts.action.ActionForm;
-import org.apache.struts.action.ActionForward;
-import org.apache.struts.action.ActionMapping;
-import org.apache.struts.action.ActionErrors;
-
-public final class ViewLogHeaderAction extends BaseAction {
-	private static Logger log = Logger.getLogger(ViewLogHeaderAction.class);
-
-	ActionErrors errors = new ActionErrors();
-
-	public ActionForward execute(
-		ActionMapping mapping,
-		ActionForm form,
-		HttpServletRequest request,
-		HttpServletResponse response)
-		throws Exception {
-		super.execute(mapping, form, request, response);
-
-		String refreshrate = Config.getProperty("refreshrate");
-		String project = request.getParameter("project");
-
-		request.setAttribute("refreshrate", refreshrate);
-		request.setAttribute("project", project);
-		
-		return mapping.findForward(Constants.FORWARD_NAME_SUCCESS);
-
-	}
-}
+package org.apache.forrest.forrestbot.webapp.action;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.forrest.forrestbot.webapp.Config;
+import org.apache.forrest.forrestbot.webapp.Constants;
+import org.apache.log4j.Logger;
+import org.apache.struts.action.ActionErrors;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+
+public final class ViewLogHeaderAction extends BaseAction {
+	private static Logger log = Logger.getLogger(ViewLogHeaderAction.class);
+
+	ActionErrors errors = new ActionErrors();
+
+	public ActionForward execute(
+		ActionMapping mapping,
+		ActionForm form,
+		HttpServletRequest request,
+		HttpServletResponse response)
+		throws Exception {
+		super.execute(mapping, form, request, response);
+
+		String refreshrate = Config.getProperty("refreshrate");
+		String project = request.getParameter("project");
+
+		request.setAttribute("refreshrate", refreshrate);
+		request.setAttribute("project", project);
+		
+		return mapping.findForward(Constants.FORWARD_NAME_SUCCESS);
+
+	}
+}

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ViewSummaryAction.java
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ViewSummaryAction.java	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/action/ViewSummaryAction.java	Tue Mar 16 07:58:12 2004
@@ -1,87 +1,79 @@
-/*
-* Copyright 2004 The Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.forrest.forrestbot.webapp.action;
-
-import java.util.Date;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.log4j.Logger;
-import org.apache.struts.action.ActionErrors;
-import org.apache.struts.action.ActionForm;
-import org.apache.struts.action.ActionForward;
-import org.apache.struts.action.ActionMapping;
-import org.apache.struts.action.ActionError;
-
-import org.apache.commons.beanutils.PropertyUtils;
-import org.apache.forrest.forrestbot.webapp.Constants;
-import org.apache.forrest.forrestbot.webapp.util.Project;
-
-public final class ViewSummaryAction extends BaseAction {
-	private static Logger log = Logger.getLogger(ViewSummaryAction.class);
-
-	public ActionForward execute(
-		ActionMapping mapping,
-		ActionForm form,
-		HttpServletRequest request,
-		HttpServletResponse response)
-		throws Exception {
-		super.execute(mapping, form, request, response);
-
-		response.setHeader("Pragma", "no-cache");
-
-		request.setAttribute("projects", Project.getAllProjects());
-		request.setAttribute("serverTime", new Date());
-		
-		log.debug("set summary beans");
-
-
-		//MessageResources messages = getResources(request);
-
-		if (form != null && !PropertyUtils.getSimpleProperty(form, "submit").equals("unsubmitted")) {
-			log.debug("processing form");
-			ActionErrors errors = form.validate(mapping, request);
-			
-			String username =
-				(String) PropertyUtils.getSimpleProperty(form, "username");
-			String password =
-				(String) PropertyUtils.getSimpleProperty(form, "password");
-
-			if (!username.equals("admin")) {
-				log.debug("not admin");
-				errors.add(
-					"username",
-					new ActionError("error.authorization"));
-				saveErrors(request, errors);
-				return mapping.findForward(Constants.FORWARD_NAME_FAILURE);
-			} else if (!password.equals("asdf")) {
-				log.debug("bad password");
-				errors.add(
-					"password",
-					new ActionError("error.authentication"));
-				saveErrors(request, errors);
-				return mapping.findForward(Constants.FORWARD_NAME_FAILURE);
-			} else {
-				log.debug("authenticated");
-				return mapping.findForward(Constants.FORWARD_NAME_AUTHORIZED);
-			}
-		}
-
-		return mapping.findForward(Constants.FORWARD_NAME_SUCCESS);
-
-	}
-}
+package org.apache.forrest.forrestbot.webapp.action;
+
+import java.util.Collection;
+import java.util.Date;
+import java.util.Iterator;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.forrest.forrestbot.webapp.Constants;
+import org.apache.forrest.forrestbot.webapp.dto.ProjectDTO;
+import org.apache.forrest.forrestbot.webapp.util.Project;
+import org.apache.log4j.Logger;
+import org.apache.struts.action.ActionError;
+import org.apache.struts.action.ActionErrors;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+
+import com.opensymphony.user.EntityNotFoundException;
+import com.opensymphony.user.UserManager;
+
+public final class ViewSummaryAction extends BaseAction {
+	private static Logger log = Logger.getLogger(ViewSummaryAction.class);
+
+	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
+		super.execute(mapping, form, request, response);
+
+		if (form != null && !PropertyUtils.getSimpleProperty(form, "submit").equals("unsubmitted")) {
+			ActionErrors errors = form.validate(mapping, request);
+
+			String username = (String) PropertyUtils.getSimpleProperty(form, "username");
+			String password = (String) PropertyUtils.getSimpleProperty(form, "password");
+
+			request.setAttribute("username", username);
+			
+
+			UserManager userManager = UserManager.getInstance();
+
+			boolean validPassword = false;
+			try {
+				validPassword = userManager.getUser(username).authenticate(password);
+			} catch (EntityNotFoundException e) {
+				validPassword = false;
+			}
+			if (!validPassword) {
+				log.debug("bad password");
+				errors.add("password", new ActionError("error.authentication"));
+				saveErrors(request, errors);
+				return mapping.findForward(Constants.FORWARD_NAME_FAILURE);
+			} else {
+				log.debug("authenticated");
+				request.getSession(true).setAttribute("auth", Boolean.TRUE);
+				request.getSession(true).setAttribute("username", username);
+				//return mapping.findForward(Constants.FORWARD_NAME_AUTHORIZED);
+			}
+		}
+
+		request.setAttribute("serverTime", new Date());
+
+		if (checkAuthorized(request, response, false)) {
+			// set access for each project
+			String currentUser = (String) request.getSession(true).getAttribute("username");
+			Collection projects = Project.getAllProjects();
+			for (Iterator i = projects.iterator(); i.hasNext();) {
+				ProjectDTO projectDTO = (ProjectDTO)i.next();
+				(new Project(projectDTO)).loadSecurity(currentUser);
+			}
+			request.setAttribute("projects", projects);
+			
+			return mapping.findForward(Constants.FORWARD_NAME_AUTHORIZED);
+		}
+		
+		request.setAttribute("projects", Project.getAllProjects());
+		return mapping.findForward(Constants.FORWARD_NAME_SUCCESS);
+
+	}
+}

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/dto/ProjectDTO.java
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/dto/ProjectDTO.java	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/dto/ProjectDTO.java	Tue Mar 16 07:58:12 2004
@@ -1,112 +1,130 @@
-/*
-* Copyright 2004 The Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.forrest.forrestbot.webapp.dto;
-
-import java.util.Date;
-
-public class ProjectDTO {
-	String name;
-	int status;
-	Date lastBuilt;
-	String logUrl;
-	String url;
-	boolean isLogged;
-
-	/**
-	 * @return
-	 */
-	public String getName() {
-		return name;
-	}
-
-	/**
-	 * @return
-	 */
-	public int getStatus() {
-		return status;
-	}
-
-	/**
-	 * @param string
-	 */
-	public void setName(String string) {
-		name = string;
-	}
-
-	/**
-	 * @param string
-	 */
-	public void setStatus(int i) {
-		status = i;
-	}
-
-	/**
-	 * @return
-	 */
-	public Date getLastBuilt() {
-		return lastBuilt;
-	}
-
-	/**
-	 * @param date
-	 */
-	public void setLastBuilt(Date date) {
-		lastBuilt = date;
-	}
-
-	/**
-	 * @return
-	 */
-	public String getLogUrl() {
-		return logUrl;
-	}
-
-	/**
-	 * @return
-	 */
-	public String getUrl() {
-		return url;
-	}
-
-	/**
-	 * @param string
-	 */
-	public void setLogUrl(String string) {
-		logUrl = string;
-	}
-
-	/**
-	 * @param string
-	 */
-	public void setUrl(String string) {
-		url = string;
-	}
-
-	/**
-	 * @return
-	 */
-	public boolean isLogged() {
-		return isLogged;
-	}
-
-	/**
-	 * @param b
-	 */
-	public void setLogged(boolean b) {
-		isLogged = b;
-	}
-
-}
+/*
+ * Created on Feb 10, 2004
+ */
+package org.apache.forrest.forrestbot.webapp.dto;
+
+import java.util.Date;
+
+public class ProjectDTO {
+	String name;
+	int status;
+	Date lastBuilt;
+	String logUrl;
+	String url;
+	boolean isLogged;
+	boolean deployable;
+	boolean buildable;
+
+	/**
+	 * @return
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * @return
+	 */
+	public int getStatus() {
+		return status;
+	}
+
+	/**
+	 * @param string
+	 */
+	public void setName(String string) {
+		name = string;
+	}
+
+	/**
+	 * @param string
+	 */
+	public void setStatus(int i) {
+		status = i;
+	}
+
+	/**
+	 * @return
+	 */
+	public Date getLastBuilt() {
+		return lastBuilt;
+	}
+
+	/**
+	 * @param date
+	 */
+	public void setLastBuilt(Date date) {
+		lastBuilt = date;
+	}
+
+	/**
+	 * @return
+	 */
+	public String getLogUrl() {
+		return logUrl;
+	}
+
+	/**
+	 * @return
+	 */
+	public String getUrl() {
+		return url;
+	}
+
+	/**
+	 * @param string
+	 */
+	public void setLogUrl(String string) {
+		logUrl = string;
+	}
+
+	/**
+	 * @param string
+	 */
+	public void setUrl(String string) {
+		url = string;
+	}
+
+	/**
+	 * @return
+	 */
+	public boolean isLogged() {
+		return isLogged;
+	}
+
+	/**
+	 * @param b
+	 */
+	public void setLogged(boolean b) {
+		isLogged = b;
+	}
+
+	/**
+	 * @return
+	 */
+	public boolean isBuildable() {
+		return buildable;
+	}
+
+	/**
+	 * @return
+	 */
+	public boolean isDeployable() {
+		return deployable;
+	}
+
+	/**
+	 * @param b
+	 */
+	public void setBuildable(boolean b) {
+		buildable = b;
+	}
+
+	/**
+	 * @param b
+	 */
+	public void setDeployable(boolean b) {
+		deployable = b;
+	}
+
+}

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/form/BaseDynaActionForm.java
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/form/BaseDynaActionForm.java	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/form/BaseDynaActionForm.java	Tue Mar 16 07:58:12 2004
@@ -1,43 +1,31 @@
-/*
-* Copyright 2004 The Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.forrest.forrestbot.webapp.form;
-
-import org.apache.log4j.Logger;
-import org.apache.struts.action.ActionError;
-import org.apache.struts.action.ActionMessages;
-import org.apache.struts.action.DynaActionForm;
-
-
-public class BaseDynaActionForm extends DynaActionForm {
-	private static Logger log = Logger.getLogger(BaseDynaActionForm.class);
-	
-	protected boolean isEmptyString(Object o) {
-		return o == null || 
-			o.getClass() != String.class || 
-			((String) o).trim().equals("");
-	}
-
-	protected ActionMessages checkRequiredFields(String [] fields) {
-		ActionMessages errors = new ActionMessages();
-		for (int i = 0; i < fields.length; i++)
-		if (isEmptyString(get(fields[i]))) {
-			log.debug(fields[i] + " is empty string");
-			errors.add(fields[i], new ActionError("error.required", fields[i]));
-		}
-
-		return errors;
-	}
-}
+/*
+ * Created on Feb 11, 2004
+ */
+package org.apache.forrest.forrestbot.webapp.form;
+
+import org.apache.log4j.Logger;
+import org.apache.struts.action.ActionError;
+import org.apache.struts.action.ActionMessages;
+import org.apache.struts.action.DynaActionForm;
+
+
+public class BaseDynaActionForm extends DynaActionForm {
+	private static Logger log = Logger.getLogger(BaseDynaActionForm.class);
+	
+	protected boolean isEmptyString(Object o) {
+		return o == null || 
+			o.getClass() != String.class || 
+			((String) o).trim().equals("");
+	}
+
+	protected ActionMessages checkRequiredFields(String [] fields) {
+		ActionMessages errors = new ActionMessages();
+		for (int i = 0; i < fields.length; i++)
+		if (isEmptyString(get(fields[i]))) {
+			log.debug(fields[i] + " is empty string");
+			errors.add(fields[i], new ActionError("error.required", fields[i]));
+		}
+
+		return errors;
+	}
+}

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/form/LoginForm.java
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/form/LoginForm.java	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/form/LoginForm.java	Tue Mar 16 07:58:12 2004
@@ -1,37 +1,25 @@
-/*
-* Copyright 2004 The Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.forrest.forrestbot.webapp.form;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.log4j.Logger;
-import org.apache.struts.action.ActionErrors;
-import org.apache.struts.action.ActionMapping;
-
-public class LoginForm extends BaseDynaActionForm {
-
-	private static Logger log = Logger.getLogger(LoginForm.class);
-	
-	/* (non-Javadoc)
-	 * @see org.apache.struts.action.ActionForm#validate(org.apache.struts.action.ActionMapping, javax.servlet.http.HttpServletRequest)
-	 */
-	public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) {
-		ActionErrors errors = new ActionErrors();
-		errors.add(checkRequiredFields(new String[] {"username", "password"}));
-		return errors;
-	}
-
-}
+/*
+ * Created on Feb 11, 2004
+ */
+package org.apache.forrest.forrestbot.webapp.form;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.log4j.Logger;
+import org.apache.struts.action.ActionErrors;
+import org.apache.struts.action.ActionMapping;
+
+public class LoginForm extends BaseDynaActionForm {
+
+	private static Logger log = Logger.getLogger(LoginForm.class);
+	
+	/* (non-Javadoc)
+	 * @see org.apache.struts.action.ActionForm#validate(org.apache.struts.action.ActionMapping, javax.servlet.http.HttpServletRequest)
+	 */
+	public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) {
+		ActionErrors errors = new ActionErrors();
+		errors.add(checkRequiredFields(new String[] {"username", "password"}));
+		return errors;
+	}
+
+}

Added: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/util/Executor.java
==============================================================================
--- (empty file)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/util/Executor.java	Tue Mar 16 07:58:12 2004
@@ -0,0 +1,68 @@
+/*
+ * Created on Mar 9, 2004
+ */
+package org.apache.forrest.forrestbot.webapp.util;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import org.apache.forrest.forrestbot.webapp.Config;
+import org.apache.log4j.Logger;
+
+class ExecutorThread extends Thread {
+	private Process proc;
+	private Logger log;
+	private boolean debug; 
+	
+	public ExecutorThread(String id, Process p) {
+		super(id);
+		proc = p;
+		log = Logger.getLogger(Executor.class + " " + id);
+		debug = Boolean.valueOf(Config.getProperty("debug-exec")).booleanValue();
+	}
+
+	public void run() {
+		BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+
+		try {
+			String line;
+			while ((line = br.readLine()) != null) {
+				if (debug)
+					log.debug(line);
+			}
+		} catch (IOException e) {
+			log.warn("error reading from process output", e);
+			return;
+		}
+	}
+
+}
+
+public class Executor {
+	private static Logger log = Logger.getLogger(Executor.class);
+
+	private static void run(String target, String project) throws IOException {
+		String command = Config.getProperty("forrest-exec") + " -f " + project + ".xml " + target;
+		File workingDir = new File(Config.getProperty("config-dir"));
+
+		log.debug("executing '" + command + "' in " + workingDir);
+
+		Runtime rt = Runtime.getRuntime();
+		Process proc = rt.exec(command, null, workingDir);
+		ExecutorThread execThread = new ExecutorThread(project, proc);
+		execThread.start();
+		// don't wait for it to finish
+	}
+
+	public static void build(String project) throws IOException {
+		run(Config.getProperty("targets.build"), project);
+
+	}
+
+	public static void deploy(String project) throws IOException {
+		run(Config.getProperty("targets.deploy"), project);
+	}
+
+}

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/util/Project.java
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/util/Project.java	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/java/org/apache/forrest/forrestbot/webapp/util/Project.java	Tue Mar 16 07:58:12 2004
@@ -1,140 +1,161 @@
-/*
-* Copyright 2004 The Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.forrest.forrestbot.webapp.util;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.RandomAccessFile;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-
-import org.apache.forrest.forrestbot.webapp.Constants;
-import org.apache.forrest.forrestbot.webapp.Config;
-import org.apache.forrest.forrestbot.webapp.dto.ProjectDTO;
-import org.apache.log4j.Logger;
-
-public class Project {
-	protected ProjectDTO dto;
-	private static Logger log = Logger.getLogger(Project.class);
-
-	private String logfile = null;
-
-	public Project() {
-		this(new ProjectDTO());
-	}
-	public Project(ProjectDTO dto) {
-		this.dto = dto;
-	}
-	public ProjectDTO asDTO() {
-		return dto;
-	}
-
-	public void loadData() {
-		dto.setLastBuilt(getLastBuilt());
-		dto.setUrl(getUrl());
-		dto.setLogUrl(getLogUrl());
-		dto.setStatus(getStatus());
-		dto.setLogged(isLogged());
-	}
-
-	private boolean isLogged() {
-		return new File(getLogFile()).isFile();
-	}
-	
-	private String getLogFile() {
-		if (logfile == null) {
-			logfile = Config.getProperty("logs-dir") + "/" + dto.getName() + ".log";
-		}
-		return logfile;
-	}
-
-	private Date getLastBuilt() {
-		File f = new File(getLogFile());
-		long lm = f.lastModified();
-		if (lm == 0)
-			return null;
-		else
-			return new Date(lm);
-	}
-
-	private String getUrl() {
-		return Config.getProperty("build-url") + "/" + dto.getName() + "/";
-	}
-
-	private String getLogUrl() {
-		return Config.getProperty("logs-url") + "/" + dto.getName() + ".log";
-	}
-
-	private int getStatus() {
-		RandomAccessFile f;
-		try {
-			f = new RandomAccessFile(getLogFile(), "r");
-		} catch (FileNotFoundException e) {
-			log.debug("couldn't find log file for: " + getLogFile());
-			return Constants.STATUS_UNKNOWN;
-		}
-
-		byte[] checkSuccess = new byte[Constants.BUILD_SUCCESS_STRING.length()];
-		try {
-			f.seek((int) f.length() - checkSuccess.length - 2);
-			f.read(checkSuccess, 0, checkSuccess.length);
-		} catch (IOException e1) {
-			log.debug("couldn't find seek in log file: " + f.toString());
-			return Constants.STATUS_UNKNOWN;
-		}
-
-		if (Constants.BUILD_SUCCESS_STRING.equals(new String(checkSuccess))) {
-			return Constants.STATUS_SUCCESS;
-		} else if (getLastBuilt().getTime() > (new Date()).getTime() - 60 * 1000) {
-			// if date is in last minute, consider it still running
-			return Constants.STATUS_RUNNING;
-		} else {
-
-			return Constants.STATUS_FAILED;
-		}
-	}
-
-	public static Collection getAllProjects() {
-		/* based on available directories
-		File f = new File(build_dir);
-		File[] possibleSites = f.listFiles();
-		ArrayList sites = new ArrayList();
-		for (int i = 0; i < possibleSites.length; i++) {
-			if (possibleSites[i].isDirectory()) {
-				sites.add(possibleSites[i].getName());
-			}
-		}
-		*/
-		/* based on config files */
-		Collection sites = new ArrayList();
-		File f = new File(Config.getProperty("config-dir"));
-		File[] possibleSites = f.listFiles();
-		for (int i = 0; i < possibleSites.length; i++) {
-			if (possibleSites[i].isFile()) {
-				String name = possibleSites[i].getName();
-				if (name.endsWith(".xml")) {
-					ProjectDTO projectDTO = new ProjectDTO();
-					projectDTO.setName(name.substring(0, name.length() - 4));
-					(new Project(projectDTO)).loadData();
-					sites.add(projectDTO);
-				}
-			}
-		}
-		return sites;
-	}
-}
+/*
+ * Created on Feb 10, 2004
+ */
+package org.apache.forrest.forrestbot.webapp.util;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Iterator;
+
+import org.apache.forrest.forrestbot.webapp.Constants;
+import org.apache.forrest.forrestbot.webapp.Config;
+import org.apache.forrest.forrestbot.webapp.dto.ProjectDTO;
+import org.apache.log4j.Logger;
+
+import com.opensymphony.user.Group;
+import com.opensymphony.user.UserManager;
+
+public class Project {
+	protected ProjectDTO dto;
+	private static Logger log = Logger.getLogger(Project.class);
+
+	private String logfile = null;
+
+	public Project() {
+		this(new ProjectDTO());
+	}
+	public Project(ProjectDTO dto) {
+		this.dto = dto;
+	}
+	public ProjectDTO asDTO() {
+		return dto;
+	}
+
+	public void loadData() {
+		dto.setLastBuilt(getLastBuilt());
+		dto.setUrl(getUrl());
+		dto.setLogUrl(getLogUrl());
+		dto.setStatus(getStatus());
+		dto.setLogged(isLogged());
+	}
+
+	public void loadSecurity(String user) {
+		dto.setBuildable(isBuildable(user));
+		dto.setDeployable(isDeployable(user));
+	}
+
+	private boolean isBuildable(String user) {
+		UserManager userManager = UserManager.getInstance();
+		try {
+			for (Iterator i = userManager.getGroups().iterator(); i.hasNext();) {
+				Group g = (Group) i.next();
+				if (g.containsUser(dto.getName()) && g.containsUser(user))
+					return true;
+			}
+		} catch (Exception e) {
+			log.warn("error while checking if " + user + " has access to build " + dto.getName(), e);
+		}
+		
+		return false;
+	}
+
+	private boolean isDeployable(String user) {
+		// for now we don't need to seperate deployable and buildable security
+		return isBuildable(user);
+	}
+
+	private boolean isLogged() {
+		return new File(getLogFile()).isFile();
+	}
+	
+	private String getLogFile() {
+		if (logfile == null) {
+			logfile = Config.getProperty("logs-dir") + "/" + dto.getName() + ".log";
+		}
+		return logfile;
+	}
+
+	private Date getLastBuilt() {
+		File f = new File(getLogFile());
+		long lm = f.lastModified();
+		if (lm == 0)
+			return null;
+		else
+			return new Date(lm);
+	}
+
+	private String getUrl() {
+		return Config.getProperty("build-url") + "/" + dto.getName() + "/";
+	}
+
+	private String getLogUrl() {
+		return Config.getProperty("logs-url") + "/" + dto.getName() + ".log";
+	}
+
+	private int getStatus() {
+		RandomAccessFile f;
+		try {
+			f = new RandomAccessFile(getLogFile(), "r");
+		} catch (FileNotFoundException e) {
+			log.debug("couldn't find log file for: " + getLogFile());
+			return Constants.STATUS_UNKNOWN;
+		}
+
+		byte[] checkSuccess = new byte[Constants.BUILD_SUCCESS_STRING.length()];
+		try {
+			f.seek((int) f.length() - checkSuccess.length - 2);
+			f.read(checkSuccess, 0, checkSuccess.length);
+		} catch (IOException e1) {
+			log.debug("couldn't find seek in log file: " + f.toString());
+			return Constants.STATUS_UNKNOWN;
+		}
+
+		if (Constants.BUILD_SUCCESS_STRING.equals(new String(checkSuccess))) {
+			return Constants.STATUS_SUCCESS;
+		} else if (getLastBuilt().getTime() > (new Date()).getTime() - 60 * 1000) {
+			// if date is in last minute, consider it still running
+			return Constants.STATUS_RUNNING;
+		} else {
+			return Constants.STATUS_FAILED;
+		}
+	}
+
+	/**
+	 * @return Collection of type ProjectDTO
+	 */
+	public static Collection getAllProjects() {
+
+		/* based on config files */
+		Collection sites = new ArrayList();
+		File f = new File(Config.getProperty("config-dir"));
+		File[] possibleSites = f.listFiles();
+		for (int i = 0; i < possibleSites.length; i++) {
+			if (possibleSites[i].isFile()) {
+				String name = possibleSites[i].getName();
+				if (name.endsWith(".xml")) {
+					ProjectDTO projectDTO = new ProjectDTO();
+					projectDTO.setName(name.substring(0, name.length() - 4));
+					(new Project(projectDTO)).loadData();
+					sites.add(projectDTO);
+				}
+			}
+		}
+		return sites;
+	}
+
+
+	public static boolean exists(String project) {
+		Collection c = getAllProjects();
+		for (Iterator i = c.iterator(); i.hasNext();) {
+			if (((ProjectDTO)i.next()).getName().equals(project)) {
+				return true;
+			}
+		}
+		return false;
+	}
+}

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/struts-config.xml
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/struts-config.xml	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/struts-config.xml	Tue Mar 16 07:58:12 2004
@@ -1,58 +1,59 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
-<struts-config>
-  <form-beans>
-    <form-bean name="LoginForm" type="org.apache.forrest.forrestbot.webapp.form.LoginForm">
-      <form-property name="submit" type="java.lang.String" initial="unsubmitted"/>
-      <form-property name="username" type="java.lang.String"/>
-      <form-property name="password" type="java.lang.String"/>
-    </form-bean>
-  </form-beans>
-  <global-forwards>
-    <forward name="index" path="/summary.do" />
-  </global-forwards>
-  <action-mappings>
-    <!-- these forward to tile definitions, which in turn put the decorations around the content JSP file -->
-    <action type="org.apache.forrest.forrestbot.webapp.action.ViewSummaryAction"
-      path="/summary"
-      name="LoginForm"
-      scope="request"
-      validate="false"
-      input="/summary.jsp">
-        <forward name="Success" path="summary"/>
-        <forward name="Failure" path="summary"/>
-        <forward name="Authorized" path="summaryAuthorized"/>
-    </action>
-    <action type="org.apache.forrest.forrestbot.webapp.action.ViewLogFrameAction" path="/viewlog">
-		<forward name="Success" path="viewlog_frame"/>
-    </action>
-    <action type="org.apache.forrest.forrestbot.webapp.action.ViewLogBodyAction" path="/viewlog_body">
-		<forward name="Success" path="viewlog_body"/>
-    </action>
-    <action type="org.apache.forrest.forrestbot.webapp.action.ViewLogHeaderAction" path="/viewlog_header">
-		<forward name="Success" path="viewlog_header"/>
-    </action>
-  </action-mappings>
-  
-  <message-resources parameter="org.apache.forrest.forrestbot.webapp.Resources"/>
-  
-  <plug-in className="org.apache.struts.tiles.TilesPlugin">
-    <set-property value="/WEB-INF/struts-tiles.xml" property="definitions-config" />
-    <set-property value="true" property="definitions-parser-validate" />
-  </plug-in>
-</struts-config>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
+<struts-config>
+  <form-beans>
+    <form-bean name="LoginForm" type="org.apache.forrest.forrestbot.webapp.form.LoginForm">
+      <form-property name="submit" type="java.lang.String" initial="unsubmitted"/>
+      <form-property name="username" type="java.lang.String"/>
+      <form-property name="password" type="java.lang.String"/>
+    </form-bean>
+    <form-bean name="ExecuteForm" type="org.apache.struts.action.DynaActionForm">
+      <form-property name="project" type="java.lang.String"/>
+      <form-property name="build" type="java.lang.String"/>
+      <form-property name="deploy" type="java.lang.String"/>
+    </form-bean>
+  </form-beans>
+  <global-forwards>
+    <forward name="index" path="/summary.do" />
+  </global-forwards>
+  <action-mappings>
+    <!-- these forward to tile definitions, which in turn put the decorations around the content JSP file -->
+    <action type="org.apache.forrest.forrestbot.webapp.action.ViewSummaryAction"
+      path="/summary"
+      name="LoginForm"
+      scope="request"
+      validate="false"
+      input="/summary.jsp">
+        <forward name="Success" path="summary"/>
+        <forward name="Failure" path="summary"/>
+        <forward name="Authorized" path="summaryAuthorized"/>
+    </action>
+    <action type="org.apache.forrest.forrestbot.webapp.action.ViewLogFrameAction" path="/viewlog">
+		<forward name="Success" path="viewlog_frame"/>
+    </action>
+    <action type="org.apache.forrest.forrestbot.webapp.action.ViewLogBodyAction" path="/viewlog_body">
+		<forward name="Success" path="viewlog_body"/>
+    </action>
+    <action type="org.apache.forrest.forrestbot.webapp.action.ViewLogHeaderAction" path="/viewlog_header">
+		<forward name="Success" path="viewlog_header"/>
+    </action>
+    <action type="org.apache.forrest.forrestbot.webapp.action.ExecuteAction"
+      path="/execute"
+      name="ExecuteForm"
+      scope="request"
+      validate="false"
+      input="/summary.jsp">
+        <forward name="Success" path="execute"/>
+    </action>
+    <action type="org.apache.forrest.forrestbot.webapp.action.LogoutAction" path="/logout">
+		<forward name="Success" path="logout"/>
+    </action>
+  </action-mappings>
+  
+  <message-resources parameter="org.apache.forrest.forrestbot.webapp.Resources"/>
+  
+  <plug-in className="org.apache.struts.tiles.TilesPlugin">
+    <set-property value="/WEB-INF/struts-tiles.xml" property="definitions-config" />
+    <set-property value="true" property="definitions-parser-validate" />
+  </plug-in>
+</struts-config>

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/struts-tiles.xml
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/struts-tiles.xml	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/struts-tiles.xml	Tue Mar 16 07:58:12 2004
@@ -1,43 +1,42 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration//EN" "http://jakarta.apache.org/struts/dtds/tiles-config.dtd">
-<tiles-definitions>
-    <definition name="summary" path="/common/layout.jsp">
-        <put name="title" value="Forrestbot Web Interface" direct="true"/>
-        <put name="header" value="/common/header.jsp"/>
-        <put name="welcome" value="/welcome.html"/>
-        <put name="welcome-local" value="/welcome.local.html"/>
-        <put name="login" value="/loginForm.jsp"/>
-        <put name="footer" value="/common/footer.jsp"/>
-        <put name="body-content" value="/summary.jsp"/>
-    </definition>
-    
-    <definition name="summaryAuthorized" extends="summary">
-        <put name="title" value="Forrestbot Web Interfaced - authorized" direct="true"/>
-        <put name="login" value="/commandForm.jsp"/>
-    </definition>
-    
-    <definition name="viewlog_frame" path="/common/viewlog_frame.jsp">
-        <put name="title" value="Forrestbot log" direct="true"/>
-    </definition>
-    
-    <definition name="viewlog_body" path="/viewlog_body.jsp"/>
-    <definition name="viewlog_header" path="/viewlog_header.jsp">
-        <put name="title" value="Forrestbot log" direct="true"/>
-    </definition>
-
-</tiles-definitions>
+<?xml version="1.0"?>
+<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration//EN" "http://jakarta.apache.org/struts/dtds/tiles-config.dtd">
+<tiles-definitions>
+    <definition name="summary" path="/common/layout.jsp">
+        <put name="title" value="Forrestbot Web Interface" direct="true"/>
+        <put name="header" value="/common/header.jsp"/>
+        <put name="welcome" value="/welcome.html"/>
+        <put name="welcome-local" value="/welcome.local.html"/>
+        <put name="login" value="/loginForm.jsp"/>
+        <put name="footer" value="/common/footer.jsp"/>
+        <put name="body-content" value="/summary.jsp"/>
+    </definition>
+    
+    <definition name="summaryAuthorized" extends="summary">
+        <put name="title" value="Forrestbot Web Interfaced - authorized" direct="true"/>
+        <put name="login" value="/commandForm.jsp"/>
+    </definition>
+    
+    <definition name="execute" path="/common/simple.jsp">
+        <put name="title" value="Forrestbot Web Interface" direct="true"/>
+        <put name="header" value="/common/header.jsp"/>
+        <put name="footer" value="/common/footer.jsp"/>
+        <put name="body-content" value="/execute.jsp"/>
+    </definition>
+
+    <definition name="viewlog_frame" path="/common/viewlog_frame.jsp">
+        <put name="title" value="Forrestbot log" direct="true"/>
+    </definition>
+    
+    <definition name="viewlog_body" path="/viewlog_body.jsp"/>
+    <definition name="viewlog_header" path="/viewlog_header.jsp">
+        <put name="title" value="Forrestbot log" direct="true"/>
+    </definition>
+
+    <definition name="logout" path="/common/simple.jsp">
+        <put name="title" value="Forrestbot Web Interface" direct="true"/>
+        <put name="header" value="/common/header.jsp"/>
+        <put name="footer" value="/common/footer.jsp"/>
+        <put name="body-content" value="/logout.jsp"/>
+    </definition>
+
+</tiles-definitions>

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/tld/struts-bean-el.tld
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/tld/struts-bean-el.tld	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/tld/struts-bean-el.tld	Tue Mar 16 07:58:12 2004
@@ -1,217 +1,212 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
-<taglib>
-<tlibversion>1.0</tlibversion>
-<jspversion>1.1</jspversion>
-<shortname>bean</shortname>
-<uri>http://jakarta.apache.org/struts/tags-bean-el</uri>
-<tag>
-<name>include</name>
-<tagclass>org.apache.strutsel.taglib.bean.ELIncludeTag</tagclass>
-<teiclass>org.apache.struts.taglib.bean.IncludeTei</teiclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>anchor</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>forward</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>href</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>id</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>page</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>transaction</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>message</name>
-<tagclass>org.apache.strutsel.taglib.bean.ELMessageTag</tagclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>arg0</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>arg1</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>arg2</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>arg3</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>arg4</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>bundle</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>key</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>locale</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>page</name>
-<tagclass>org.apache.strutsel.taglib.bean.ELPageTag</tagclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>id</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>resource</name>
-<tagclass>org.apache.strutsel.taglib.bean.ELResourceTag</tagclass>
-<teiclass>org.apache.struts.taglib.bean.ResourceTei</teiclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>id</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>input</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>size</name>
-<tagclass>org.apache.strutsel.taglib.bean.ELSizeTag</tagclass>
-<teiclass>org.apache.struts.taglib.bean.SizeTei</teiclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>collection</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>id</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>struts</name>
-<tagclass>org.apache.strutsel.taglib.bean.ELStrutsTag</tagclass>
-<teiclass>org.apache.struts.taglib.bean.StrutsTei</teiclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>id</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>formBean</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>forward</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>mapping</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-</taglib>
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+
+
+
+
+<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
+<taglib>
+<tlibversion>1.0</tlibversion>
+<jspversion>1.1</jspversion>
+<shortname>bean</shortname>
+<uri>http://jakarta.apache.org/struts/tags-bean-el</uri>
+<tag>
+<name>include</name>
+<tagclass>org.apache.strutsel.taglib.bean.ELIncludeTag</tagclass>
+<teiclass>org.apache.struts.taglib.bean.IncludeTei</teiclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>anchor</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>forward</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>href</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>id</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>page</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>transaction</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>message</name>
+<tagclass>org.apache.strutsel.taglib.bean.ELMessageTag</tagclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>arg0</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>arg1</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>arg2</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>arg3</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>arg4</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>bundle</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>key</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>locale</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>page</name>
+<tagclass>org.apache.strutsel.taglib.bean.ELPageTag</tagclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>id</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>resource</name>
+<tagclass>org.apache.strutsel.taglib.bean.ELResourceTag</tagclass>
+<teiclass>org.apache.struts.taglib.bean.ResourceTei</teiclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>id</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>input</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>size</name>
+<tagclass>org.apache.strutsel.taglib.bean.ELSizeTag</tagclass>
+<teiclass>org.apache.struts.taglib.bean.SizeTei</teiclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>collection</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>id</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>struts</name>
+<tagclass>org.apache.strutsel.taglib.bean.ELStrutsTag</tagclass>
+<teiclass>org.apache.struts.taglib.bean.StrutsTei</teiclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>id</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>formBean</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>forward</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>mapping</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+</taglib>
+
+
+

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/tld/struts-html-el.tld
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/tld/struts-html-el.tld	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/tld/struts-html-el.tld	Tue Mar 16 07:58:12 2004
@@ -1,2898 +1,2891 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
-<taglib>
-<tlibversion>1.0</tlibversion>
-<jspversion>1.1</jspversion>
-<shortname>html</shortname>
-<uri>http://jakarta.apache.org/struts/tags-html-el</uri>
-<tag>
-<name>base</name>
-<tagclass>org.apache.strutsel.taglib.html.ELBaseTag</tagclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>target</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>server</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>button</name>
-<tagclass>org.apache.strutsel.taglib.html.ELButtonTag</tagclass>
-<attribute>
-<name>accesskey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>alt</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>altKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>disabled</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>indexed</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onblur</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onchange</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>ondblclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onfocus</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeydown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeypress</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeyup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousedown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousemove</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseout</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseover</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>tabindex</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>title</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>titleKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>cancel</name>
-<tagclass>org.apache.strutsel.taglib.html.ELCancelTag</tagclass>
-<attribute>
-<name>accesskey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>alt</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>altKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>disabled</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onblur</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onchange</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>ondblclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onfocus</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeydown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeypress</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeyup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousedown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousemove</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseout</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseover</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>tabindex</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>title</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>titleKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>checkbox</name>
-<tagclass>org.apache.strutsel.taglib.html.ELCheckboxTag</tagclass>
-<attribute>
-<name>accesskey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>alt</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>altKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>disabled</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>indexed</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onblur</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onchange</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>ondblclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onfocus</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeydown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeypress</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeyup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousedown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousemove</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseout</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseover</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>tabindex</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>title</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>titleKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>errors</name>
-<tagclass>org.apache.strutsel.taglib.html.ELErrorsTag</tagclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>bundle</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>locale</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>file</name>
-<tagclass>org.apache.strutsel.taglib.html.ELFileTag</tagclass>
-<attribute>
-<name>accesskey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>accept</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>alt</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>altKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>disabled</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>indexed</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>maxlength</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onblur</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onchange</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>ondblclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onfocus</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeydown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeypress</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeyup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousedown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousemove</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseout</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseover</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>size</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>tabindex</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>title</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>titleKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>form</name>
-<tagclass>org.apache.strutsel.taglib.html.ELFormTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>action</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>enctype</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>focus</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>focusIndex</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>method</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onreset</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onsubmit</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>target</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>type</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>frame</name>
-<tagclass>org.apache.strutsel.taglib.html.ELFrameTag</tagclass>
-<attribute>
-<name>action</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>anchor</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>forward</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>frameborder</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>frameName</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>href</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>longdesc</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>marginheight</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>marginwidth</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>noresize</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>page</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramName</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramProperty</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramScope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>scrolling</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>title</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>titleKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>transaction</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>hidden</name>
-<tagclass>org.apache.strutsel.taglib.html.ELHiddenTag</tagclass>
-<attribute>
-<name>alt</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>altKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>indexed</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>title</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>titleKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>write</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>html</name>
-<tagclass>org.apache.strutsel.taglib.html.ELHtmlTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>locale</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>xhtml</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>image</name>
-<tagclass>org.apache.strutsel.taglib.html.ELImageTag</tagclass>
-<attribute>
-<name>accesskey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>align</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>alt</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>altKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>border</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>bundle</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>disabled</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>indexed</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>locale</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onblur</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onchange</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>ondblclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onfocus</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeydown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeypress</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeyup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousedown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousemove</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseout</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseover</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>page</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>pageKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>src</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>srcKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>tabindex</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>title</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>titleKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>img</name>
-<tagclass>org.apache.strutsel.taglib.html.ELImgTag</tagclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>accesskey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>align</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>alt</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>altKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>border</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>bundle</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>height</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>hspace</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>imageName</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>ismap</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>locale</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>lowsrc</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>ondblclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeydown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeypress</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeyup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousedown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousemove</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseout</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseover</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>page</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>pageKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramName</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramProperty</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramScope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>src</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>srcKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>title</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>titleKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>usemap</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>vspace</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>width</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>javascript</name>
-<tagclass>org.apache.strutsel.taglib.html.ELJavascriptValidatorTag</tagclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>cdata</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>dynamicJavascript</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>formName</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>method</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>page</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>src</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>staticJavascript</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>htmlComment</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>link</name>
-<tagclass>org.apache.strutsel.taglib.html.ELLinkTag</tagclass>
-<attribute>
-<name>accesskey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>action</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>anchor</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>forward</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>href</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>indexed</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>indexId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>linkName</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onblur</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>ondblclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onfocus</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeydown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeypress</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeyup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousedown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousemove</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseout</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseover</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>page</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramName</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramProperty</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramScope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>tabindex</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>target</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>title</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>titleKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>transaction</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>messages</name>
-<tagclass>org.apache.strutsel.taglib.html.ELMessagesTag</tagclass>
-<teiclass>org.apache.struts.taglib.html.MessagesTei</teiclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>id</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>bundle</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>locale</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>header</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>footer</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>message</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>multibox</name>
-<tagclass>org.apache.strutsel.taglib.html.ELMultiboxTag</tagclass>
-<attribute>
-<name>accesskey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>alt</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>altKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>disabled</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onblur</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onchange</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>ondblclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onfocus</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeydown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeypress</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeyup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousedown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousemove</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseout</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseover</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>tabindex</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>title</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>titleKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>option</name>
-<tagclass>org.apache.strutsel.taglib.html.ELOptionTag</tagclass>
-<attribute>
-<name>bundle</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>disabled</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>key</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>locale</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>options</name>
-<tagclass>org.apache.strutsel.taglib.html.ELOptionsTag</tagclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>collection</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>filter</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>labelName</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>labelProperty</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>optionsCollection</name>
-<tagclass>org.apache.strutsel.taglib.html.ELOptionsCollectionTag</tagclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>filter</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>label</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>password</name>
-<tagclass>org.apache.strutsel.taglib.html.ELPasswordTag</tagclass>
-<attribute>
-<name>accesskey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>alt</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>altKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>disabled</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>indexed</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>maxlength</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onblur</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onchange</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>ondblclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onfocus</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeydown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeypress</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeyup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousedown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousemove</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseout</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseover</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>readonly</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>redisplay</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>size</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>tabindex</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>title</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>titleKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>radio</name>
-<tagclass>org.apache.strutsel.taglib.html.ELRadioTag</tagclass>
-<attribute>
-<name>accesskey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>alt</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>altKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>disabled</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>indexed</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onblur</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onchange</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>ondblclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onfocus</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeydown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeypress</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeyup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousedown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousemove</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseout</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseover</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>tabindex</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>title</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>titleKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>idName</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>reset</name>
-<tagclass>org.apache.strutsel.taglib.html.ELResetTag</tagclass>
-<attribute>
-<name>accesskey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>alt</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>altKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>disabled</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onblur</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onchange</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>ondblclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onfocus</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeydown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeypress</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeyup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousedown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousemove</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseout</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseover</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>tabindex</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>title</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>titleKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>rewrite</name>
-<tagclass>org.apache.strutsel.taglib.html.ELRewriteTag</tagclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>anchor</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>forward</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>href</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>page</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramName</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramProperty</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramScope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>transaction</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>select</name>
-<tagclass>org.apache.strutsel.taglib.html.ELSelectTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>alt</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>altKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>disabled</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>indexed</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>multiple</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onblur</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onchange</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>ondblclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onfocus</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeydown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeypress</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeyup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousedown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousemove</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseout</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseover</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>size</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>tabindex</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>title</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>titleKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>submit</name>
-<tagclass>org.apache.strutsel.taglib.html.ELSubmitTag</tagclass>
-<attribute>
-<name>accesskey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>alt</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>altKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>disabled</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>indexed</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onblur</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onchange</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>ondblclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onfocus</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeydown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeypress</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeyup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousedown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousemove</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseout</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseover</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>tabindex</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>title</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>titleKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>text</name>
-<tagclass>org.apache.strutsel.taglib.html.ELTextTag</tagclass>
-<attribute>
-<name>accesskey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>alt</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>altKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>disabled</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>indexed</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>maxlength</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onblur</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onchange</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>ondblclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onfocus</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeydown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeypress</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeyup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousedown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousemove</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseout</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseover</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>readonly</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>size</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>tabindex</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>title</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>titleKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>textarea</name>
-<tagclass>org.apache.strutsel.taglib.html.ELTextareaTag</tagclass>
-<attribute>
-<name>accesskey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>alt</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>altKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>cols</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>disabled</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>indexed</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onblur</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onchange</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>ondblclick</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onfocus</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeydown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeypress</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onkeyup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousedown</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmousemove</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseout</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseover</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>onmouseup</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>readonly</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>rows</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>style</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleClass</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>styleId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>tabindex</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>title</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>titleKey</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>xhtml</name>
-<tagclass>org.apache.struts.taglib.html.XhtmlTag</tagclass>
-<bodycontent>empty</bodycontent>
-</tag>
-</taglib>
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+
+
+
+
+<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
+<taglib>
+<tlibversion>1.0</tlibversion>
+<jspversion>1.1</jspversion>
+<shortname>html</shortname>
+<uri>http://jakarta.apache.org/struts/tags-html-el</uri>
+<tag>
+<name>base</name>
+<tagclass>org.apache.strutsel.taglib.html.ELBaseTag</tagclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>target</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>server</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>button</name>
+<tagclass>org.apache.strutsel.taglib.html.ELButtonTag</tagclass>
+<attribute>
+<name>accesskey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>alt</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>altKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>disabled</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexed</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onblur</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onchange</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onfocus</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>tabindex</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>cancel</name>
+<tagclass>org.apache.strutsel.taglib.html.ELCancelTag</tagclass>
+<attribute>
+<name>accesskey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>alt</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>altKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>disabled</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onblur</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onchange</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onfocus</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>tabindex</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>checkbox</name>
+<tagclass>org.apache.strutsel.taglib.html.ELCheckboxTag</tagclass>
+<attribute>
+<name>accesskey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>alt</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>altKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>disabled</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexed</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onblur</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onchange</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onfocus</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>tabindex</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>errors</name>
+<tagclass>org.apache.strutsel.taglib.html.ELErrorsTag</tagclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>bundle</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>locale</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>file</name>
+<tagclass>org.apache.strutsel.taglib.html.ELFileTag</tagclass>
+<attribute>
+<name>accesskey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>accept</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>alt</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>altKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>disabled</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexed</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>maxlength</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onblur</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onchange</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onfocus</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>size</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>tabindex</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>form</name>
+<tagclass>org.apache.strutsel.taglib.html.ELFormTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>action</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>enctype</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>focus</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>focusIndex</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>method</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onreset</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onsubmit</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>target</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>type</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>frame</name>
+<tagclass>org.apache.strutsel.taglib.html.ELFrameTag</tagclass>
+<attribute>
+<name>action</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>anchor</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>forward</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>frameborder</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>frameName</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>href</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>longdesc</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>marginheight</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>marginwidth</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>noresize</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>page</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramName</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramProperty</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramScope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>scrolling</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>transaction</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>hidden</name>
+<tagclass>org.apache.strutsel.taglib.html.ELHiddenTag</tagclass>
+<attribute>
+<name>alt</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>altKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexed</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>write</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>html</name>
+<tagclass>org.apache.strutsel.taglib.html.ELHtmlTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>locale</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>xhtml</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>image</name>
+<tagclass>org.apache.strutsel.taglib.html.ELImageTag</tagclass>
+<attribute>
+<name>accesskey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>align</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>alt</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>altKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>border</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>bundle</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>disabled</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexed</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>locale</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onblur</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onchange</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onfocus</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>page</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>pageKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>src</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>srcKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>tabindex</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>img</name>
+<tagclass>org.apache.strutsel.taglib.html.ELImgTag</tagclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>accesskey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>align</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>alt</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>altKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>border</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>bundle</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>height</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>hspace</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>imageName</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>ismap</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>locale</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>lowsrc</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>page</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>pageKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramName</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramProperty</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramScope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>src</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>srcKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>usemap</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>vspace</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>width</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>javascript</name>
+<tagclass>org.apache.strutsel.taglib.html.ELJavascriptValidatorTag</tagclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>cdata</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>dynamicJavascript</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>formName</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>method</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>page</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>src</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>staticJavascript</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>htmlComment</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>link</name>
+<tagclass>org.apache.strutsel.taglib.html.ELLinkTag</tagclass>
+<attribute>
+<name>accesskey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>action</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>anchor</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>forward</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>href</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexed</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>linkName</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onblur</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onfocus</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>page</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramName</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramProperty</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramScope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>tabindex</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>target</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>transaction</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>messages</name>
+<tagclass>org.apache.strutsel.taglib.html.ELMessagesTag</tagclass>
+<teiclass>org.apache.struts.taglib.html.MessagesTei</teiclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>id</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>bundle</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>locale</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>header</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>footer</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>message</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>multibox</name>
+<tagclass>org.apache.strutsel.taglib.html.ELMultiboxTag</tagclass>
+<attribute>
+<name>accesskey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>alt</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>altKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>disabled</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onblur</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onchange</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onfocus</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>tabindex</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>option</name>
+<tagclass>org.apache.strutsel.taglib.html.ELOptionTag</tagclass>
+<attribute>
+<name>bundle</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>disabled</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>key</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>locale</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>options</name>
+<tagclass>org.apache.strutsel.taglib.html.ELOptionsTag</tagclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>collection</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>filter</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>labelName</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>labelProperty</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>optionsCollection</name>
+<tagclass>org.apache.strutsel.taglib.html.ELOptionsCollectionTag</tagclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>filter</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>label</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>password</name>
+<tagclass>org.apache.strutsel.taglib.html.ELPasswordTag</tagclass>
+<attribute>
+<name>accesskey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>alt</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>altKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>disabled</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexed</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>maxlength</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onblur</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onchange</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onfocus</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>readonly</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>redisplay</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>size</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>tabindex</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>radio</name>
+<tagclass>org.apache.strutsel.taglib.html.ELRadioTag</tagclass>
+<attribute>
+<name>accesskey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>alt</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>altKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>disabled</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexed</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onblur</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onchange</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onfocus</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>tabindex</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>idName</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>reset</name>
+<tagclass>org.apache.strutsel.taglib.html.ELResetTag</tagclass>
+<attribute>
+<name>accesskey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>alt</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>altKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>disabled</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onblur</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onchange</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onfocus</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>tabindex</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>rewrite</name>
+<tagclass>org.apache.strutsel.taglib.html.ELRewriteTag</tagclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>anchor</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>forward</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>href</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>page</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramName</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramProperty</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramScope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>transaction</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>select</name>
+<tagclass>org.apache.strutsel.taglib.html.ELSelectTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>alt</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>altKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>disabled</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexed</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>multiple</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onblur</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onchange</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onfocus</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>size</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>tabindex</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>submit</name>
+<tagclass>org.apache.strutsel.taglib.html.ELSubmitTag</tagclass>
+<attribute>
+<name>accesskey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>alt</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>altKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>disabled</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexed</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onblur</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onchange</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onfocus</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>tabindex</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>text</name>
+<tagclass>org.apache.strutsel.taglib.html.ELTextTag</tagclass>
+<attribute>
+<name>accesskey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>alt</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>altKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>disabled</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexed</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>maxlength</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onblur</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onchange</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onfocus</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>readonly</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>size</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>tabindex</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>textarea</name>
+<tagclass>org.apache.strutsel.taglib.html.ELTextareaTag</tagclass>
+<attribute>
+<name>accesskey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>alt</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>altKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>cols</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>disabled</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexed</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onblur</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onchange</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onfocus</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>readonly</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>rows</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>tabindex</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>xhtml</name>
+<tagclass>org.apache.struts.taglib.html.XhtmlTag</tagclass>
+<bodycontent>empty</bodycontent>
+</tag>
+</taglib>
+

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/tld/struts-logic-el.tld
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/tld/struts-logic-el.tld	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/tld/struts-logic-el.tld	Tue Mar 16 07:58:12 2004
@@ -1,378 +1,372 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
-<taglib>
-<tlibversion>1.0</tlibversion>
-<jspversion>1.1</jspversion>
-<shortname>logic</shortname>
-<uri>http://jakarta.apache.org/struts/tags-logic-el</uri>
-<tag>
-<name>forward</name>
-<tagclass>org.apache.strutsel.taglib.logic.ELForwardTag</tagclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>name</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>iterate</name>
-<tagclass>org.apache.strutsel.taglib.logic.ELIterateTag</tagclass>
-<teiclass>org.apache.struts.taglib.logic.IterateTei</teiclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>collection</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>id</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>indexId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>length</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>offset</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>type</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>match</name>
-<tagclass>org.apache.strutsel.taglib.logic.ELMatchTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>cookie</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>expr</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>header</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>location</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>parameter</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>messagesNotPresent</name>
-<tagclass>org.apache.strutsel.taglib.logic.ELMessagesNotPresentTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>message</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>messagesPresent</name>
-<tagclass>org.apache.strutsel.taglib.logic.ELMessagesPresentTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>message</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>notMatch</name>
-<tagclass>org.apache.strutsel.taglib.logic.ELNotMatchTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>cookie</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>expr</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>header</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>location</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>parameter</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>true</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>notPresent</name>
-<tagclass>org.apache.strutsel.taglib.logic.ELNotPresentTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>cookie</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>header</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>parameter</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>role</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>user</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>present</name>
-<tagclass>org.apache.strutsel.taglib.logic.ELPresentTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>cookie</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>header</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>parameter</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>role</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>user</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>redirect</name>
-<tagclass>org.apache.strutsel.taglib.logic.ELRedirectTag</tagclass>
-<attribute>
-<name>anchor</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>forward</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>href</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>page</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramId</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramName</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramProperty</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramScope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-<attribute>
-<name>transaction</name>
-<required>false</required>
-<rtexprvalue>false</rtexprvalue>
-</attribute>
-</tag>
-</taglib>
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+
+
+
+<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
+<taglib>
+<tlibversion>1.0</tlibversion>
+<jspversion>1.1</jspversion>
+<shortname>logic</shortname>
+<uri>http://jakarta.apache.org/struts/tags-logic-el</uri>
+<tag>
+<name>forward</name>
+<tagclass>org.apache.strutsel.taglib.logic.ELForwardTag</tagclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>name</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>iterate</name>
+<tagclass>org.apache.strutsel.taglib.logic.ELIterateTag</tagclass>
+<teiclass>org.apache.struts.taglib.logic.IterateTei</teiclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>collection</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>id</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>length</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>offset</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>type</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>match</name>
+<tagclass>org.apache.strutsel.taglib.logic.ELMatchTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>cookie</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>expr</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>header</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>location</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>parameter</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>messagesNotPresent</name>
+<tagclass>org.apache.strutsel.taglib.logic.ELMessagesNotPresentTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>message</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>messagesPresent</name>
+<tagclass>org.apache.strutsel.taglib.logic.ELMessagesPresentTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>message</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>notMatch</name>
+<tagclass>org.apache.strutsel.taglib.logic.ELNotMatchTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>cookie</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>expr</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>header</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>location</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>parameter</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>true</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>notPresent</name>
+<tagclass>org.apache.strutsel.taglib.logic.ELNotPresentTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>cookie</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>header</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>parameter</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>role</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>user</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>present</name>
+<tagclass>org.apache.strutsel.taglib.logic.ELPresentTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>cookie</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>header</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>parameter</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>role</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>user</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>redirect</name>
+<tagclass>org.apache.strutsel.taglib.logic.ELRedirectTag</tagclass>
+<attribute>
+<name>anchor</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>forward</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>href</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>page</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramId</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramName</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramProperty</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramScope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+<attribute>
+<name>transaction</name>
+<required>false</required>
+<rtexprvalue>false</rtexprvalue>
+</attribute>
+</tag>
+</taglib>
+
+
+

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/web.xml
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/web.xml	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/WEB-INF/web.xml	Tue Mar 16 07:58:12 2004
@@ -1,48 +1,34 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<!DOCTYPE web-app
-PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
-"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
-
-<web-app>
-  <servlet>
-    <servlet-name>action</servlet-name>
-    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
-    <init-param>
-      <param-name>config</param-name>
-      <param-value>/WEB-INF/struts-config.xml</param-value>
-    </init-param>
-    
-    <!--
-    <init-param>
-      <param-name>debug</param-name>
-      <param-value>1</param-value>
-    </init-param>
-    
-    <load-on-startup>2</load-on-startup>
-    -->
-  </servlet>
-  <servlet-mapping>
-    <servlet-name>action</servlet-name>
-    <url-pattern>*.do</url-pattern>
-  </servlet-mapping>
-  <welcome-file-list>
-    <welcome-file>index.jsp</welcome-file>
-    <welcome-file>index.html</welcome-file>
-  </welcome-file-list>
-  
-</web-app>
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!DOCTYPE web-app
+PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
+
+<web-app>
+  <servlet>
+    <servlet-name>action</servlet-name>
+    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
+    <init-param>
+      <param-name>config</param-name>
+      <param-value>/WEB-INF/struts-config.xml</param-value>
+    </init-param>
+    
+    <!--
+    <init-param>
+      <param-name>debug</param-name>
+      <param-value>1</param-value>
+    </init-param>
+    
+    <load-on-startup>2</load-on-startup>
+    -->
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>action</servlet-name>
+    <url-pattern>*.do</url-pattern>
+  </servlet-mapping>
+  <welcome-file-list>
+    <welcome-file>index.jsp</welcome-file>
+    <welcome-file>index.html</welcome-file>
+  </welcome-file-list>
+  
+</web-app>

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/commandForm.jsp
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/commandForm.jsp	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/commandForm.jsp	Tue Mar 16 07:58:12 2004
@@ -1,23 +1,9 @@
-<!--
-  Copyright 2003-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
-
-<html:errors/>
-
-<html:form action="/summary">
-<font color='red'>do cool stuff here</font>
-</html:form>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean-el" prefix="bean-el" %>
+
+<bean-el:message key="login.as" arg0="${username}"/>
+<br/>
+<a href="logout.do"><bean:message key="login.out"/></a>
+<br/>
+<br/>
\ No newline at end of file

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/footer.jsp
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/footer.jsp	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/footer.jsp	Tue Mar 16 07:58:12 2004
@@ -1,15 +0,0 @@
-<!--
-  Copyright 2003-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/header.jsp
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/header.jsp	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/header.jsp	Tue Mar 16 07:58:12 2004
@@ -1,15 +0,0 @@
-<!--
-  Copyright 2003-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/layout.jsp
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/layout.jsp	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/layout.jsp	Tue Mar 16 07:58:12 2004
@@ -1,35 +1,20 @@
-<!--
-  Copyright 2003-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
-<html:html locale="true">
-    <head>
-        <title><tiles:insert attribute="title"/></title>
-    </head>
-    <body bgcolor="#FFFFFF"/>
-
-    <tiles:insert attribute="header"/>
-	<h2>
-		<tiles:insert attribute="title"/>
-	</h2>
-    <tiles:insert attribute="welcome"/>
-    <tiles:insert attribute="welcome-local"/>
-    <tiles:insert attribute="login"/>
-    <tiles:insert attribute="body-content"/>
-    <tiles:insert attribute="footer"/>
-
-    </body>
-</html:html>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
+<html:html locale="true">
+    <head>
+        <title><tiles:insert attribute="title"/></title>
+    </head>
+    <body bgcolor="#FFFFFF"/>
+
+    <tiles:insert attribute="header"/>
+	<h2>
+		<tiles:insert attribute="title"/>
+	</h2>
+    <tiles:insert attribute="welcome"/>
+    <tiles:insert attribute="welcome-local"/>
+    <tiles:insert attribute="login"/>
+    <tiles:insert attribute="body-content"/>
+    <tiles:insert attribute="footer"/>
+
+    </body>
+</html:html>
\ No newline at end of file

Added: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/simple.jsp
==============================================================================
--- (empty file)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/simple.jsp	Tue Mar 16 07:58:12 2004
@@ -0,0 +1,17 @@
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
+<html:html locale="true">
+    <head>
+        <title><tiles:insert attribute="title"/></title>
+    </head>
+    <body bgcolor="#FFFFFF"/>
+
+    <tiles:insert attribute="header"/>
+	<h2>
+		<tiles:insert attribute="title"/>
+	</h2>
+    <tiles:insert attribute="body-content"/>
+    <tiles:insert attribute="footer"/>
+
+    </body>
+</html:html>
\ No newline at end of file

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/viewlog_frame.jsp
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/viewlog_frame.jsp	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/common/viewlog_frame.jsp	Tue Mar 16 07:58:12 2004
@@ -1,30 +1,15 @@
-<!--
-  Copyright 2003-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
-<html:html locale="true">
-    <head>
-        <title><tiles:insert attribute="title"/></title>
-    </head>
-    <frameset rows="40,*">
-        <html:frame framename="header" page="/viewlog_header.do" paramid="project" paramname="project"/>
-        <html:frame framename="body" page="/viewlog_body.do" paramid="project" paramname="project"/>
-    </frameset>
-    <noframes>
-      <html:link page="/viewlog_header.do" paramid="project" paramname="project">header</html:link>
-      <html:link page="/viewlog_body.do" paramid="project" paramname="project">body</html:link>
-    </noframes>
-  </html:html>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
+<html:html locale="true">
+    <head>
+        <title><tiles:insert attribute="title"/></title>
+    </head>
+    <frameset rows="40,*">
+        <html:frame framename="header" page="/viewlog_header.do" paramid="project" paramname="project"/>
+        <html:frame framename="body" page="/viewlog_body.do" paramid="project" paramname="project"/>
+    </frameset>
+    <noframes>
+      <html:link page="/viewlog_header.do" paramid="project" paramname="project">header</html:link>
+      <html:link page="/viewlog_body.do" paramid="project" paramname="project">body</html:link>
+    </noframes>
+  </html:html>
\ No newline at end of file

Added: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/execute.jsp
==============================================================================
--- (empty file)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/execute.jsp	Tue Mar 16 07:58:12 2004
@@ -0,0 +1,14 @@
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean-el" prefix="bean-el" %>
+
+<html:errors/>
+
+<logic:messagesNotPresent> 
+	<bean-el:message key="execute.started" arg0="${project}"/>
+</logic:messagesNotPresent>
+<br/>
+<html:link page="/summary.do"><bean:message key="back.to.main"/></html:link>
+<br/>
+<html:link page="/viewlog.do" paramid="project" paramname="project"><bean-el:message key="view.log" arg0="${project}"/></html:link>

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/index.jsp
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/index.jsp	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/index.jsp	Tue Mar 16 07:58:12 2004
@@ -1,18 +1,3 @@
-<!--
-  Copyright 2003-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
-
-<logic:forward name="index"/>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
+
+<logic:forward name="index"/>

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/loginForm.jsp
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/loginForm.jsp	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/loginForm.jsp	Tue Mar 16 07:58:12 2004
@@ -1,50 +1,35 @@
-<!--
-  Copyright 2003-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
-
-
-<html:errors/>
-
-<html:form action="/summary" focus="username">
-<table border="0">
-    <tr>
-        <th>
-            <bean:message key="prompt.username"/>
-        </th>
-        <td>
-            <html:text property="username" size="16"/>
-        </td>
-    </tr>
-    <tr>
-        <th>
-            <bean:message key="prompt.password"/>
-        </th>
-        <td>
-            <html:password property="password" size="16"/>
-        </td>
-    </tr>
-    <tr>
-        <td colspan="2">
-        	<input type="hidden" name="submit"/>
-            <html:submit>
-                <bean:message key="button.submit"/>
-            </html:submit>
-        </td>
-    </tr>
-</table>
-
-</html:form>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
+
+
+<html:errors/>
+
+<html:form action="/summary" focus="username">
+<table border="0">
+    <tr>
+        <th>
+            <bean:message key="prompt.username"/>
+        </th>
+        <td>
+            <html:text property="username" size="16"/>
+        </td>
+    </tr>
+    <tr>
+        <th>
+            <bean:message key="prompt.password"/>
+        </th>
+        <td>
+            <html:password property="password" size="16"/>
+        </td>
+    </tr>
+    <tr>
+        <td colspan="2">
+        	<input type="hidden" name="submit"/>
+            <html:submit>
+                <bean:message key="button.submit"/>
+            </html:submit>
+        </td>
+    </tr>
+</table>
+
+</html:form>
\ No newline at end of file

Added: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/logout.jsp
==============================================================================
--- (empty file)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/logout.jsp	Tue Mar 16 07:58:12 2004
@@ -0,0 +1,10 @@
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
+
+<br/>
+<html:errors/>
+<br/>
+<bean:message key="login.out.done"/>
+<br/>
+<br/>
+<html:link page="/summary.do"><bean:message key="back.to.main"/></html:link>

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/summary.jsp
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/summary.jsp	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/summary.jsp	Tue Mar 16 07:58:12 2004
@@ -1,107 +1,77 @@
-<!--
-  Copyright 2003-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
-
-<%@ page import="org.apache.forrest.forrestbot.webapp.dto.*" %>
-
-
-<bean:message key="summary.current.time"/> <fmt:formatDate value="${serverTime}" type="BOTH"/>
-<table>
-<tr>
-	<th><bean:message key="summary.site"/></th>
-	<th><bean:message key="summary.status"/></th>
-	<th><bean:message key="summary.log"/></th>
-	<th><bean:message key="summary.date"/></th>
-</tr>
-<logic:iterate id="project" name="projects" type="ProjectDTO">
-	<tr>
-		<td>
-			<a href="<c:out value="${project.url}"/>"><c:out value="${project.name}"/></a>
-		</td>
-        <c:choose>
-        	<c:when test="${project.status == Constants.STATUS_FAILED}">
-				<td bgcolor='red'>
-					<bean:message key="summary.status.failed"/>
-				</td>
-			</c:when>
-			<c:when test="${project.status == Constants.STATUS_SUCCESS}">
-				<td>
-					<bean:message key="summary.status.success"/>
-				</td>
-			</c:when>
-			<c:when test="${project.status == Constants.STATUS_RUNNING}">
-				<td bgcolor='green'>
-					<bean:message key="summary.status.running"/>
-				</td>
-			</c:when>
-			<c:otherwise>
-				<td bgcolor='yellow'>
-					<bean:message key="summary.status.unknown"/>
-				</td>  
-			</c:otherwise>
-		</c:choose>
-		<td>
-		<%--
-			<a href="<c:out value="${project.logUrl}"/>"><bean:message key="summary.log"/></a>
-		--%>
-			<c:if test="${project.logged}">
-				<html:link page="/viewlog.do" paramid="project" paramname="project" paramproperty="name"><bean:message key="summary.log"/></html:link>
-			</c:if>
-		</td>
-		<td>
-			<c:if test="${project.lastBuilt != null}">
-				<fmt:formatDate value="${project.lastBuilt}" type="BOTH"/>
-			</c:if>
-		</td>
-	</tr>
-</logic:iterate>
-</table>
-
-<%--
-
-<form method="POST">
-	Username: <input type="text" name="username" value="<%= (username!=null?username:"")%>"> <br>
-	Password: <input type="password" name="passwd" value="<%=(password!=null?password:"")%>"> <br>
-	<% if (privs != null) { %>
-		Select a module:
-		<select name="module">
-			<%
-			for (int i=0; i<sites.size(); i++) {
-				String sitename = (String)sites.get(i);
-			if (privs.contains(sitename)) {
-				out.println("<option value='"+sitename+"'>"+sitename);
-			}
-			}
-			%>
-		</select>
-		<br>
-		Select an action:
-		<% if (privs.contains("build")) { %>
-			<input type="submit" name="action" value="build"/>
-		<% } %>
-		<% if (privs.contains("deploy")) { %>
-			<input type="submit" name="action" value="deploy"/>
-		<% } %>
-	<% } else if (privs == null) { %>
-		<input type="submit" value="login">
-	<% } %>
-</form>
-
---%>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
+<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
+
+<%@ page import="org.apache.forrest.forrestbot.webapp.dto.*" %>
+
+
+<bean:message key="summary.current.time"/> <fmt:formatDate value="${serverTime}" type="BOTH"/>
+<table>
+<tr>
+	<th><bean:message key="summary.site"/></th>
+	<th><bean:message key="summary.status"/></th>
+	<th><bean:message key="summary.log"/></th>
+	<th><bean:message key="summary.date"/></th>
+	<c:if test="${auth}">
+		<th><bean:message key="summary.execute"/></th>
+	</c:if>
+</tr>
+<logic:iterate id="project" name="projects" type="ProjectDTO">
+	<tr>
+		<td>
+			<a href="<c:out value="${project.url}"/>"><c:out value="${project.name}"/></a>
+		</td>
+        <c:choose>
+        	<c:when test="${project.status == Constants.STATUS_FAILED}">
+				<td bgcolor='red'>
+					<bean:message key="summary.status.failed"/>
+				</td>
+			</c:when>
+			<c:when test="${project.status == Constants.STATUS_SUCCESS}">
+				<td>
+					<bean:message key="summary.status.success"/>
+				</td>
+			</c:when>
+			<c:when test="${project.status == Constants.STATUS_RUNNING}">
+				<td bgcolor='green'>
+					<bean:message key="summary.status.running"/>
+				</td>
+			</c:when>
+			<c:otherwise>
+				<td bgcolor='yellow'>
+					<bean:message key="summary.status.unknown"/>
+				</td>  
+			</c:otherwise>
+		</c:choose>
+		<td>
+			<c:if test="${project.logged}">
+				<html:link page="/viewlog.do" paramid="project" paramname="project" paramproperty="name"><bean:message key="summary.log"/></html:link>
+			</c:if>
+		</td>
+		<td>
+			<c:if test="${project.lastBuilt != null}">
+				<fmt:formatDate value="${project.lastBuilt}" type="BOTH"/>
+			</c:if>
+		</td>
+		<c:if test="${auth}">
+			<td>
+				<html:form action="/execute">
+					<input type="hidden" name="project" value="<c:out value="${project.name}"/>"/>
+					<c:if test="${project.buildable}">
+						<html:submit property="build">
+			                <bean:message key="summary.execute.build"/>
+			            </html:submit>
+			        </c:if>
+					<c:if test="${project.deployable}">
+						<html:submit property="deploy">
+			                <bean:message key="summary.execute.deploy"/>
+			            </html:submit>
+			        </c:if>
+			    </html:form>
+    	    </td>
+	    </c:if>
+	</tr>
+</logic:iterate>
+</table>
\ No newline at end of file

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/viewlog_body.jsp
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/viewlog_body.jsp	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/viewlog_body.jsp	Tue Mar 16 07:58:12 2004
@@ -1,47 +1,32 @@
-<!--
-  Copyright 2003-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
-
-<%@ page import="java.io.BufferedReader" %>
-<%@ page import="java.io.FileReader" %>
-<%@ page import="org.apache.log4j.Logger" %>
-
-<%
-Logger log = Logger.getLogger(request.getRequestURI());
-%>
-
-<html:errors/>
-
-<pre>
-<%--
-I don't know of a way to put a bean variable into a jsp:include page attribute
-nor how to use tiles to include an absolute file
-so we include it the old fashioned way
---%>
-<%
-String logfile = (String)request.getAttribute("logfile");
-if (logfile != null)
-{
-	log.debug(logfile);
-	BufferedReader in = new BufferedReader(new FileReader(logfile));
-	String line;
-	while ((line = in.readLine()) != null) {
-		out.println(line);
-	}
-}
-%>
-</pre>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
+
+<%@ page import="java.io.BufferedReader" %>
+<%@ page import="java.io.FileReader" %>
+<%@ page import="org.apache.log4j.Logger" %>
+
+<%
+Logger log = Logger.getLogger(request.getRequestURI());
+%>
+
+<html:errors/>
+
+<pre>
+<%--
+I don't know of a way to put a bean variable into a jsp:include page attribute
+nor how to use tiles to include an absolute file
+so we include it the old fashioned way
+--%>
+<%
+String logfile = (String)request.getAttribute("logfile");
+if (logfile != null)
+{
+	log.debug(logfile);
+	BufferedReader in = new BufferedReader(new FileReader(logfile));
+	String line;
+	while ((line = in.readLine()) != null) {
+		out.println(line);
+	}
+}
+%>
+</pre>

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/viewlog_header.jsp
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/viewlog_header.jsp	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/viewlog_header.jsp	Tue Mar 16 07:58:12 2004
@@ -1,33 +1,18 @@
-<!--
-  Copyright 2003-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean-el" prefix="bean-el" %>
-<html:html locale="true">
-    <head>
-    </head>
-    <body bgcolor="#FFFFFF"/>
-    <table border="0" width="100%" cellpadding="0" cellspacing="0">
-    <tr><td>
-        <html:link target="_top" page="/"><bean:message key="log.back"/></html:link>
-    </td><td align="center">
-        <bean-el:message key="log.refresh" arg0="${refreshrate}"/>
-    </td><td align="right">
-        <html:link target="body" page="/viewlog_body.do" paramid="project" paramname="project"><bean:message key="log.force.refresh"/></html:link>
-    </td></tr>
-    </table>
-    </body>
-</html:html>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean-el" prefix="bean-el" %>
+<html:html locale="true">
+    <head>
+    </head>
+    <body bgcolor="#FFFFFF"/>
+    <table border="0" width="100%" cellpadding="0" cellspacing="0">
+    <tr><td>
+        <html:link target="_top" page="/"><bean:message key="log.back"/></html:link>
+    </td><td align="center">
+        <bean-el:message key="log.refresh" arg0="${refreshrate}"/>
+    </td><td align="right">
+        <html:link target="body" page="/viewlog_body.do" paramid="project" paramname="project"><bean:message key="log.force.refresh"/></html:link>
+    </td></tr>
+    </table>
+    </body>
+</html:html>
\ No newline at end of file

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/welcome.html
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/welcome.html	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/welcome.html	Tue Mar 16 07:58:12 2004
@@ -1,31 +1,16 @@
-<!--
-  Copyright 2003-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<p>
-This site contains automatically updated and built versions of websites built
-with the latest <a href="http://xml.apache.org/forrest/">Forrest</a>. It aims
-to provide a service similar to <a
-  href="http://jakarta.apache.org/gump/">Gump</a>, but for websites.  Hosted
-projects' source is automatically checked out and the HTML rebuilt periodically.
-</p>
-<p>
-In addition, if you have just made a site update and are itching to see the
-result, site builds can be triggered manually.  Certain users can also
-trigger a publish of the generated files.
-</p>
-<p>
-To set up the Forrestbot Web Inteface for your own collection of projects, checkout the source and read WEB-INF/README.txt
-</p>
-<hr>
+<p>
+This site contains automatically updated and built versions of websites built
+with the latest <a href="http://xml.apache.org/forrest/">Forrest</a>. It aims
+to provide a service similar to <a
+  href="http://jakarta.apache.org/gump/">Gump</a>, but for websites.  Hosted
+projects' source is automatically checked out and the HTML rebuilt periodically.
+</p>
+<p>
+In addition, if you have just made a site update and are itching to see the
+result, site builds can be triggered manually.  Certain users can also
+trigger a publish of the generated files.
+</p>
+<p>
+To set up the Forrestbot Web Inteface for your own collection of projects, checkout the source and read README.txt
+</p>
+<hr>
\ No newline at end of file

Modified: xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/welcome.local.html
==============================================================================
--- xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/welcome.local.html	(original)
+++ xml/forrest/trunk/scratchpad/forrestbot2/webapp/src/webapp/welcome.local.html	Tue Mar 16 07:58:12 2004
@@ -1,24 +1,9 @@
-<!--
-  Copyright 2003-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<p>
-To request a username/password that allows you to build and/or deploy your
-project's site, please mail <a href="mailto:site.administrator">Insert
-Site Administrator Here</a>.
-</p>
-<p>
-This file is welcome.local.html, please modify to suit your installation
-</p>
-<hr>
+<p>
+To request a username/password that allows you to build and/or deploy your
+project's site, please mail <a href="mailto:site.administrator">Insert
+Site Administrator Here</a>.
+</p>
+<p>
+This file is welcome.local.html, please modify to suit your installation
+</p>
+<hr>
\ No newline at end of file

Mime
View raw message