You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ca...@apache.org on 2006/08/07 21:32:39 UTC

svn commit: r429446 - in /maven/shared/trunk/maven-user: ./ maven-user-model/ maven-user-model/src/main/java/org/apache/maven/user/model/impl/ maven-user-webapp/src/ maven-user-webapp/src/main/ maven-user-webapp/src/main/resources/ maven-user-webapp/sr...

Author: carlos
Date: Mon Aug  7 12:32:38 2006
New Revision: 429446

URL: http://svn.apache.org/viewvc?rev=429446&view=rev
Log:
[CONTINUUM-800] Use maven-user project for user management
Submitted By: Henry Isidro, Teodoro Cue

Added:
    maven/shared/trunk/maven-user/maven-user-webapp/src/
    maven/shared/trunk/maven-user/maven-user-webapp/src/main/
    maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/
    maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/extremecomponents.properties   (with props)
    maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/localization/
    maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/localization/MavenUser.properties   (with props)
    maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/xwork.xml   (with props)
    maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/
    maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/WEB-INF/
    maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/WEB-INF/extremecomponents.tld   (with props)
    maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/WEB-INF/web.xml   (with props)
    maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/addUserRole.jsp   (with props)
    maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/deleteUser.jsp   (with props)
    maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/editUser.jsp   (with props)
    maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/error.jsp   (with props)
    maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/users.jsp   (with props)
Modified:
    maven/shared/trunk/maven-user/maven-user-model/pom.xml
    maven/shared/trunk/maven-user/maven-user-model/src/main/java/org/apache/maven/user/model/impl/DefaultUserManager.java
    maven/shared/trunk/maven-user/pom.xml

Modified: maven/shared/trunk/maven-user/maven-user-model/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-model/pom.xml?rev=429446&r1=429445&r2=429446&view=diff
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-model/pom.xml (original)
+++ maven/shared/trunk/maven-user/maven-user-model/pom.xml Mon Aug  7 12:32:38 2006
@@ -21,6 +21,14 @@
       <artifactId>persistence-api</artifactId>
       <version>1.0</version>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-jdo2</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+    </dependency>
   </dependencies>
 
   <build>

Modified: maven/shared/trunk/maven-user/maven-user-model/src/main/java/org/apache/maven/user/model/impl/DefaultUserManager.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-model/src/main/java/org/apache/maven/user/model/impl/DefaultUserManager.java?rev=429446&r1=429445&r2=429446&view=diff
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-model/src/main/java/org/apache/maven/user/model/impl/DefaultUserManager.java (original)
+++ maven/shared/trunk/maven-user/maven-user-model/src/main/java/org/apache/maven/user/model/impl/DefaultUserManager.java Mon Aug  7 12:32:38 2006
@@ -18,6 +18,8 @@
 
 import java.util.List;
 
+import javax.jdo.PersistenceManager;
+import javax.jdo.PersistenceManagerFactory;
 import javax.persistence.EntityExistsException;
 import javax.persistence.EntityNotFoundException;
 
@@ -25,6 +27,13 @@
 import org.apache.maven.user.model.User;
 import org.apache.maven.user.model.UserGroup;
 import org.apache.maven.user.model.UserManager;
+import org.apache.maven.user.model.Permission;
+
+import org.codehaus.plexus.jdo.JdoFactory;
+import org.codehaus.plexus.jdo.PlexusJdoUtils;
+import org.codehaus.plexus.jdo.PlexusObjectNotFoundException;
+import org.codehaus.plexus.jdo.PlexusStoreException;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
 
 /**
  * Default implementation of the {@link UserManager} interface.
@@ -35,63 +44,102 @@
 public class DefaultUserManager
     implements UserManager
 {
-
+    /**
+    * @plexus.requirement
+    */
+    private JdoFactory jdoFactory;
+    
+    private PersistenceManagerFactory pmf;
+       
+    // ----------------------------------------------------------------------
+    // Component Lifecycle
+    // ----------------------------------------------------------------------
+    
+    public void initialize()
+        throws InitializationException
+    {
+        pmf = jdoFactory.getPersistenceManagerFactory();
+    }
+   
     public void addUser( User user )
         throws EntityExistsException
     {
-        // TODO Auto-generated method stub
-
+        addObject( user );
     }
 
     public void addUserGroup( UserGroup userGroup )
         throws EntityExistsException
     {
-        // TODO Auto-generated method stub
-
+        addObject( userGroup );
     }
 
     public PasswordEncoder getPasswordEncoder()
     {
-        // TODO Auto-generated method stub
         return null;
     }
 
     public User getUser( int userId )
     {
-        // TODO Auto-generated method stub
-        return null;
+        User user = null;
+        
+        try
+        {
+            user = ( User ) getObjectById( User.class, userId );
+        }
+        catch ( PlexusStoreException pse )
+        {
+            //log exception
+        }
+        catch ( EntityExistsException eee )
+        {
+            return null;
+        }
+        return user;
     }
 
     public UserGroup getUserGroup( int userGroupId )
     {
-        // TODO Auto-generated method stub
-        return null;
+        UserGroup userGroup = null;
+        
+        try
+        {
+            userGroup = (UserGroup) getObjectById( UserGroup.class, userGroupId );
+        }
+        catch ( PlexusStoreException pse )
+        {
+            //log exception
+        }
+        catch ( EntityExistsException eee )
+        {
+            return null;
+        }
+        return userGroup;
     }
 
     public List getUserGroups()
     {
-        // TODO Auto-generated method stub
-        return null;
+        return getAllObjectsDetached( UserGroup.class );
     }
 
     public List getUsers()
     {
-        // TODO Auto-generated method stub
-        return null;
+        return getAllObjectsDetached( User.class );
     }
 
     public void removeUser( int userId )
         throws EntityNotFoundException
     {
-        // TODO Auto-generated method stub
-
+        User user = getUser( userId );
+        
+        removeObject( user );
     }
 
     public void removeUserGroup( int userGroupId )
         throws EntityNotFoundException
     {
-        // TODO Auto-generated method stub
-
+        UserGroup userGroup = getUserGroup( userGroupId );
+        
+        removeObject( userGroup );
     }
 
     public void setPasswordEncoder( PasswordEncoder passwordEncoder )
@@ -103,21 +151,95 @@
     public void updateUser( User user )
         throws EntityNotFoundException
     {
-        // TODO Auto-generated method stub
-
+        try
+        {
+            updateObject( user );
+        }
+        catch ( PlexusStoreException pse )
+        {
+            //log exception
+        }
     }
 
     public void updateUserGroup( UserGroup userGroup )
         throws EntityNotFoundException
     {
-        // TODO Auto-generated method stub
-
+        try
+        {
+            updateObject( userGroup );
+        }
+        catch ( PlexusStoreException pse )
+        {
+            //log exception
+        }
     }
 
     public List getPermissions()
     {
-        // TODO Auto-generated method stub
-        return null;
+        return getAllObjectsDetached( Permission.class );
+    }
+    
+    private Object addObject( Object object )
+    {
+        return PlexusJdoUtils.addObject( getPersistenceManager(), object );
+    }
+    
+    private Object getObjectById( Class clazz, int id )
+        throws PlexusStoreException, EntityNotFoundException
+    {
+        return getObjectById( clazz, id, null );
+    }
+    
+    private Object getObjectById( Class clazz, int id, String fetchGroup )
+        throws PlexusStoreException, EntityNotFoundException
+    {
+        try
+        {
+            return PlexusJdoUtils.getObjectById( getPersistenceManager(), clazz, id, fetchGroup );
+        }
+        catch ( PlexusObjectNotFoundException e )
+        {
+            throw new EntityNotFoundException( e.getMessage() );
+        }
+        catch ( PlexusStoreException e )
+        {
+            throw new PlexusStoreException( e.getMessage(), e );
+        }
+    }
+    
+    private List getAllObjectsDetached( Class clazz )
+    {
+        return getAllObjectsDetached( clazz, null );
+    }
+
+    private List getAllObjectsDetached( Class clazz, String fetchGroup )
+    {
+        return getAllObjectsDetached( clazz, null, fetchGroup );
+    }
+
+    private List getAllObjectsDetached( Class clazz, String ordering, String fetchGroup )
+    {
+        return PlexusJdoUtils.getAllObjectsDetached( getPersistenceManager(), clazz, ordering, fetchGroup );
+    }
+    
+    private void removeObject( Object o )
+    {
+        PlexusJdoUtils.removeObject( getPersistenceManager(), o );
+    }
+    
+    private void updateObject( Object object )
+        throws PlexusStoreException
+    {
+        PlexusJdoUtils.updateObject( getPersistenceManager(), object );
     }
+    
+    private PersistenceManager getPersistenceManager()
+    {
+        PersistenceManager pm = pmf.getPersistenceManager();
+
+        pm.getFetchPlan().setMaxFetchDepth( -1 );
+
+        return pm;
+    } 
 
 }

Added: maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/extremecomponents.properties
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/extremecomponents.properties?rev=429446&view=auto
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/extremecomponents.properties (added)
+++ maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/extremecomponents.properties Mon Aug  7 12:32:38 2006
@@ -0,0 +1,6 @@
+table.format_date=MMM dd, yyyy hh:mm:ss aaa z
+column.cell.date=org.apache.maven.continuum.web.view.commons.DateCell
+
+table.border=1
+table.cellspacing=2
+table.cellpadding=3

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/extremecomponents.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/extremecomponents.properties
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/localization/MavenUser.properties
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/localization/MavenUser.properties?rev=429446&view=auto
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/localization/MavenUser.properties (added)
+++ maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/localization/MavenUser.properties Mon Aug  7 12:32:38 2006
@@ -0,0 +1,40 @@
+// ----------------------------------------------------------------------
+// COMMONS
+// ----------------------------------------------------------------------
+webwork.date=MMM dd, yyyy hh:mm:ss aaa z
+
+message.success = Success
+message.failed = Failed
+message.error = Error
+enabled = Enabled
+disabled = Disabled
+cancel = Cancel
+submit = Submit
+edit = Edit
+delete = Delete
+save = Save
+add = Add
+workingCopy = Working&nbsp;Copy
+builds = Builds
+info = Info
+or = OR
+
+// ----------------------------------------------------------------------
+// Page: Add/Edit/DeleteUsers
+// ----------------------------------------------------------------------
+
+user.username = User Name
+user.password = Password
+user.email = Email Address
+users.page.title = Continuum - Users List
+users.section.title = Users List
+addUser.page.title = Continuum - Add User
+addUser.section.title = Add User
+editUser.page.title = Continuum - Edit User
+editUser.section.title = Edit User
+deleteUser.page.title = Continuum - Delete User
+deleteUser.section.title = Delete User
+deleteUser.confirmation.message = Are you sure you want to delete the user "{0}"?
+role.page.title = Continuum - Roles List
+role.section.title = Roles List
+role.rolename = Roles

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/localization/MavenUser.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/localization/MavenUser.properties
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/xwork.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/xwork.xml?rev=429446&view=auto
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/xwork.xml (added)
+++ maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/xwork.xml Mon Aug  7 12:32:38 2006
@@ -0,0 +1,45 @@
+<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
+
+<xwork>
+  <include file="webwork-default.xml"/>
+  <package name="default" extends="webwork-default">
+
+    <interceptors>
+      <interceptor-stack name="defaultContinuumStack">
+        <interceptor-ref name="prepare"/>
+        <interceptor-ref name="servlet-config"/>
+        <interceptor-ref name="chain"/>
+        <interceptor-ref name="model-driven"/>
+        <interceptor-ref name="component"/>
+        <interceptor-ref name="fileUpload"/>
+        <interceptor-ref name="static-params"/>
+        <interceptor-ref name="params"/>
+        <!-- interceptor-ref name="conversionError"/ -->
+        <interceptor-ref name="validation"/>
+        <interceptor-ref name="workflow"/>
+      </interceptor-stack>
+    </interceptors>
+
+    <default-interceptor-ref name="defaultContinuumStack"/>
+
+    <global-results>
+      <result name="error">error.jsp</result>
+    </global-results>
+
+    <action name="users" class="org.apache.maven.user.controller.action.UsersAction">
+      <result name="success">users.jsp</result>
+    </action>
+
+    <action name="editUser" class="org.apache.maven.user.controller.action.EditUserAction">
+      <result name="input">editUser.jsp</result>
+      <result name="permissions">addUserRole.jsp</result>
+      <result name="success" type="chain">users</result>
+    </action>
+
+    <action name="deleteUser" class="org.apache.maven.user.controller.action.DeleteUserAction">
+      <result name="delete">deleteUser.jsp</result>
+      <result name="success" type="chain">users</result>
+    </action>
+
+  </package>
+</xwork>

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/xwork.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/resources/xwork.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/WEB-INF/extremecomponents.tld
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/WEB-INF/extremecomponents.tld?rev=429446&view=auto
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/WEB-INF/extremecomponents.tld (added)
+++ maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/WEB-INF/extremecomponents.tld Mon Aug  7 12:32:38 2006
@@ -0,0 +1,1074 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+
+<taglib>
+
+  <tlib-version>1.0</tlib-version>
+  <jsp-version>1.2</jsp-version>
+  <short-name>eXtremeComponents</short-name>
+
+  <uri>http://www.extremecomponents.org</uri>
+
+  <display-name>eXtremeComponents</display-name>
+  <description><![CDATA[Display eXtremeComponents information.]]></description>
+
+  <tag>
+
+    <name>column</name>
+    <tag-class>org.extremecomponents.table.tag.ColumnTag</tag-class>
+    <body-content>JSP</body-content>
+    <display-name>ColumnTag</display-name>
+    <description>
+      <![CDATA[The container which holds all the column specific information. A copy of each column will be fed to the Model.]]></description>
+
+    <attribute>
+      <name>property</name>
+      <required>true</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The bean attribute to use for the column.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>value</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[The value for the column. If the value attribute is not specifed then it will be retrieved automatically by using the property attribute. The value can also be defined within the column body.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>title</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[The verbage that will display on the table column header. If title is not specified then it will default to the name of the property, changing the camelcase syntax to separate words.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>styleClass</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The css class style sheet.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>headerClass</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[The css class style sheet used to define what the table header row column looks like.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>headerStyle</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The css class style sheet.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>filterClass</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[The css class style sheet used to define what the table filter row column looks like.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>filterStyle</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The css class style sheet.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>cell</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Displays the column. The valid values are display, currency, number, and date. The default value is display. The cell can also be a fully qualified class name to a custom cell. Be sure to implement the Cell interface or extend BaseCell if making a custom cell.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>filterCell</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Displays the filter column. The valid values are filter and droplist. The default is filter. The cell can also be a fully qualified class name to a custom cell.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>headerCell</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Displays the header column. The default is header. The cell can also be a fully qualified class name to a custom cell.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>format</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[The specific way the column is displayed. For instance if used with a date cell then the format can be MM/dd/yyyy.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>parse</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Used if the format needs to be interpreted so the correct cell can be resolved. For instance, a date needs to be parsed in the specific format, such as MM-dd-yyyy.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>filterable</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Specify whether or not the column should be filterable. Acceptable values are true or false.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>sortable</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Specify whether or not the column should be sortable. The acceptable values are true or false.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>width</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[Specify the column width.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>style</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The css inline style sheet.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>showTotal</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Specify whether or not the total for the column should be displayed. The acceptable values are true or false.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>viewsAllowed</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The comma separated list of Views that this column will be used in.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>viewsDenied</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The comma separated list of Views that this column will be used in.]]></description>
+
+    </attribute>
+  </tag>
+  <tag>
+
+    <name>row</name>
+    <tag-class>org.extremecomponents.table.tag.RowTag</tag-class>
+    <body-content>JSP</body-content>
+    <display-name>RowTag</display-name>
+    <description><![CDATA[The container which holds all the row specific information.]]></description>
+
+    <attribute>
+      <name>onclick</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The javascript onclick action]]></description>
+
+    </attribute>
+    <attribute>
+      <name>onmouseout</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The javascript onmouseout action]]></description>
+
+    </attribute>
+    <attribute>
+      <name>onmouseover</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The javascript onmouseover action]]></description>
+
+    </attribute>
+    <attribute>
+      <name>styleClass</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The css class style sheet.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>style</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The css inline style sheet.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>highlightRow</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[Used to turn the highlight feature on and off. The default is false.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>highlightClass</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The css class style sheet.]]></description>
+
+    </attribute>
+  </tag>
+  <tag>
+
+    <name>exportCsv</name>
+    <tag-class>org.extremecomponents.table.tag.ExportCsvTag</tag-class>
+    <body-content>JSP</body-content>
+    <display-name>ExportCsvTag</display-name>
+    <description><![CDATA[Export data for a csv view.]]></description>
+
+    <attribute>
+      <name>delimiter</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[What to use as the file delimiter. The default is a comma.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>fileName</name>
+      <required>true</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The name of the export file. Example presidents.pdf]]></description>
+
+    </attribute>
+    <attribute>
+      <name>imageName</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The image name. Example pdf]]></description>
+
+    </attribute>
+    <attribute>
+      <name>view</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[The type of the export. Types are pdf, xls, or csv. Works with the View interface.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>tooltip</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The tooltip that shows up when you mouseover the export image.]]></description>
+
+    </attribute>
+  </tag>
+  <tag>
+
+    <name>input</name>
+    <tag-class>org.extremecomponents.table.tag.InputTag</tag-class>
+    <body-content>JSP</body-content>
+    <display-name>InputTag</display-name>
+    <description><![CDATA[Put hidden field, submit or button in the form.]]></description>
+
+    <attribute>
+      <name>type</name>
+      <required>true</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[The type of html input to create. The valid types are hidden, button, and submit.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>name</name>
+      <required>true</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The name of the field.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>value</name>
+      <required>true</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The value of the field.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>onclick</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The javascript to invoke when clicking on a submit or button.]]></description>
+
+    </attribute>
+  </tag>
+  <tag>
+
+    <name>table</name>
+    <tag-class>org.extremecomponents.table.tag.TableTag</tag-class>
+    <body-content>JSP</body-content>
+    <display-name>TableTag</display-name>
+    <description>
+      <![CDATA[The container which holds all the main table information. Will also hold global information if needed. The table tag is copied into the Table and encapsulated in the Model.]]></description>
+
+    <attribute>
+      <name>id</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The table id attribute.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>collection</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[Identify the List of Beans or the List of Maps for the table.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>action</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[The action is the URI that will be called when the filter, sort and pagination is used.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>tableId</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The unique identifier for the table.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>items</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The collection that will be retrieved.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>var</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The name of the variable to hold the current bean.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>scope</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[The scope (page, request, session, application) to find the List of beans or List of Maps defined by the collection attribute.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>styleClass</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The css class style sheet.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>border</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The table border attribute.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>cellpadding</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The table cellpadding attribute.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>cellspacing</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The table cellspacing attribute.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>rowsDisplayed</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[The number of rows to show in the table. If rowsDisplayed=0 then will show all the rows.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>filterable</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Specify whether or not the table is filterable. Acceptable values are true or false.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>showPagination</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Specify whether or not the table should use pagination. Acceptable values are true or false.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>showExports</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Specify whether or not the table should use the exports. Acceptable values are true or false.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>showStatusBar</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Specify whether or not the table should use the status bar. Acceptable values are true or false.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>imagePath</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[A convenience method look in one place for the images, but use the default image names. The syntax will look like imagePath=/extremesite/images/*.png, where .png is saying that will use all .png images.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>sortable</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Specify whether or not the table is sortable. Acceptable values are true or false.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>title</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The title of the table. The title will display above the table.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>style</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The css inline style sheet.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>width</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[Width of the table.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>saveFilterSort</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[Save the table state as filtered and/or sorted.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>autoIncludeParameters</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[Specify whether or not to automatically included the parameters.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>totalTitle</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[The title of the total row. The title will display between the body and the total row. This value will default to Totals if not specified.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>filterRowsCallback</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Filter the List of Beans or List of Maps. Could also be a fully qualified class name to a custom implemenation.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>retrieveRowsCallback</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Return the List of Beans or List of Maps. Could also be a fully qualified class name to a custom implemenation.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>sortRowsCallback</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Sort the List of Beans or List of Maps. Could also be a fully qualified class name to a custom implemenation.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>view</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Generates the output. The default is the HtmlView to generate the HTML. Also used by the exports to generate XLS-FO, POI, and CSV.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>locale</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[Get the locale for this table.]]></description>
+
+    </attribute>
+  </tag>
+  <tag>
+
+    <name>exportPdf</name>
+    <tag-class>org.extremecomponents.table.tag.ExportPdfTag</tag-class>
+    <body-content>JSP</body-content>
+    <display-name>ExportPdfTag</display-name>
+    <description><![CDATA[Export data for a pdf view.]]></description>
+
+    <attribute>
+      <name>headerBackgroundColor</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The background color on the header column.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>headerColor</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The font color for the header column.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>headerTitle</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The title displayed at the top of the page.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>fileName</name>
+      <required>true</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The name of the export file. Example presidents.pdf]]></description>
+
+    </attribute>
+    <attribute>
+      <name>imageName</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The image name. Example pdf]]></description>
+
+    </attribute>
+    <attribute>
+      <name>view</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[The type of the export. Types are pdf, xls, or csv. Works with the View interface.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>tooltip</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The tooltip that shows up when you mouseover the export image.]]></description>
+
+    </attribute>
+  </tag>
+  <tag>
+
+    <name>tree</name>
+    <tag-class>org.extremecomponents.table.tag.TreeTag</tag-class>
+    <body-content>JSP</body-content>
+    <display-name>TreeTag</display-name>
+    <description><![CDATA[Defines everything related to tree.]]></description>
+
+    <attribute>
+      <name>parentAttribute</name>
+      <required>true</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The field of the bean holding the relationship to the parent.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>identifier</name>
+      <required>true</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The attribute of the bean used to identify this column.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>id</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The table id attribute.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>collection</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[Identify the List of Beans or the List of Maps for the table.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>action</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[The action is the URI that will be called when the filter, sort and pagination is used.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>tableId</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The unique identifier for the table.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>items</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The collection that will be retrieved.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>var</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The name of the variable to hold the current bean.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>scope</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[The scope (page, request, session, application) to find the List of beans or List of Maps defined by the collection attribute.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>styleClass</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The css class style sheet.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>border</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The table border attribute.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>cellpadding</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The table cellpadding attribute.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>cellspacing</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The table cellspacing attribute.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>rowsDisplayed</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[The number of rows to show in the table. If rowsDisplayed=0 then will show all the rows.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>filterable</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Specify whether or not the table is filterable. Acceptable values are true or false.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>showPagination</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Specify whether or not the table should use pagination. Acceptable values are true or false.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>showExports</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Specify whether or not the table should use the exports. Acceptable values are true or false.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>showStatusBar</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Specify whether or not the table should use the status bar. Acceptable values are true or false.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>imagePath</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[A convenience method look in one place for the images, but use the default image names. The syntax will look like imagePath=/extremesite/images/*.png, where .png is saying that will use all .png images.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>sortable</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Specify whether or not the table is sortable. Acceptable values are true or false.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>title</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The title of the table. The title will display above the table.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>style</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The css inline style sheet.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>width</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[Width of the table.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>saveFilterSort</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[Save the table state as filtered and/or sorted.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>autoIncludeParameters</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[Specify whether or not to automatically included the parameters.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>totalTitle</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[The title of the total row. The title will display between the body and the total row. This value will default to Totals if not specified.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>filterRowsCallback</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Filter the List of Beans or List of Maps. Could also be a fully qualified class name to a custom implemenation.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>retrieveRowsCallback</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Return the List of Beans or List of Maps. Could also be a fully qualified class name to a custom implemenation.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>sortRowsCallback</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Sort the List of Beans or List of Maps. Could also be a fully qualified class name to a custom implemenation.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>view</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[Generates the output. The default is the HtmlView to generate the HTML. Also used by the exports to generate XLS-FO, POI, and CSV.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>locale</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[Get the locale for this table.]]></description>
+
+    </attribute>
+  </tag>
+  <tag>
+
+    <name>form</name>
+    <tag-class>org.extremecomponents.table.tag.FormTag</tag-class>
+    <body-content>JSP</body-content>
+    <display-name>FormTag</display-name>
+    <description><![CDATA[A form can be placed in the body of the table.]]></description>
+
+    <attribute>
+      <name>name</name>
+      <required>true</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[Define a form name.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>action</name>
+      <required>true</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[Define a form action.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>method</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[Define a form method.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>onsubmit</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[Define a form onsubmit.]]></description>
+
+    </attribute>
+  </tag>
+  <tag>
+
+    <name>columns</name>
+    <tag-class>org.extremecomponents.table.tag.ColumnsTag</tag-class>
+    <body-content>JSP</body-content>
+    <display-name>ColumnsTag</display-name>
+    <description><![CDATA[Auto generate the columns.]]></description>
+
+    <attribute>
+      <name>autoGenerateColumns</name>
+      <required>true</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The fully qualified class name to add the columns.]]></description>
+
+    </attribute>
+  </tag>
+  <tag>
+
+    <name>export</name>
+    <tag-class>org.extremecomponents.table.tag.ExportTag</tag-class>
+    <body-content>JSP</body-content>
+    <display-name>ExportTag</display-name>
+    <description><![CDATA[Export data to a given view. For example pdf or xls.]]></description>
+
+    <attribute>
+      <name>fileName</name>
+      <required>true</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The name of the export file. Example presidents.pdf]]></description>
+
+    </attribute>
+    <attribute>
+      <name>imageName</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The image name. Example pdf]]></description>
+
+    </attribute>
+    <attribute>
+      <name>view</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description>
+        <![CDATA[The type of the export. Types are pdf, xls, or csv. Works with the View interface.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>tooltip</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The tooltip that shows up when you mouseover the export image.]]></description>
+
+    </attribute>
+  </tag>
+  <tag>
+
+    <name>parameter</name>
+    <tag-class>org.extremecomponents.table.tag.ParameterTag</tag-class>
+    <body-content>JSP</body-content>
+    <display-name>ParameterTag</display-name>
+    <description>
+      <![CDATA[Append any attributes to the Sorting, Filtering, Pagination, and Form Submission. On the URL's will resolve to &name=value. On the <form>attribute will be added as hidden fields <input type=hidden name= value=>]]></description>
+
+    <attribute>
+      <name>name</name>
+      <required>true</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The name of the parameter.]]></description>
+
+    </attribute>
+    <attribute>
+      <name>value</name>
+      <required>true</required>
+      <rtexprvalue>true</rtexprvalue>
+
+      <description><![CDATA[The value of the parameter.]]></description>
+
+    </attribute>
+  </tag>
+
+</taglib>

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/WEB-INF/extremecomponents.tld
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/WEB-INF/extremecomponents.tld
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/WEB-INF/web.xml?rev=429446&view=auto
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/WEB-INF/web.xml (added)
+++ maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/WEB-INF/web.xml Mon Aug  7 12:32:38 2006
@@ -0,0 +1,49 @@
+<?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/dtd/web-app_2_3.dtd">
+
+<web-app>
+
+  <display-name>Maven User Management</display-name>
+
+  <context-param>
+    <param-name>extremecomponentsPreferencesLocation</param-name>
+    <param-value>/extremecomponents.properties</param-value>
+  </context-param>
+
+  <context-param>
+    <param-name>extremecomponentsMessagesLocation</param-name>
+    <param-value>localization/MavenUser</param-value>
+  </context-param>
+
+  <filter>
+    <filter-name>webwork-cleanup</filter-name>
+    <filter-class>com.opensymphony.webwork.dispatcher.ActionContextCleanUp</filter-class>
+  </filter>
+
+  <filter>
+    <filter-name>webwork</filter-name>
+    <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>
+  </filter>
+
+  <filter-mapping>
+    <filter-name>webwork-cleanup</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+
+  <filter-mapping>
+    <filter-name>webwork</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+
+  <welcome-file-list>
+    <welcome-file>index.action</welcome-file>
+  </welcome-file-list>
+
+  <taglib>
+    <taglib-uri>/tld/extremecomponents</taglib-uri>
+    <taglib-location>/WEB-INF/extremecomponents.tld</taglib-location>
+  </taglib>
+</web-app>

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/WEB-INF/web.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/WEB-INF/web.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/addUserRole.jsp
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/addUserRole.jsp?rev=429446&view=auto
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/addUserRole.jsp (added)
+++ maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/addUserRole.jsp Mon Aug  7 12:32:38 2006
@@ -0,0 +1,34 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="/webwork" prefix="ww" %>
+<%@ taglib uri="/tld/extremecomponents" prefix="ec" %>
+<html>
+  <ww:i18n name="localization.Continuum">
+    <head>
+      <title><ww:text name="role.page.title"/></title>
+    </head>
+    <body>
+      <div id="h3">
+        <h3><ww:text name="role.section.title"/></h3>
+        <ww:set name="permissions" value="permissions" scope="session"/>
+        <ww:set name="availablePermissions" value="availablePermissions" scope="request"/>
+        <ec:table items="availablePermissions"
+                  var="availablePermission"
+                  showExports="false"
+                  showPagination="false"
+                  showStatusBar="false"
+                  filterable="false"
+                  sortable="false">
+          <ec:row>
+            <ec:column property="name" title="role.rolename"/>
+            <ec:column property="actions" title="&nbsp;">
+              <c:url var="editUserUrl" value="/editUser!doAddPermission.action">
+                <c:param name="permissionName" value="${availablePermission.name}"/>
+              </c:url>
+              <input type="button" onclick="window.location.href='<c:out value='${editUserUrl}'/>'" value=<ww:text name="add"/>>
+            </ec:column>
+          </ec:row>
+        </ec:table>
+      </div>
+    </body>
+  </ww:i18n>
+</html>

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/addUserRole.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/addUserRole.jsp
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/deleteUser.jsp
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/deleteUser.jsp?rev=429446&view=auto
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/deleteUser.jsp (added)
+++ maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/deleteUser.jsp Mon Aug  7 12:32:38 2006
@@ -0,0 +1,28 @@
+<%@ taglib uri="/webwork" prefix="ww" %>
+<html>
+  <ww:i18n name="localization.Continuum">
+    <head>
+      <title><ww:text name="deleteUser.page.title"/></title>
+    </head>
+    <body>
+      <div id="axial" class="h3">
+        <h3><ww:text name="deleteUser.section.title"/></h3>
+        <div class="warningmessage">
+          <p>
+            <strong>
+              <ww:text name="deleteUser.confirmation.message">
+                <ww:param><ww:property value="username"/></ww:param>
+              </ww:text>
+            </strong>
+          </p>
+        </div>
+        <div class="functnbar3">
+          <ww:form action="deleteUser.action" method="post">
+            <ww:hidden name="accountId"/>
+            <ww:submit value="%{getText('delete')}"/> <!-- todo: change to submit/cancel button -->
+          </ww:form>
+        </div>
+      </div>
+    </body>
+  </ww:i18n>
+</html>

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/deleteUser.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/deleteUser.jsp
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/editUser.jsp
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/editUser.jsp?rev=429446&view=auto
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/editUser.jsp (added)
+++ maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/editUser.jsp Mon Aug  7 12:32:38 2006
@@ -0,0 +1,97 @@
+<%@ taglib uri="/webwork" prefix="ww" %>
+<%@ taglib uri="/tld/extremecomponents" prefix="ec" %>
+<script>
+  function getData() {
+    var addMode_field = document.getElementById('addMode_field');
+    var accountId_field = document.getElementById('accountId_field');
+    var username_field = document.getElementById('username_field');
+    var password_field = document.getElementById('password_field');
+    var email_field = document.getElementById('email_field');
+
+    var addMode = document.getElementById('addMode');
+    var accountId = document.getElementById('accountId');
+    var username = document.getElementById('username');
+    var password = document.getElementById('password');
+    var email = document.getElementById('email');
+
+    addMode.value = addMode_field.value;
+    accountId.value = accountId_field.value;
+    username.value = username_field.value;
+    password.value = password_field.value;
+    email.value = email_field.value;
+  }
+</script>
+<html>
+  <ww:i18n name="localization.Continuum">
+    <head>
+      <ww:if test="addMode == true">
+        <title><ww:text name="addUser.page.title"/></title>
+      </ww:if>
+      <ww:else>
+        <title><ww:text name="editUser.page.title"/></title>
+      </ww:else>
+    </head>
+    <body>
+      <div id="axial" class="h3">
+        <ww:if test="addMode == true">
+          <h3><ww:text name="addUser.section.title"/></h3>
+        </ww:if>
+        <ww:else>
+          <h3><ww:text name="editUser.section.title"/></h3>
+        </ww:else>
+        <div class="axial">
+          <ww:form action="editUser.action" method="post">
+            <table>
+              <tbody>
+                <ww:hidden id="addMode_field" name="addMode"/>
+                <ww:hidden id="accountId_field" name="accountId"/>
+                <ww:textfield id="username_field" label="%{getText('user.username')}" name="username" required="true"/>
+                <ww:password id="password_field" label="%{getText('user.password')}" name="password" required="true"/>
+                <ww:textfield id="email_field" label="%{getText('user.email')}" name="email" required="true"/>
+              </tbody>
+            </table>
+            <div class="functnbar3">
+              <ww:submit value="%{getText('save')}"/> <!-- todo: change to submit/cancel button -->
+            </div>
+          </ww:form>
+          <div id="h3">
+            <h3><ww:text name="role.section.title"/></h3>
+            <ww:set name="permissions" value="permissions" scope="session"/>
+              <table>
+                <tr>
+                  <td><ww:text name="role.rolename"/></td>
+                  <td>&nbsp;</td>
+                </tr>
+                <ww:iterator value="permissions">
+                <tr>
+                  <td><ww:property value="name"/></td>
+                  <td>
+                    <ww:form action="editUser!doDeletePermission.action" method="post">
+                      <ww:hidden id="addMode" name="addMode"/>
+                      <ww:hidden id="accountId" name="accountId"/>
+                      <ww:hidden id="username" name="username"/>
+                      <ww:hidden id="password" name="password"/>
+                      <ww:hidden id="email" name="email"/>
+                      <input type="hidden" name="permissionName" value="<ww:property value="name"/>">
+                      <ww:submit onclick="getData()" value="%{getText('delete')}"/>
+                    </ww:form>
+                  </td>
+                </tr>
+                </ww:iterator>
+              </table>
+            </div>
+          <div id="h3">
+            <ww:form action="editUser!doGetAvailablePermissions.action" method="post">
+              <ww:hidden id="addMode" name="addMode"/>
+              <ww:hidden id="accountId" name="accountId"/>
+              <ww:hidden id="username" name="username"/>
+              <ww:hidden id="password" name="password"/>
+              <ww:hidden id="email" name="email"/>
+              <ww:submit onclick="getData()" value="%{getText('add')}"/>
+            </ww:form>
+          </div>
+        </div>
+      </div>
+    </body>
+  </ww:i18n>
+</html>

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/editUser.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/editUser.jsp
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/error.jsp
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/error.jsp?rev=429446&view=auto
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/error.jsp (added)
+++ maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/error.jsp Mon Aug  7 12:32:38 2006
@@ -0,0 +1,16 @@
+<%@ taglib uri="/webwork" prefix="ww" %>
+<html>
+  <ww:i18n name="localization.Continuum">
+    <head>
+        <title>ERROR</title>
+    </head>
+    <body>
+      <div id="axial" class="h3">
+        <h3>ERROR</h3>
+        <p>
+            TODO
+        </p>
+      </div>
+    </body>
+  </ww:i18n>
+</html>

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/error.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/error.jsp
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/users.jsp
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/users.jsp?rev=429446&view=auto
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/users.jsp (added)
+++ maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/users.jsp Mon Aug  7 12:32:38 2006
@@ -0,0 +1,47 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="/webwork" prefix="ww" %>
+<%@ taglib uri="/tld/extremecomponents" prefix="ec" %>
+<html>
+  <ww:i18n name="localization.Continuum">
+    <head>
+      <title><ww:text name="users.page.title"/></title>
+    </head>
+    <body>
+      <div id="h3">
+        <h3><ww:text name="users.section.title"/></h3>
+        <ww:set name="users" value="users" scope="request"/>
+        <ec:table items="users"
+                  var="user"
+                  showExports="false"
+                  showPagination="false"
+                  showStatusBar="false"
+                  filterable="false">
+          <ec:row>
+            <ec:column property="username" title="user.username"/>
+            <ec:column property="email" title="user.email"/>
+            <ec:column property="actions" title="&nbsp;">
+
+              <c:url var="editUserUrl" value="/editUser!doEdit.action">
+                <c:param name="accountId" value="${user.accountId}"/>
+              </c:url>
+
+              <a href="<c:out value='${editUserUrl}'/>"><ww:text name="edit"/></a>
+
+              <c:url var="deleteUserUrl" value="/deleteUser!doDelete.action">
+                <c:param name="accountId" value="${user.accountId}"/>
+                <c:param name="username" value="${user.username}"/>
+              </c:url>
+
+              <a href="<c:out value='${deleteUserUrl}'/>"><ww:text name="delete"/></a>
+            </ec:column>
+          </ec:row>
+        </ec:table>
+      </div>
+      <div class="functnbar3">
+        <ww:form action="editUser!doAdd.action" method="post">
+          <ww:submit value="%{getText('add')}"/>
+        </ww:form>
+    </div>
+    </body>
+  </ww:i18n>
+</html>

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/users.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/users.jsp
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/shared/trunk/maven-user/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/pom.xml?rev=429446&r1=429445&r2=429446&view=diff
==============================================================================
--- maven/shared/trunk/maven-user/pom.xml (original)
+++ maven/shared/trunk/maven-user/pom.xml Mon Aug  7 12:32:38 2006
@@ -25,6 +25,29 @@
     <module>maven-user-acegi</module>
   </modules>
 
-  <dependencies>
-  </dependencies>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.codehaus.plexus</groupId>
+        <artifactId>plexus-jdo2</artifactId>
+        <version>1.0-alpha-4</version>
+        <exclusions>
+          <exclusion>
+            <groupId>xerces</groupId>
+            <artifactId>xercesImpl</artifactId>
+          </exclusion>
+          <exclusion>
+            <groupId>xerces</groupId>
+            <artifactId>xmlParserAPIs</artifactId>
+          </exclusion>
+        </exclusions>
+      </dependency>
+      <dependency>
+        <groupId>org.codehaus.plexus</groupId>
+        <artifactId>plexus-utils</artifactId>
+        <version>1.2</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
 </project>